From d73732f7d52ed9e29afe969886eaa4dfd86805f8 Mon Sep 17 00:00:00 2001 From: spennythug <spencermccoy@unl.edu> Date: Wed, 3 Feb 2016 10:49:13 -0600 Subject: [PATCH] Removed redundant bower components. Fixed all fuel ux errors by killing fuel ux everywhere. removal of unneeded css files. removed profile page widgets. --- .../bower_components/bootstrap/.bower.json | 44 - .../bower_components/bootstrap/Gruntfile.js | 531 - elgg_clean/bower_components/bootstrap/LICENSE | 21 - .../bower_components/bootstrap/README.md | 137 - .../bower_components/bootstrap/bower.json | 34 - .../bootstrap/dist/css/bootstrap-theme.css | 587 - .../dist/css/bootstrap-theme.css.map | 1 - .../dist/css/bootstrap-theme.min.css | 5 - .../bootstrap/dist/css/bootstrap.css | 6800 --- .../bootstrap/dist/css/bootstrap.css.map | 1 - .../bootstrap/dist/css/bootstrap.min.css | 5 - .../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 288 - .../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes .../bootstrap/dist/js/bootstrap.js | 2363 - .../bootstrap/dist/js/bootstrap.min.js | 7 - .../bower_components/bootstrap/dist/js/npm.js | 13 - .../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 288 - .../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes .../bootstrap/grunt/.jshintrc | 7 - .../bootstrap/grunt/bs-commonjs-generator.js | 30 - .../grunt/bs-glyphicons-data-generator.js | 42 - .../bootstrap/grunt/bs-lessdoc-parser.js | 237 - .../bootstrap/grunt/bs-raw-files-generator.js | 44 - .../bootstrap/grunt/configBridge.json | 46 - .../bootstrap/grunt/sauce_browsers.yml | 82 - .../bower_components/bootstrap/js/.jscsrc | 42 - .../bower_components/bootstrap/js/.jshintrc | 15 - .../bower_components/bootstrap/js/affix.js | 162 - .../bower_components/bootstrap/js/alert.js | 94 - .../bower_components/bootstrap/js/button.js | 120 - .../bower_components/bootstrap/js/carousel.js | 237 - .../bower_components/bootstrap/js/collapse.js | 211 - .../bower_components/bootstrap/js/dropdown.js | 165 - .../bower_components/bootstrap/js/modal.js | 337 - .../bower_components/bootstrap/js/popover.js | 108 - .../bootstrap/js/scrollspy.js | 172 - .../bower_components/bootstrap/js/tab.js | 155 - .../bower_components/bootstrap/js/tooltip.js | 514 - .../bootstrap/js/transition.js | 59 - .../bootstrap/less/.csscomb.json | 304 - .../bootstrap/less/.csslintrc | 19 - .../bootstrap/less/alerts.less | 73 - .../bootstrap/less/badges.less | 66 - .../bootstrap/less/bootstrap.less | 56 - .../bootstrap/less/breadcrumbs.less | 26 - .../bootstrap/less/button-groups.less | 244 - .../bootstrap/less/buttons.less | 166 - .../bootstrap/less/carousel.less | 269 - .../bootstrap/less/close.less | 34 - .../bower_components/bootstrap/less/code.less | 69 - .../bootstrap/less/component-animations.less | 33 - .../bootstrap/less/dropdowns.less | 216 - .../bootstrap/less/forms.less | 607 - .../bootstrap/less/glyphicons.less | 305 - .../bower_components/bootstrap/less/grid.less | 84 - .../bootstrap/less/input-groups.less | 167 - .../bootstrap/less/jumbotron.less | 52 - .../bootstrap/less/labels.less | 64 - .../bootstrap/less/list-group.less | 130 - .../bootstrap/less/media.less | 66 - .../bootstrap/less/mixins.less | 40 - .../bootstrap/less/mixins/alerts.less | 14 - .../less/mixins/background-variant.less | 9 - .../bootstrap/less/mixins/border-radius.less | 18 - .../bootstrap/less/mixins/buttons.less | 68 - .../bootstrap/less/mixins/center-block.less | 7 - .../bootstrap/less/mixins/clearfix.less | 22 - .../bootstrap/less/mixins/forms.less | 85 - .../bootstrap/less/mixins/gradients.less | 59 - .../bootstrap/less/mixins/grid-framework.less | 91 - .../bootstrap/less/mixins/grid.less | 122 - .../bootstrap/less/mixins/hide-text.less | 21 - .../bootstrap/less/mixins/image.less | 33 - .../bootstrap/less/mixins/labels.less | 12 - .../bootstrap/less/mixins/list-group.less | 30 - .../bootstrap/less/mixins/nav-divider.less | 10 - .../less/mixins/nav-vertical-align.less | 9 - .../bootstrap/less/mixins/opacity.less | 8 - .../bootstrap/less/mixins/pagination.less | 24 - .../bootstrap/less/mixins/panels.less | 24 - .../bootstrap/less/mixins/progress-bar.less | 10 - .../bootstrap/less/mixins/reset-filter.less | 8 - .../bootstrap/less/mixins/reset-text.less | 18 - .../bootstrap/less/mixins/resize.less | 6 - .../less/mixins/responsive-visibility.less | 15 - .../bootstrap/less/mixins/size.less | 10 - .../bootstrap/less/mixins/tab-focus.less | 9 - .../bootstrap/less/mixins/table-row.less | 28 - .../bootstrap/less/mixins/text-emphasis.less | 9 - .../bootstrap/less/mixins/text-overflow.less | 8 - .../less/mixins/vendor-prefixes.less | 227 - .../bootstrap/less/modals.less | 150 - .../bootstrap/less/navbar.less | 660 - .../bower_components/bootstrap/less/navs.less | 242 - .../bootstrap/less/normalize.less | 424 - .../bootstrap/less/pager.less | 54 - .../bootstrap/less/pagination.less | 89 - .../bootstrap/less/panels.less | 271 - .../bootstrap/less/popovers.less | 131 - .../bootstrap/less/print.less | 101 - .../bootstrap/less/progress-bars.less | 87 - .../bootstrap/less/responsive-embed.less | 35 - .../bootstrap/less/responsive-utilities.less | 194 - .../bootstrap/less/scaffolding.less | 161 - .../bootstrap/less/tables.less | 234 - .../bootstrap/less/theme.less | 291 - .../bootstrap/less/thumbnails.less | 36 - .../bootstrap/less/tooltip.less | 101 - .../bower_components/bootstrap/less/type.less | 302 - .../bootstrap/less/utilities.less | 55 - .../bootstrap/less/variables.less | 867 - .../bootstrap/less/wells.less | 29 - .../bower_components/bootstrap/package.js | 25 - .../bower_components/bootstrap/package.json | 87 - .../bower_components/font-awesome/.bower.json | 37 - .../bower_components/font-awesome/.npmignore | 42 - .../font-awesome/HELP-US-OUT.txt | 7 - .../bower_components/font-awesome/bower.json | 22 - .../font-awesome/css/font-awesome.css | 2026 - .../font-awesome/css/font-awesome.css.map | 7 - .../font-awesome/css/font-awesome.min.css | 4 - .../font-awesome/fonts/FontAwesome.otf | Bin 106260 -> 0 bytes .../fonts/fontawesome-webfont.eot | Bin 68875 -> 0 bytes .../fonts/fontawesome-webfont.svg | 640 - .../fonts/fontawesome-webfont.ttf | Bin 138204 -> 0 bytes .../fonts/fontawesome-webfont.woff | Bin 81284 -> 0 bytes .../fonts/fontawesome-webfont.woff2 | Bin 64464 -> 0 bytes .../font-awesome/less/animated.less | 34 - .../font-awesome/less/bordered-pulled.less | 25 - .../font-awesome/less/core.less | 12 - .../font-awesome/less/fixed-width.less | 6 - .../font-awesome/less/font-awesome.less | 17 - .../font-awesome/less/icons.less | 677 - .../font-awesome/less/larger.less | 13 - .../font-awesome/less/list.less | 19 - .../font-awesome/less/mixins.less | 26 - .../font-awesome/less/path.less | 15 - .../font-awesome/less/rotated-flipped.less | 20 - .../font-awesome/less/stacked.less | 20 - .../font-awesome/less/variables.less | 688 - .../font-awesome/scss/_animated.scss | 34 - .../font-awesome/scss/_bordered-pulled.scss | 25 - .../font-awesome/scss/_core.scss | 12 - .../font-awesome/scss/_fixed-width.scss | 6 - .../font-awesome/scss/_icons.scss | 677 - .../font-awesome/scss/_larger.scss | 13 - .../font-awesome/scss/_list.scss | 19 - .../font-awesome/scss/_mixins.scss | 26 - .../font-awesome/scss/_path.scss | 15 - .../font-awesome/scss/_rotated-flipped.scss | 20 - .../font-awesome/scss/_stacked.scss | 20 - .../font-awesome/scss/_variables.scss | 688 - .../font-awesome/scss/font-awesome.scss | 17 - .../bower_components/fuelux/.bower.json | 70 - elgg_clean/bower_components/fuelux/CNAME | 1 - elgg_clean/bower_components/fuelux/DETAILS.md | 189 - elgg_clean/bower_components/fuelux/LICENSE | 24 - elgg_clean/bower_components/fuelux/README.md | 146 - elgg_clean/bower_components/fuelux/bower.json | 59 - .../fuelux/dist/css/fuelux.css | 3031 -- .../fuelux/dist/css/fuelux.css.map | 1 - .../fuelux/dist/css/fuelux.min.css | 7 - .../fuelux/dist/fonts/fuelux.eot | Bin 2048 -> 0 bytes .../fuelux/dist/fonts/fuelux.svg | 20 - .../fuelux/dist/fonts/fuelux.ttf | Bin 1888 -> 0 bytes .../fuelux/dist/fonts/fuelux.woff | Bin 1300 -> 0 bytes .../bower_components/fuelux/dist/js/fuelux.js | 7837 --- .../fuelux/dist/js/fuelux.min.js | 9 - .../bower_components/fuelux/dist/js/npm.js | 23 - .../bower_components/fuelux/fonts/fuelux.eot | Bin 2048 -> 0 bytes .../bower_components/fuelux/fonts/fuelux.svg | 20 - .../bower_components/fuelux/fonts/fuelux.ttf | Bin 1888 -> 0 bytes .../bower_components/fuelux/fonts/fuelux.woff | Bin 1300 -> 0 bytes .../fuelux/fonts/src/bullet.svg | 7 - .../fuelux/fonts/src/loader_1.svg | 28 - .../fuelux/fonts/src/loader_2.svg | 28 - .../fuelux/fonts/src/loader_3.svg | 28 - .../fuelux/fonts/src/loader_4.svg | 28 - .../fuelux/fonts/src/loader_5.svg | 28 - .../fuelux/fonts/src/loader_6.svg | 28 - .../fuelux/fonts/src/loader_7.svg | 28 - .../fuelux/fonts/src/loader_8.svg | 28 - .../fuelux/fonts/src/loader_full.svg | 24 - .../fuelux/grunt/config/blanket_qunit.js | 13 - .../fuelux/grunt/config/browserify.js | 7 - .../fuelux/grunt/config/bump.js | 12 - .../fuelux/grunt/config/clean.js | 5 - .../fuelux/grunt/config/compress.js | 13 - .../fuelux/grunt/config/concat.js | 39 - .../fuelux/grunt/config/connect.js | 32 - .../fuelux/grunt/config/copy.js | 15 - .../fuelux/grunt/config/htmllint.js | 11 - .../fuelux/grunt/config/jsbeautifier.js | 23 - .../fuelux/grunt/config/jshint.js | 33 - .../fuelux/grunt/config/less.js | 47 - .../fuelux/grunt/config/prompt.js | 302 - .../fuelux/grunt/config/qunit.js | 40 - .../fuelux/grunt/config/replace.js | 26 - .../fuelux/grunt/config/saucelabs-qunit.js | 48 - .../fuelux/grunt/config/shell.js | 106 - .../fuelux/grunt/config/uglify.js | 16 - .../fuelux/grunt/config/usebanner.js | 13 - .../fuelux/grunt/config/watch.js | 84 - .../grunt/other/commonjs-reference-module.js | 35 - .../fuelux/grunt/tasks/build.js | 34 - .../fuelux/grunt/tasks/release.js | 78 - .../fuelux/grunt/tasks/serve.js | 72 - .../fuelux/grunt/tasks/test.js | 41 - elgg_clean/bower_components/fuelux/js/all.js | 46 - .../bower_components/fuelux/js/checkbox.js | 222 - .../bower_components/fuelux/js/combobox.js | 266 - .../bower_components/fuelux/js/datepicker.js | 802 - .../fuelux/js/dropdown-autoflip.js | 130 - .../fuelux/js/infinite-scroll.js | 188 - .../bower_components/fuelux/js/loader.js | 172 - .../bower_components/fuelux/js/picker.js | 293 - .../bower_components/fuelux/js/pillbox.js | 783 - .../bower_components/fuelux/js/placard.js | 344 - .../bower_components/fuelux/js/radio.js | 222 - .../fuelux/js/repeater-list.js | 913 - .../fuelux/js/repeater-thumbnail.js | 237 - .../bower_components/fuelux/js/repeater.js | 807 - .../bower_components/fuelux/js/scheduler.js | 700 - .../bower_components/fuelux/js/search.js | 208 - .../bower_components/fuelux/js/selectlist.js | 290 - .../bower_components/fuelux/js/spinbox.js | 471 - elgg_clean/bower_components/fuelux/js/tree.js | 559 - .../bower_components/fuelux/js/wizard.js | 459 - .../fuelux/less/checkbox-no-js.less | 49 - .../fuelux/less/checkbox.less | 135 - .../fuelux/less/combobox.less | 16 - .../fuelux/less/datepicker.less | 390 - .../bower_components/fuelux/less/forms.less | 204 - .../bower_components/fuelux/less/fuelux.less | 34 - .../bower_components/fuelux/less/icons.less | 67 - .../fuelux/less/infinite-scroll.less | 31 - .../fuelux/less/intelligent-dropdown.less | 9 - .../bower_components/fuelux/less/loader.less | 63 - .../bower_components/fuelux/less/mixins.less | 121 - .../bower_components/fuelux/less/picker.less | 166 - .../bower_components/fuelux/less/pillbox.less | 167 - .../bower_components/fuelux/less/placard.less | 153 - .../fuelux/less/preloader.less | 290 - .../fuelux/less/radio-no-js.less | 59 - .../bower_components/fuelux/less/radio.less | 152 - .../fuelux/less/repeater-list.less | 434 - .../fuelux/less/repeater-thumbnail.less | 81 - .../fuelux/less/repeater.less | 126 - .../fuelux/less/scheduler.less | 254 - .../bower_components/fuelux/less/search.less | 16 - .../fuelux/less/selectlist.less | 53 - .../bower_components/fuelux/less/spinbox.less | 82 - .../bower_components/fuelux/less/tree.less | 177 - .../bower_components/fuelux/less/utility.less | 210 - .../fuelux/less/variables.less | 392 - .../bower_components/fuelux/less/wizard.less | 295 - .../fuelux/markup/checkbox-inline-no-js.html | 18 - .../fuelux/markup/checkbox-inline.html | 9 - .../markup/checkbox-no-js-variations.txt | 14 - .../fuelux/markup/checkbox-no-js.html | 18 - .../fuelux/markup/checkbox-variations.txt | 13 - .../fuelux/markup/checkbox.html | 12 - .../fuelux/markup/combobox-variations.txt | 2 - .../fuelux/markup/combobox.html | 19 - .../fuelux/markup/datepicker.html | 85 - .../fuelux/markup/infinite-scroll.html | 7 - .../fuelux/markup/loader-variations.txt | 13 - .../fuelux/markup/loader.html | 7 - .../fuelux/markup/pillbox-variations.txt | 2 - .../fuelux/markup/pillbox-with-pills.html | 51 - .../fuelux/markup/pillbox.html | 19 - .../fuelux/markup/placard-header-footer.html | 15 - .../fuelux/markup/placard-variations.txt | 6 - .../fuelux/markup/placard.html | 10 - .../fuelux/markup/radio-inline-no-js.html | 18 - .../fuelux/markup/radio-inline.html | 9 - .../fuelux/markup/radio-no-js-variations.txt | 14 - .../fuelux/markup/radio-no-js.html | 17 - .../fuelux/markup/radio-variations.txt | 13 - .../bower_components/fuelux/markup/radio.html | 12 - .../fuelux/markup/repeater-variations.txt | 3 - .../fuelux/markup/repeater.html | 100 - .../fuelux/markup/scheduler.html | 697 - .../fuelux/markup/search.html | 15 - .../fuelux/markup/selectlist-variations.txt | 5 - .../fuelux/markup/selectlist.html | 21 - .../fuelux/markup/spinbox-variations.txt | 3 - .../fuelux/markup/spinbox.html | 17 - .../markup/tree-folders-selectable.html | 25 - .../bower_components/fuelux/markup/tree.html | 25 - .../fuelux/markup/wizard-variations.txt | 2 - .../fuelux/markup/wizard.html | 53 - elgg_clean/bower_components/fuelux/package.js | 26 - .../bower_components/fuelux/package.json | 95 - .../bower_components/fuelux/postinstall.js | 4 - .../bower_components/jquery/.bower.json | 38 - .../bower_components/jquery/MIT-LICENSE.txt | 21 - elgg_clean/bower_components/jquery/bower.json | 28 - .../bower_components/jquery/dist/jquery.js | 9210 ---- .../jquery/dist/jquery.min.js | 5 - .../jquery/dist/jquery.min.map | 1 - .../bower_components/jquery/src/ajax.js | 786 - .../bower_components/jquery/src/ajax/jsonp.js | 89 - .../bower_components/jquery/src/ajax/load.js | 75 - .../jquery/src/ajax/parseJSON.js | 13 - .../jquery/src/ajax/parseXML.js | 28 - .../jquery/src/ajax/script.js | 64 - .../jquery/src/ajax/var/nonce.js | 5 - .../jquery/src/ajax/var/rquery.js | 3 - .../bower_components/jquery/src/ajax/xhr.js | 136 - .../bower_components/jquery/src/attributes.js | 11 - .../jquery/src/attributes/attr.js | 141 - .../jquery/src/attributes/classes.js | 158 - .../jquery/src/attributes/prop.js | 94 - .../jquery/src/attributes/support.js | 35 - .../jquery/src/attributes/val.js | 161 - .../bower_components/jquery/src/callbacks.js | 205 - .../bower_components/jquery/src/core.js | 502 - .../jquery/src/core/access.js | 60 - .../bower_components/jquery/src/core/init.js | 123 - .../jquery/src/core/parseHTML.js | 39 - .../bower_components/jquery/src/core/ready.js | 97 - .../jquery/src/core/var/rsingleTag.js | 4 - elgg_clean/bower_components/jquery/src/css.js | 450 - .../jquery/src/css/addGetHookIf.js | 22 - .../bower_components/jquery/src/css/curCSS.js | 57 - .../jquery/src/css/defaultDisplay.js | 70 - .../jquery/src/css/hiddenVisibleSelectors.js | 15 - .../jquery/src/css/support.js | 96 - .../bower_components/jquery/src/css/swap.js | 28 - .../jquery/src/css/var/cssExpand.js | 3 - .../jquery/src/css/var/getStyles.js | 12 - .../jquery/src/css/var/isHidden.js | 13 - .../jquery/src/css/var/rmargin.js | 3 - .../jquery/src/css/var/rnumnonpx.js | 5 - .../bower_components/jquery/src/data.js | 178 - .../bower_components/jquery/src/deferred.js | 149 - .../bower_components/jquery/src/deprecated.js | 13 - .../bower_components/jquery/src/dimensions.js | 50 - .../bower_components/jquery/src/effects.js | 648 - .../jquery/src/effects/Tween.js | 114 - .../jquery/src/effects/animatedSelector.js | 13 - .../bower_components/jquery/src/event.js | 868 - .../bower_components/jquery/src/event/ajax.js | 13 - .../jquery/src/event/alias.js | 39 - .../jquery/src/event/support.js | 9 - .../jquery/src/exports/amd.js | 24 - .../jquery/src/exports/global.js | 32 - .../bower_components/jquery/src/intro.js | 44 - .../bower_components/jquery/src/jquery.js | 37 - .../jquery/src/manipulation.js | 580 - .../jquery/src/manipulation/_evalUrl.js | 18 - .../jquery/src/manipulation/support.js | 32 - .../src/manipulation/var/rcheckableType.js | 3 - .../bower_components/jquery/src/offset.js | 207 - .../bower_components/jquery/src/outro.js | 1 - .../bower_components/jquery/src/queue.js | 142 - .../jquery/src/queue/delay.js | 22 - .../jquery/src/selector-native.js | 172 - .../jquery/src/selector-sizzle.js | 14 - .../bower_components/jquery/src/selector.js | 1 - .../bower_components/jquery/src/serialize.js | 111 - .../jquery/src/sizzle/dist/sizzle.js | 2067 - .../jquery/src/sizzle/dist/sizzle.min.js | 3 - .../jquery/src/sizzle/dist/sizzle.min.map | 1 - .../bower_components/jquery/src/traversing.js | 199 - .../jquery/src/traversing/findFilter.js | 100 - .../src/traversing/var/rneedsContext.js | 6 - .../bower_components/jquery/src/var/arr.js | 3 - .../jquery/src/var/class2type.js | 4 - .../bower_components/jquery/src/var/concat.js | 5 - .../bower_components/jquery/src/var/hasOwn.js | 5 - .../jquery/src/var/indexOf.js | 5 - .../bower_components/jquery/src/var/pnum.js | 3 - .../bower_components/jquery/src/var/push.js | 5 - .../jquery/src/var/rnotwhite.js | 3 - .../bower_components/jquery/src/var/slice.js | 5 - .../jquery/src/var/strundefined.js | 3 - .../jquery/src/var/support.js | 4 - .../jquery/src/var/toString.js | 5 - .../bower_components/jquery/src/wrap.js | 79 - .../bower_components/moment/.bower.json | 33 - .../bower_components/moment/CHANGELOG.md | 459 - elgg_clean/bower_components/moment/LICENSE | 22 - elgg_clean/bower_components/moment/README.md | 58 - elgg_clean/bower_components/moment/bower.json | 22 - .../bower_components/moment/locale/af.js | 72 - .../bower_components/moment/locale/ar-ma.js | 58 - .../bower_components/moment/locale/ar-sa.js | 102 - .../bower_components/moment/locale/ar-tn.js | 56 - .../bower_components/moment/locale/ar.js | 135 - .../bower_components/moment/locale/az.js | 103 - .../bower_components/moment/locale/be.js | 146 - .../bower_components/moment/locale/bg.js | 89 - .../bower_components/moment/locale/bn.js | 112 - .../bower_components/moment/locale/bo.js | 109 - .../bower_components/moment/locale/br.js | 106 - .../bower_components/moment/locale/bs.js | 140 - .../bower_components/moment/locale/ca.js | 78 - .../bower_components/moment/locale/cs.js | 156 - .../bower_components/moment/locale/cv.js | 62 - .../bower_components/moment/locale/cy.js | 78 - .../bower_components/moment/locale/da.js | 59 - .../bower_components/moment/locale/de-at.js | 75 - .../bower_components/moment/locale/de.js | 74 - .../bower_components/moment/locale/el.js | 93 - .../bower_components/moment/locale/en-au.js | 65 - .../bower_components/moment/locale/en-ca.js | 62 - .../bower_components/moment/locale/en-gb.js | 66 - .../bower_components/moment/locale/eo.js | 72 - .../bower_components/moment/locale/es.js | 78 - .../bower_components/moment/locale/et.js | 79 - .../bower_components/moment/locale/eu.js | 63 - .../bower_components/moment/locale/fa.js | 104 - .../bower_components/moment/locale/fi.js | 106 - .../bower_components/moment/locale/fo.js | 59 - .../bower_components/moment/locale/fr-ca.js | 57 - .../bower_components/moment/locale/fr.js | 61 - .../bower_components/moment/locale/fy.js | 70 - .../bower_components/moment/locale/gl.js | 74 - .../bower_components/moment/locale/he.js | 81 - .../bower_components/moment/locale/hi.js | 122 - .../bower_components/moment/locale/hr.js | 139 - .../bower_components/moment/locale/hu.js | 108 - .../bower_components/moment/locale/hy-am.js | 110 - .../bower_components/moment/locale/id.js | 82 - .../bower_components/moment/locale/is.js | 126 - .../bower_components/moment/locale/it.js | 69 - .../bower_components/moment/locale/ja.js | 64 - .../bower_components/moment/locale/jv.js | 82 - .../bower_components/moment/locale/ka.js | 102 - .../bower_components/moment/locale/km.js | 57 - .../bower_components/moment/locale/ko.js | 67 - .../bower_components/moment/locale/lb.js | 133 - .../bower_components/moment/locale/lt.js | 124 - .../bower_components/moment/locale/lv.js | 95 - .../bower_components/moment/locale/me.js | 108 - .../bower_components/moment/locale/mk.js | 89 - .../bower_components/moment/locale/ml.js | 70 - .../bower_components/moment/locale/mr.js | 120 - .../bower_components/moment/locale/ms-my.js | 81 - .../bower_components/moment/locale/ms.js | 81 - .../bower_components/moment/locale/my.js | 92 - .../bower_components/moment/locale/nb.js | 60 - .../bower_components/moment/locale/ne.js | 122 - .../bower_components/moment/locale/nl.js | 70 - .../bower_components/moment/locale/nn.js | 59 - .../bower_components/moment/locale/pl.js | 104 - .../bower_components/moment/locale/pt-br.js | 59 - .../bower_components/moment/locale/pt.js | 63 - .../bower_components/moment/locale/ro.js | 73 - .../bower_components/moment/locale/ru.js | 163 - .../bower_components/moment/locale/si.js | 64 - .../bower_components/moment/locale/sk.js | 157 - .../bower_components/moment/locale/sl.js | 159 - .../bower_components/moment/locale/sq.js | 68 - .../bower_components/moment/locale/sr-cyrl.js | 107 - .../bower_components/moment/locale/sr.js | 107 - .../bower_components/moment/locale/sv.js | 66 - .../bower_components/moment/locale/ta.js | 94 - .../bower_components/moment/locale/th.js | 64 - .../bower_components/moment/locale/tl-ph.js | 61 - .../bower_components/moment/locale/tr.js | 89 - .../bower_components/moment/locale/tzl.js | 84 - .../moment/locale/tzm-latn.js | 57 - .../bower_components/moment/locale/tzm.js | 57 - .../bower_components/moment/locale/uk.js | 152 - .../bower_components/moment/locale/uz.js | 57 - .../bower_components/moment/locale/vi.js | 65 - .../bower_components/moment/locale/zh-cn.js | 126 - .../bower_components/moment/locale/zh-tw.js | 100 - .../bower_components/moment/min/locales.js | 6787 --- .../moment/min/locales.min.js | 78 - .../moment/min/moment-with-locales.js | 9977 ---- .../moment/min/moment-with-locales.min.js | 80 - .../bower_components/moment/min/moment.min.js | 7 - .../bower_components/moment/min/tests.js | 40548 ---------------- elgg_clean/bower_components/moment/moment.js | 3195 -- .../moment/src/lib/create/check-overflow.js | 28 - .../moment/src/lib/create/date-from-array.js | 19 - .../moment/src/lib/create/from-anything.js | 96 - .../moment/src/lib/create/from-array.js | 124 - .../moment/src/lib/create/from-object.js | 13 - .../src/lib/create/from-string-and-array.js | 50 - .../src/lib/create/from-string-and-format.js | 102 - .../moment/src/lib/create/from-string.js | 83 - .../moment/src/lib/create/local.js | 5 - .../moment/src/lib/create/parsing-flags.js | 22 - .../moment/src/lib/create/utc.js | 5 - .../moment/src/lib/create/valid.js | 37 - .../moment/src/lib/duration/abs.js | 18 - .../moment/src/lib/duration/add-subtract.js | 21 - .../moment/src/lib/duration/as.js | 55 - .../moment/src/lib/duration/bubble.js | 61 - .../moment/src/lib/duration/constructor.js | 41 - .../moment/src/lib/duration/create.js | 113 - .../moment/src/lib/duration/duration.js | 12 - .../moment/src/lib/duration/get.js | 25 - .../moment/src/lib/duration/humanize.js | 64 - .../moment/src/lib/duration/iso-string.js | 52 - .../moment/src/lib/duration/prototype.js | 48 - .../moment/src/lib/format/format.js | 92 - .../moment/src/lib/locale/calendar.js | 13 - .../moment/src/lib/locale/constructor.js | 2 - .../moment/src/lib/locale/en.js | 15 - .../moment/src/lib/locale/formats.js | 23 - .../moment/src/lib/locale/invalid.js | 5 - .../moment/src/lib/locale/lists.js | 48 - .../moment/src/lib/locale/locale.js | 35 - .../moment/src/lib/locale/locales.js | 117 - .../moment/src/lib/locale/ordinal.js | 7 - .../moment/src/lib/locale/pre-post-format.js | 3 - .../moment/src/lib/locale/prototype.js | 70 - .../moment/src/lib/locale/relative.js | 27 - .../moment/src/lib/locale/set.js | 14 - .../moment/src/lib/moment/add-subtract.js | 46 - .../moment/src/lib/moment/calendar.js | 17 - .../moment/src/lib/moment/clone.js | 5 - .../moment/src/lib/moment/compare.js | 43 - .../moment/src/lib/moment/constructor.js | 73 - .../moment/src/lib/moment/diff.js | 49 - .../moment/src/lib/moment/format.js | 27 - .../moment/src/lib/moment/from.js | 13 - .../moment/src/lib/moment/get-set.js | 39 - .../moment/src/lib/moment/locale.js | 34 - .../moment/src/lib/moment/min-max.js | 54 - .../moment/src/lib/moment/moment.js | 26 - .../moment/src/lib/moment/prototype.js | 145 - .../moment/src/lib/moment/start-end-of.js | 52 - .../moment/src/lib/moment/to-type.js | 29 - .../moment/src/lib/moment/to.js | 13 - .../moment/src/lib/moment/valid.js | 15 - .../moment/src/lib/parse/regex.js | 51 - .../moment/src/lib/parse/token.js | 32 - .../moment/src/lib/units/aliases.js | 29 - .../moment/src/lib/units/constants.js | 7 - .../moment/src/lib/units/day-of-month.js | 32 - .../moment/src/lib/units/day-of-week.js | 134 - .../moment/src/lib/units/day-of-year.js | 49 - .../moment/src/lib/units/hour.js | 77 - .../moment/src/lib/units/millisecond.js | 64 - .../moment/src/lib/units/minute.js | 24 - .../moment/src/lib/units/month.js | 129 - .../moment/src/lib/units/offset.js | 213 - .../moment/src/lib/units/quarter.js | 27 - .../moment/src/lib/units/second.js | 24 - .../moment/src/lib/units/timestamp.js | 20 - .../moment/src/lib/units/timezone.js | 16 - .../moment/src/lib/units/units.js | 20 - .../moment/src/lib/units/week-year.js | 78 - .../moment/src/lib/units/week.js | 88 - .../moment/src/lib/units/year.js | 62 - .../moment/src/lib/utils/abs-ceil.js | 7 - .../moment/src/lib/utils/abs-floor.js | 7 - .../moment/src/lib/utils/compare-arrays.js | 16 - .../moment/src/lib/utils/defaults.js | 10 - .../moment/src/lib/utils/deprecate.js | 32 - .../moment/src/lib/utils/extend.js | 19 - .../moment/src/lib/utils/has-own-prop.js | 3 - .../moment/src/lib/utils/hooks.js | 13 - .../moment/src/lib/utils/is-array.js | 3 - .../moment/src/lib/utils/is-date.js | 3 - .../moment/src/lib/utils/map.js | 7 - .../moment/src/lib/utils/to-int.js | 12 - .../moment/src/lib/utils/zero-fill.js | 7 - .../bower_components/moment/src/locale/af.js | 63 - .../moment/src/locale/ar-ma.js | 50 - .../moment/src/locale/ar-sa.js | 94 - .../moment/src/locale/ar-tn.js | 48 - .../bower_components/moment/src/locale/ar.js | 127 - .../bower_components/moment/src/locale/az.js | 95 - .../bower_components/moment/src/locale/be.js | 138 - .../bower_components/moment/src/locale/bg.js | 81 - .../bower_components/moment/src/locale/bn.js | 104 - .../bower_components/moment/src/locale/bo.js | 101 - .../bower_components/moment/src/locale/br.js | 98 - .../bower_components/moment/src/locale/bs.js | 132 - .../bower_components/moment/src/locale/ca.js | 70 - .../bower_components/moment/src/locale/cs.js | 148 - .../bower_components/moment/src/locale/cv.js | 53 - .../bower_components/moment/src/locale/cy.js | 70 - .../bower_components/moment/src/locale/da.js | 51 - .../moment/src/locale/de-at.js | 67 - .../bower_components/moment/src/locale/de.js | 66 - .../bower_components/moment/src/locale/el.js | 85 - .../moment/src/locale/en-au.js | 57 - .../moment/src/locale/en-ca.js | 54 - .../moment/src/locale/en-gb.js | 58 - .../bower_components/moment/src/locale/eo.js | 64 - .../bower_components/moment/src/locale/es.js | 70 - .../bower_components/moment/src/locale/et.js | 71 - .../bower_components/moment/src/locale/eu.js | 55 - .../bower_components/moment/src/locale/fa.js | 96 - .../bower_components/moment/src/locale/fi.js | 98 - .../bower_components/moment/src/locale/fo.js | 51 - .../moment/src/locale/fr-ca.js | 49 - .../bower_components/moment/src/locale/fr.js | 53 - .../bower_components/moment/src/locale/fy.js | 62 - .../bower_components/moment/src/locale/gl.js | 66 - .../bower_components/moment/src/locale/he.js | 73 - .../bower_components/moment/src/locale/hi.js | 114 - .../bower_components/moment/src/locale/hr.js | 131 - .../bower_components/moment/src/locale/hu.js | 100 - .../moment/src/locale/hy-am.js | 102 - .../bower_components/moment/src/locale/id.js | 74 - .../bower_components/moment/src/locale/is.js | 118 - .../bower_components/moment/src/locale/it.js | 61 - .../bower_components/moment/src/locale/ja.js | 56 - .../bower_components/moment/src/locale/jv.js | 73 - .../bower_components/moment/src/locale/ka.js | 94 - .../bower_components/moment/src/locale/km.js | 49 - .../bower_components/moment/src/locale/ko.js | 59 - .../bower_components/moment/src/locale/lb.js | 125 - .../bower_components/moment/src/locale/lt.js | 116 - .../bower_components/moment/src/locale/lv.js | 87 - .../bower_components/moment/src/locale/me.js | 99 - .../bower_components/moment/src/locale/mk.js | 81 - .../bower_components/moment/src/locale/ml.js | 62 - .../bower_components/moment/src/locale/mr.js | 112 - .../moment/src/locale/ms-my.js | 73 - .../bower_components/moment/src/locale/ms.js | 73 - .../bower_components/moment/src/locale/my.js | 84 - .../bower_components/moment/src/locale/nb.js | 52 - .../bower_components/moment/src/locale/ne.js | 114 - .../bower_components/moment/src/locale/nl.js | 62 - .../bower_components/moment/src/locale/nn.js | 51 - .../bower_components/moment/src/locale/pl.js | 95 - .../moment/src/locale/pt-br.js | 51 - .../bower_components/moment/src/locale/pt.js | 55 - .../bower_components/moment/src/locale/ro.js | 65 - .../bower_components/moment/src/locale/ru.js | 155 - .../bower_components/moment/src/locale/si.js | 56 - .../bower_components/moment/src/locale/sk.js | 149 - .../bower_components/moment/src/locale/sl.js | 150 - .../bower_components/moment/src/locale/sq.js | 60 - .../moment/src/locale/sr-cyrl.js | 99 - .../bower_components/moment/src/locale/sr.js | 99 - .../bower_components/moment/src/locale/sv.js | 58 - .../bower_components/moment/src/locale/ta.js | 86 - .../bower_components/moment/src/locale/th.js | 56 - .../moment/src/locale/tl-ph.js | 53 - .../bower_components/moment/src/locale/tr.js | 81 - .../bower_components/moment/src/locale/tzl.js | 78 - .../moment/src/locale/tzm-latn.js | 49 - .../bower_components/moment/src/locale/tzm.js | 49 - .../bower_components/moment/src/locale/uk.js | 144 - .../bower_components/moment/src/locale/uz.js | 49 - .../bower_components/moment/src/locale/vi.js | 57 - .../moment/src/locale/zh-cn.js | 118 - .../moment/src/locale/zh-tw.js | 91 - .../bower_components/moment/src/moment.js | 68 - .../moment/templates/amd-named.js | 7 - .../bower_components/moment/templates/amd.js | 7 - .../moment/templates/globals.js | 5 - .../moment/templates/locale-header.js | 5 - .../moment/templates/test-header.js | 5 - .../bower_components/requirejs/.bower.json | 27 - .../bower_components/requirejs/README.md | 4 - .../bower_components/requirejs/bower.json | 18 - .../bower_components/requirejs/require.js | 2103 - .../bower_components/respond/.bower.json | 21 - .../bower_components/respond/Gruntfile.js | 90 - .../bower_components/respond/LICENSE-MIT | 22 - elgg_clean/bower_components/respond/README.md | 114 - .../bower_components/respond/bower.json | 10 - .../respond/cross-domain/example.html | 24 - .../respond/cross-domain/respond-proxy.html | 96 - .../respond/cross-domain/respond.proxy.gif | Bin 35 -> 0 bytes .../respond/cross-domain/respond.proxy.js | 127 - .../respond.matchmedia.addListener.min.js | 5 - .../respond.matchmedia.addListener.src.js | 273 - .../respond/dest/respond.min.js | 5 - .../respond/dest/respond.src.js | 224 - .../bower_components/respond/package.json | 32 - .../respond/src/matchmedia.addListener.js | 76 - .../respond/src/matchmedia.polyfill.js | 36 - .../bower_components/respond/src/respond.js | 341 - elgg_clean/start.php | 14 +- .../views/default/css/elements/reset.php | 79 + elgg_clean/views/default/css/elgg.php | 69 + elgg_clean/views/default/js/elgg_clean/js.js | 4 +- elgg_clean/views/default/page/html.php | 6 +- .../views/default/page/layouts/widgets.php | 70 + 689 files changed, 231 insertions(+), 157430 deletions(-) delete mode 100644 elgg_clean/bower_components/bootstrap/.bower.json delete mode 100644 elgg_clean/bower_components/bootstrap/Gruntfile.js delete mode 100644 elgg_clean/bower_components/bootstrap/LICENSE delete mode 100644 elgg_clean/bower_components/bootstrap/README.md delete mode 100644 elgg_clean/bower_components/bootstrap/bower.json delete mode 100644 elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.css delete mode 100644 elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.css.map delete mode 100644 elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.min.css delete mode 100644 elgg_clean/bower_components/bootstrap/dist/css/bootstrap.css delete mode 100644 elgg_clean/bower_components/bootstrap/dist/css/bootstrap.css.map delete mode 100644 elgg_clean/bower_components/bootstrap/dist/css/bootstrap.min.css delete mode 100644 elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot delete mode 100644 elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg delete mode 100644 elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf delete mode 100644 elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff delete mode 100644 elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 delete mode 100644 elgg_clean/bower_components/bootstrap/dist/js/bootstrap.js delete mode 100644 elgg_clean/bower_components/bootstrap/dist/js/bootstrap.min.js delete mode 100644 elgg_clean/bower_components/bootstrap/dist/js/npm.js delete mode 100644 elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot delete mode 100644 elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg delete mode 100644 elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf delete mode 100644 elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff delete mode 100644 elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 delete mode 100644 elgg_clean/bower_components/bootstrap/grunt/.jshintrc delete mode 100644 elgg_clean/bower_components/bootstrap/grunt/bs-commonjs-generator.js delete mode 100644 elgg_clean/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js delete mode 100644 elgg_clean/bower_components/bootstrap/grunt/bs-lessdoc-parser.js delete mode 100644 elgg_clean/bower_components/bootstrap/grunt/bs-raw-files-generator.js delete mode 100644 elgg_clean/bower_components/bootstrap/grunt/configBridge.json delete mode 100644 elgg_clean/bower_components/bootstrap/grunt/sauce_browsers.yml delete mode 100644 elgg_clean/bower_components/bootstrap/js/.jscsrc delete mode 100644 elgg_clean/bower_components/bootstrap/js/.jshintrc delete mode 100644 elgg_clean/bower_components/bootstrap/js/affix.js delete mode 100644 elgg_clean/bower_components/bootstrap/js/alert.js delete mode 100644 elgg_clean/bower_components/bootstrap/js/button.js delete mode 100644 elgg_clean/bower_components/bootstrap/js/carousel.js delete mode 100644 elgg_clean/bower_components/bootstrap/js/collapse.js delete mode 100644 elgg_clean/bower_components/bootstrap/js/dropdown.js delete mode 100644 elgg_clean/bower_components/bootstrap/js/modal.js delete mode 100644 elgg_clean/bower_components/bootstrap/js/popover.js delete mode 100644 elgg_clean/bower_components/bootstrap/js/scrollspy.js delete mode 100644 elgg_clean/bower_components/bootstrap/js/tab.js delete mode 100644 elgg_clean/bower_components/bootstrap/js/tooltip.js delete mode 100644 elgg_clean/bower_components/bootstrap/js/transition.js delete mode 100644 elgg_clean/bower_components/bootstrap/less/.csscomb.json delete mode 100644 elgg_clean/bower_components/bootstrap/less/.csslintrc delete mode 100644 elgg_clean/bower_components/bootstrap/less/alerts.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/badges.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/bootstrap.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/breadcrumbs.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/button-groups.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/buttons.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/carousel.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/close.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/code.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/component-animations.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/dropdowns.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/forms.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/glyphicons.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/grid.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/input-groups.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/jumbotron.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/labels.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/list-group.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/media.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/alerts.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/background-variant.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/border-radius.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/buttons.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/center-block.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/clearfix.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/forms.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/gradients.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/grid-framework.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/grid.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/hide-text.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/image.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/labels.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/list-group.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/nav-divider.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/nav-vertical-align.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/opacity.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/pagination.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/panels.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/progress-bar.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/reset-filter.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/reset-text.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/resize.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/responsive-visibility.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/size.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/tab-focus.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/table-row.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/text-emphasis.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/text-overflow.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/mixins/vendor-prefixes.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/modals.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/navbar.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/navs.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/normalize.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/pager.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/pagination.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/panels.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/popovers.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/print.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/progress-bars.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/responsive-embed.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/responsive-utilities.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/scaffolding.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/tables.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/theme.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/thumbnails.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/tooltip.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/type.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/utilities.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/variables.less delete mode 100644 elgg_clean/bower_components/bootstrap/less/wells.less delete mode 100644 elgg_clean/bower_components/bootstrap/package.js delete mode 100644 elgg_clean/bower_components/bootstrap/package.json delete mode 100644 elgg_clean/bower_components/font-awesome/.bower.json delete mode 100644 elgg_clean/bower_components/font-awesome/.npmignore delete mode 100644 elgg_clean/bower_components/font-awesome/HELP-US-OUT.txt delete mode 100644 elgg_clean/bower_components/font-awesome/bower.json delete mode 100644 elgg_clean/bower_components/font-awesome/css/font-awesome.css delete mode 100644 elgg_clean/bower_components/font-awesome/css/font-awesome.css.map delete mode 100644 elgg_clean/bower_components/font-awesome/css/font-awesome.min.css delete mode 100644 elgg_clean/bower_components/font-awesome/fonts/FontAwesome.otf delete mode 100644 elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.eot delete mode 100644 elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.svg delete mode 100644 elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.ttf delete mode 100644 elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.woff delete mode 100644 elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.woff2 delete mode 100644 elgg_clean/bower_components/font-awesome/less/animated.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/bordered-pulled.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/core.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/fixed-width.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/font-awesome.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/icons.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/larger.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/list.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/mixins.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/path.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/rotated-flipped.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/stacked.less delete mode 100644 elgg_clean/bower_components/font-awesome/less/variables.less delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_animated.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_bordered-pulled.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_core.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_fixed-width.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_icons.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_larger.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_list.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_mixins.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_path.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_rotated-flipped.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_stacked.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/_variables.scss delete mode 100644 elgg_clean/bower_components/font-awesome/scss/font-awesome.scss delete mode 100644 elgg_clean/bower_components/fuelux/.bower.json delete mode 100644 elgg_clean/bower_components/fuelux/CNAME delete mode 100644 elgg_clean/bower_components/fuelux/DETAILS.md delete mode 100644 elgg_clean/bower_components/fuelux/LICENSE delete mode 100644 elgg_clean/bower_components/fuelux/README.md delete mode 100644 elgg_clean/bower_components/fuelux/bower.json delete mode 100644 elgg_clean/bower_components/fuelux/dist/css/fuelux.css delete mode 100644 elgg_clean/bower_components/fuelux/dist/css/fuelux.css.map delete mode 100644 elgg_clean/bower_components/fuelux/dist/css/fuelux.min.css delete mode 100644 elgg_clean/bower_components/fuelux/dist/fonts/fuelux.eot delete mode 100644 elgg_clean/bower_components/fuelux/dist/fonts/fuelux.svg delete mode 100644 elgg_clean/bower_components/fuelux/dist/fonts/fuelux.ttf delete mode 100644 elgg_clean/bower_components/fuelux/dist/fonts/fuelux.woff delete mode 100644 elgg_clean/bower_components/fuelux/dist/js/fuelux.js delete mode 100644 elgg_clean/bower_components/fuelux/dist/js/fuelux.min.js delete mode 100644 elgg_clean/bower_components/fuelux/dist/js/npm.js delete mode 100644 elgg_clean/bower_components/fuelux/fonts/fuelux.eot delete mode 100644 elgg_clean/bower_components/fuelux/fonts/fuelux.svg delete mode 100644 elgg_clean/bower_components/fuelux/fonts/fuelux.ttf delete mode 100644 elgg_clean/bower_components/fuelux/fonts/fuelux.woff delete mode 100755 elgg_clean/bower_components/fuelux/fonts/src/bullet.svg delete mode 100755 elgg_clean/bower_components/fuelux/fonts/src/loader_1.svg delete mode 100755 elgg_clean/bower_components/fuelux/fonts/src/loader_2.svg delete mode 100755 elgg_clean/bower_components/fuelux/fonts/src/loader_3.svg delete mode 100755 elgg_clean/bower_components/fuelux/fonts/src/loader_4.svg delete mode 100755 elgg_clean/bower_components/fuelux/fonts/src/loader_5.svg delete mode 100755 elgg_clean/bower_components/fuelux/fonts/src/loader_6.svg delete mode 100755 elgg_clean/bower_components/fuelux/fonts/src/loader_7.svg delete mode 100755 elgg_clean/bower_components/fuelux/fonts/src/loader_8.svg delete mode 100755 elgg_clean/bower_components/fuelux/fonts/src/loader_full.svg delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/blanket_qunit.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/browserify.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/bump.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/clean.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/compress.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/concat.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/connect.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/copy.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/htmllint.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/jsbeautifier.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/jshint.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/less.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/prompt.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/qunit.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/replace.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/saucelabs-qunit.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/shell.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/uglify.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/usebanner.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/config/watch.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/other/commonjs-reference-module.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/tasks/build.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/tasks/release.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/tasks/serve.js delete mode 100644 elgg_clean/bower_components/fuelux/grunt/tasks/test.js delete mode 100644 elgg_clean/bower_components/fuelux/js/all.js delete mode 100644 elgg_clean/bower_components/fuelux/js/checkbox.js delete mode 100644 elgg_clean/bower_components/fuelux/js/combobox.js delete mode 100644 elgg_clean/bower_components/fuelux/js/datepicker.js delete mode 100644 elgg_clean/bower_components/fuelux/js/dropdown-autoflip.js delete mode 100644 elgg_clean/bower_components/fuelux/js/infinite-scroll.js delete mode 100644 elgg_clean/bower_components/fuelux/js/loader.js delete mode 100644 elgg_clean/bower_components/fuelux/js/picker.js delete mode 100644 elgg_clean/bower_components/fuelux/js/pillbox.js delete mode 100644 elgg_clean/bower_components/fuelux/js/placard.js delete mode 100644 elgg_clean/bower_components/fuelux/js/radio.js delete mode 100755 elgg_clean/bower_components/fuelux/js/repeater-list.js delete mode 100755 elgg_clean/bower_components/fuelux/js/repeater-thumbnail.js delete mode 100755 elgg_clean/bower_components/fuelux/js/repeater.js delete mode 100644 elgg_clean/bower_components/fuelux/js/scheduler.js delete mode 100644 elgg_clean/bower_components/fuelux/js/search.js delete mode 100644 elgg_clean/bower_components/fuelux/js/selectlist.js delete mode 100644 elgg_clean/bower_components/fuelux/js/spinbox.js delete mode 100644 elgg_clean/bower_components/fuelux/js/tree.js delete mode 100644 elgg_clean/bower_components/fuelux/js/wizard.js delete mode 100644 elgg_clean/bower_components/fuelux/less/checkbox-no-js.less delete mode 100644 elgg_clean/bower_components/fuelux/less/checkbox.less delete mode 100644 elgg_clean/bower_components/fuelux/less/combobox.less delete mode 100644 elgg_clean/bower_components/fuelux/less/datepicker.less delete mode 100644 elgg_clean/bower_components/fuelux/less/forms.less delete mode 100644 elgg_clean/bower_components/fuelux/less/fuelux.less delete mode 100644 elgg_clean/bower_components/fuelux/less/icons.less delete mode 100644 elgg_clean/bower_components/fuelux/less/infinite-scroll.less delete mode 100644 elgg_clean/bower_components/fuelux/less/intelligent-dropdown.less delete mode 100644 elgg_clean/bower_components/fuelux/less/loader.less delete mode 100644 elgg_clean/bower_components/fuelux/less/mixins.less delete mode 100644 elgg_clean/bower_components/fuelux/less/picker.less delete mode 100644 elgg_clean/bower_components/fuelux/less/pillbox.less delete mode 100644 elgg_clean/bower_components/fuelux/less/placard.less delete mode 100644 elgg_clean/bower_components/fuelux/less/preloader.less delete mode 100644 elgg_clean/bower_components/fuelux/less/radio-no-js.less delete mode 100644 elgg_clean/bower_components/fuelux/less/radio.less delete mode 100755 elgg_clean/bower_components/fuelux/less/repeater-list.less delete mode 100755 elgg_clean/bower_components/fuelux/less/repeater-thumbnail.less delete mode 100755 elgg_clean/bower_components/fuelux/less/repeater.less delete mode 100644 elgg_clean/bower_components/fuelux/less/scheduler.less delete mode 100644 elgg_clean/bower_components/fuelux/less/search.less delete mode 100644 elgg_clean/bower_components/fuelux/less/selectlist.less delete mode 100644 elgg_clean/bower_components/fuelux/less/spinbox.less delete mode 100644 elgg_clean/bower_components/fuelux/less/tree.less delete mode 100644 elgg_clean/bower_components/fuelux/less/utility.less delete mode 100644 elgg_clean/bower_components/fuelux/less/variables.less delete mode 100644 elgg_clean/bower_components/fuelux/less/wizard.less delete mode 100644 elgg_clean/bower_components/fuelux/markup/checkbox-inline-no-js.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/checkbox-inline.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/checkbox-no-js-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/checkbox-no-js.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/checkbox-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/checkbox.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/combobox-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/combobox.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/datepicker.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/infinite-scroll.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/loader-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/loader.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/pillbox-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/pillbox-with-pills.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/pillbox.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/placard-header-footer.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/placard-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/placard.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/radio-inline-no-js.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/radio-inline.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/radio-no-js-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/radio-no-js.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/radio-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/radio.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/repeater-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/repeater.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/scheduler.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/search.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/selectlist-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/selectlist.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/spinbox-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/spinbox.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/tree-folders-selectable.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/tree.html delete mode 100644 elgg_clean/bower_components/fuelux/markup/wizard-variations.txt delete mode 100644 elgg_clean/bower_components/fuelux/markup/wizard.html delete mode 100644 elgg_clean/bower_components/fuelux/package.js delete mode 100644 elgg_clean/bower_components/fuelux/package.json delete mode 100755 elgg_clean/bower_components/fuelux/postinstall.js delete mode 100644 elgg_clean/bower_components/jquery/.bower.json delete mode 100644 elgg_clean/bower_components/jquery/MIT-LICENSE.txt delete mode 100644 elgg_clean/bower_components/jquery/bower.json delete mode 100644 elgg_clean/bower_components/jquery/dist/jquery.js delete mode 100644 elgg_clean/bower_components/jquery/dist/jquery.min.js delete mode 100644 elgg_clean/bower_components/jquery/dist/jquery.min.map delete mode 100644 elgg_clean/bower_components/jquery/src/ajax.js delete mode 100644 elgg_clean/bower_components/jquery/src/ajax/jsonp.js delete mode 100644 elgg_clean/bower_components/jquery/src/ajax/load.js delete mode 100644 elgg_clean/bower_components/jquery/src/ajax/parseJSON.js delete mode 100644 elgg_clean/bower_components/jquery/src/ajax/parseXML.js delete mode 100644 elgg_clean/bower_components/jquery/src/ajax/script.js delete mode 100644 elgg_clean/bower_components/jquery/src/ajax/var/nonce.js delete mode 100644 elgg_clean/bower_components/jquery/src/ajax/var/rquery.js delete mode 100644 elgg_clean/bower_components/jquery/src/ajax/xhr.js delete mode 100644 elgg_clean/bower_components/jquery/src/attributes.js delete mode 100644 elgg_clean/bower_components/jquery/src/attributes/attr.js delete mode 100644 elgg_clean/bower_components/jquery/src/attributes/classes.js delete mode 100644 elgg_clean/bower_components/jquery/src/attributes/prop.js delete mode 100644 elgg_clean/bower_components/jquery/src/attributes/support.js delete mode 100644 elgg_clean/bower_components/jquery/src/attributes/val.js delete mode 100644 elgg_clean/bower_components/jquery/src/callbacks.js delete mode 100644 elgg_clean/bower_components/jquery/src/core.js delete mode 100644 elgg_clean/bower_components/jquery/src/core/access.js delete mode 100644 elgg_clean/bower_components/jquery/src/core/init.js delete mode 100644 elgg_clean/bower_components/jquery/src/core/parseHTML.js delete mode 100644 elgg_clean/bower_components/jquery/src/core/ready.js delete mode 100644 elgg_clean/bower_components/jquery/src/core/var/rsingleTag.js delete mode 100644 elgg_clean/bower_components/jquery/src/css.js delete mode 100644 elgg_clean/bower_components/jquery/src/css/addGetHookIf.js delete mode 100644 elgg_clean/bower_components/jquery/src/css/curCSS.js delete mode 100644 elgg_clean/bower_components/jquery/src/css/defaultDisplay.js delete mode 100644 elgg_clean/bower_components/jquery/src/css/hiddenVisibleSelectors.js delete mode 100644 elgg_clean/bower_components/jquery/src/css/support.js delete mode 100644 elgg_clean/bower_components/jquery/src/css/swap.js delete mode 100644 elgg_clean/bower_components/jquery/src/css/var/cssExpand.js delete mode 100644 elgg_clean/bower_components/jquery/src/css/var/getStyles.js delete mode 100644 elgg_clean/bower_components/jquery/src/css/var/isHidden.js delete mode 100644 elgg_clean/bower_components/jquery/src/css/var/rmargin.js delete mode 100644 elgg_clean/bower_components/jquery/src/css/var/rnumnonpx.js delete mode 100644 elgg_clean/bower_components/jquery/src/data.js delete mode 100644 elgg_clean/bower_components/jquery/src/deferred.js delete mode 100644 elgg_clean/bower_components/jquery/src/deprecated.js delete mode 100644 elgg_clean/bower_components/jquery/src/dimensions.js delete mode 100644 elgg_clean/bower_components/jquery/src/effects.js delete mode 100644 elgg_clean/bower_components/jquery/src/effects/Tween.js delete mode 100644 elgg_clean/bower_components/jquery/src/effects/animatedSelector.js delete mode 100644 elgg_clean/bower_components/jquery/src/event.js delete mode 100644 elgg_clean/bower_components/jquery/src/event/ajax.js delete mode 100644 elgg_clean/bower_components/jquery/src/event/alias.js delete mode 100644 elgg_clean/bower_components/jquery/src/event/support.js delete mode 100644 elgg_clean/bower_components/jquery/src/exports/amd.js delete mode 100644 elgg_clean/bower_components/jquery/src/exports/global.js delete mode 100644 elgg_clean/bower_components/jquery/src/intro.js delete mode 100644 elgg_clean/bower_components/jquery/src/jquery.js delete mode 100644 elgg_clean/bower_components/jquery/src/manipulation.js delete mode 100644 elgg_clean/bower_components/jquery/src/manipulation/_evalUrl.js delete mode 100644 elgg_clean/bower_components/jquery/src/manipulation/support.js delete mode 100644 elgg_clean/bower_components/jquery/src/manipulation/var/rcheckableType.js delete mode 100644 elgg_clean/bower_components/jquery/src/offset.js delete mode 100644 elgg_clean/bower_components/jquery/src/outro.js delete mode 100644 elgg_clean/bower_components/jquery/src/queue.js delete mode 100644 elgg_clean/bower_components/jquery/src/queue/delay.js delete mode 100644 elgg_clean/bower_components/jquery/src/selector-native.js delete mode 100644 elgg_clean/bower_components/jquery/src/selector-sizzle.js delete mode 100644 elgg_clean/bower_components/jquery/src/selector.js delete mode 100644 elgg_clean/bower_components/jquery/src/serialize.js delete mode 100644 elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.js delete mode 100644 elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.min.js delete mode 100644 elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.min.map delete mode 100644 elgg_clean/bower_components/jquery/src/traversing.js delete mode 100644 elgg_clean/bower_components/jquery/src/traversing/findFilter.js delete mode 100644 elgg_clean/bower_components/jquery/src/traversing/var/rneedsContext.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/arr.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/class2type.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/concat.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/hasOwn.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/indexOf.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/pnum.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/push.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/rnotwhite.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/slice.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/strundefined.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/support.js delete mode 100644 elgg_clean/bower_components/jquery/src/var/toString.js delete mode 100644 elgg_clean/bower_components/jquery/src/wrap.js delete mode 100644 elgg_clean/bower_components/moment/.bower.json delete mode 100644 elgg_clean/bower_components/moment/CHANGELOG.md delete mode 100644 elgg_clean/bower_components/moment/LICENSE delete mode 100644 elgg_clean/bower_components/moment/README.md delete mode 100644 elgg_clean/bower_components/moment/bower.json delete mode 100644 elgg_clean/bower_components/moment/locale/af.js delete mode 100644 elgg_clean/bower_components/moment/locale/ar-ma.js delete mode 100644 elgg_clean/bower_components/moment/locale/ar-sa.js delete mode 100644 elgg_clean/bower_components/moment/locale/ar-tn.js delete mode 100644 elgg_clean/bower_components/moment/locale/ar.js delete mode 100644 elgg_clean/bower_components/moment/locale/az.js delete mode 100644 elgg_clean/bower_components/moment/locale/be.js delete mode 100644 elgg_clean/bower_components/moment/locale/bg.js delete mode 100644 elgg_clean/bower_components/moment/locale/bn.js delete mode 100644 elgg_clean/bower_components/moment/locale/bo.js delete mode 100644 elgg_clean/bower_components/moment/locale/br.js delete mode 100644 elgg_clean/bower_components/moment/locale/bs.js delete mode 100644 elgg_clean/bower_components/moment/locale/ca.js delete mode 100644 elgg_clean/bower_components/moment/locale/cs.js delete mode 100644 elgg_clean/bower_components/moment/locale/cv.js delete mode 100644 elgg_clean/bower_components/moment/locale/cy.js delete mode 100644 elgg_clean/bower_components/moment/locale/da.js delete mode 100644 elgg_clean/bower_components/moment/locale/de-at.js delete mode 100644 elgg_clean/bower_components/moment/locale/de.js delete mode 100644 elgg_clean/bower_components/moment/locale/el.js delete mode 100644 elgg_clean/bower_components/moment/locale/en-au.js delete mode 100644 elgg_clean/bower_components/moment/locale/en-ca.js delete mode 100644 elgg_clean/bower_components/moment/locale/en-gb.js delete mode 100644 elgg_clean/bower_components/moment/locale/eo.js delete mode 100644 elgg_clean/bower_components/moment/locale/es.js delete mode 100644 elgg_clean/bower_components/moment/locale/et.js delete mode 100644 elgg_clean/bower_components/moment/locale/eu.js delete mode 100644 elgg_clean/bower_components/moment/locale/fa.js delete mode 100644 elgg_clean/bower_components/moment/locale/fi.js delete mode 100644 elgg_clean/bower_components/moment/locale/fo.js delete mode 100644 elgg_clean/bower_components/moment/locale/fr-ca.js delete mode 100644 elgg_clean/bower_components/moment/locale/fr.js delete mode 100644 elgg_clean/bower_components/moment/locale/fy.js delete mode 100644 elgg_clean/bower_components/moment/locale/gl.js delete mode 100644 elgg_clean/bower_components/moment/locale/he.js delete mode 100644 elgg_clean/bower_components/moment/locale/hi.js delete mode 100644 elgg_clean/bower_components/moment/locale/hr.js delete mode 100644 elgg_clean/bower_components/moment/locale/hu.js delete mode 100644 elgg_clean/bower_components/moment/locale/hy-am.js delete mode 100644 elgg_clean/bower_components/moment/locale/id.js delete mode 100644 elgg_clean/bower_components/moment/locale/is.js delete mode 100644 elgg_clean/bower_components/moment/locale/it.js delete mode 100644 elgg_clean/bower_components/moment/locale/ja.js delete mode 100644 elgg_clean/bower_components/moment/locale/jv.js delete mode 100644 elgg_clean/bower_components/moment/locale/ka.js delete mode 100644 elgg_clean/bower_components/moment/locale/km.js delete mode 100644 elgg_clean/bower_components/moment/locale/ko.js delete mode 100644 elgg_clean/bower_components/moment/locale/lb.js delete mode 100644 elgg_clean/bower_components/moment/locale/lt.js delete mode 100644 elgg_clean/bower_components/moment/locale/lv.js delete mode 100644 elgg_clean/bower_components/moment/locale/me.js delete mode 100644 elgg_clean/bower_components/moment/locale/mk.js delete mode 100644 elgg_clean/bower_components/moment/locale/ml.js delete mode 100644 elgg_clean/bower_components/moment/locale/mr.js delete mode 100644 elgg_clean/bower_components/moment/locale/ms-my.js delete mode 100644 elgg_clean/bower_components/moment/locale/ms.js delete mode 100644 elgg_clean/bower_components/moment/locale/my.js delete mode 100644 elgg_clean/bower_components/moment/locale/nb.js delete mode 100644 elgg_clean/bower_components/moment/locale/ne.js delete mode 100644 elgg_clean/bower_components/moment/locale/nl.js delete mode 100644 elgg_clean/bower_components/moment/locale/nn.js delete mode 100644 elgg_clean/bower_components/moment/locale/pl.js delete mode 100644 elgg_clean/bower_components/moment/locale/pt-br.js delete mode 100644 elgg_clean/bower_components/moment/locale/pt.js delete mode 100644 elgg_clean/bower_components/moment/locale/ro.js delete mode 100644 elgg_clean/bower_components/moment/locale/ru.js delete mode 100644 elgg_clean/bower_components/moment/locale/si.js delete mode 100644 elgg_clean/bower_components/moment/locale/sk.js delete mode 100644 elgg_clean/bower_components/moment/locale/sl.js delete mode 100644 elgg_clean/bower_components/moment/locale/sq.js delete mode 100644 elgg_clean/bower_components/moment/locale/sr-cyrl.js delete mode 100644 elgg_clean/bower_components/moment/locale/sr.js delete mode 100644 elgg_clean/bower_components/moment/locale/sv.js delete mode 100644 elgg_clean/bower_components/moment/locale/ta.js delete mode 100644 elgg_clean/bower_components/moment/locale/th.js delete mode 100644 elgg_clean/bower_components/moment/locale/tl-ph.js delete mode 100644 elgg_clean/bower_components/moment/locale/tr.js delete mode 100644 elgg_clean/bower_components/moment/locale/tzl.js delete mode 100644 elgg_clean/bower_components/moment/locale/tzm-latn.js delete mode 100644 elgg_clean/bower_components/moment/locale/tzm.js delete mode 100644 elgg_clean/bower_components/moment/locale/uk.js delete mode 100644 elgg_clean/bower_components/moment/locale/uz.js delete mode 100644 elgg_clean/bower_components/moment/locale/vi.js delete mode 100644 elgg_clean/bower_components/moment/locale/zh-cn.js delete mode 100644 elgg_clean/bower_components/moment/locale/zh-tw.js delete mode 100644 elgg_clean/bower_components/moment/min/locales.js delete mode 100644 elgg_clean/bower_components/moment/min/locales.min.js delete mode 100644 elgg_clean/bower_components/moment/min/moment-with-locales.js delete mode 100644 elgg_clean/bower_components/moment/min/moment-with-locales.min.js delete mode 100644 elgg_clean/bower_components/moment/min/moment.min.js delete mode 100644 elgg_clean/bower_components/moment/min/tests.js delete mode 100644 elgg_clean/bower_components/moment/moment.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/check-overflow.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/date-from-array.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/from-anything.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/from-array.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/from-object.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/from-string-and-array.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/from-string-and-format.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/from-string.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/local.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/parsing-flags.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/utc.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/create/valid.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/duration/abs.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/duration/add-subtract.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/duration/as.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/duration/bubble.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/duration/constructor.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/duration/create.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/duration/duration.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/duration/get.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/duration/humanize.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/duration/iso-string.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/duration/prototype.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/format/format.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/calendar.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/constructor.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/en.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/formats.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/invalid.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/lists.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/locale.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/locales.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/ordinal.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/pre-post-format.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/prototype.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/relative.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/locale/set.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/add-subtract.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/calendar.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/clone.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/compare.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/constructor.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/diff.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/format.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/from.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/get-set.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/locale.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/min-max.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/moment.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/prototype.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/start-end-of.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/to-type.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/to.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/moment/valid.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/parse/regex.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/parse/token.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/aliases.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/constants.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/day-of-month.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/day-of-week.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/day-of-year.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/hour.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/millisecond.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/minute.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/month.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/offset.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/quarter.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/second.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/timestamp.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/timezone.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/units.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/week-year.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/week.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/units/year.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/abs-ceil.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/abs-floor.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/compare-arrays.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/defaults.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/deprecate.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/extend.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/has-own-prop.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/hooks.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/is-array.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/is-date.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/map.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/to-int.js delete mode 100644 elgg_clean/bower_components/moment/src/lib/utils/zero-fill.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/af.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ar-ma.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ar-sa.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ar-tn.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ar.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/az.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/be.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/bg.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/bn.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/bo.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/br.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/bs.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ca.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/cs.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/cv.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/cy.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/da.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/de-at.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/de.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/el.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/en-au.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/en-ca.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/en-gb.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/eo.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/es.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/et.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/eu.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/fa.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/fi.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/fo.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/fr-ca.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/fr.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/fy.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/gl.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/he.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/hi.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/hr.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/hu.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/hy-am.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/id.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/is.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/it.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ja.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/jv.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ka.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/km.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ko.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/lb.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/lt.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/lv.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/me.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/mk.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ml.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/mr.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ms-my.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ms.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/my.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/nb.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ne.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/nl.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/nn.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/pl.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/pt-br.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/pt.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ro.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ru.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/si.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/sk.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/sl.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/sq.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/sr-cyrl.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/sr.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/sv.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/ta.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/th.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/tl-ph.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/tr.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/tzl.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/tzm-latn.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/tzm.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/uk.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/uz.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/vi.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/zh-cn.js delete mode 100644 elgg_clean/bower_components/moment/src/locale/zh-tw.js delete mode 100644 elgg_clean/bower_components/moment/src/moment.js delete mode 100644 elgg_clean/bower_components/moment/templates/amd-named.js delete mode 100644 elgg_clean/bower_components/moment/templates/amd.js delete mode 100644 elgg_clean/bower_components/moment/templates/globals.js delete mode 100644 elgg_clean/bower_components/moment/templates/locale-header.js delete mode 100644 elgg_clean/bower_components/moment/templates/test-header.js delete mode 100644 elgg_clean/bower_components/requirejs/.bower.json delete mode 100644 elgg_clean/bower_components/requirejs/README.md delete mode 100644 elgg_clean/bower_components/requirejs/bower.json delete mode 100644 elgg_clean/bower_components/requirejs/require.js delete mode 100644 elgg_clean/bower_components/respond/.bower.json delete mode 100644 elgg_clean/bower_components/respond/Gruntfile.js delete mode 100644 elgg_clean/bower_components/respond/LICENSE-MIT delete mode 100644 elgg_clean/bower_components/respond/README.md delete mode 100644 elgg_clean/bower_components/respond/bower.json delete mode 100644 elgg_clean/bower_components/respond/cross-domain/example.html delete mode 100644 elgg_clean/bower_components/respond/cross-domain/respond-proxy.html delete mode 100644 elgg_clean/bower_components/respond/cross-domain/respond.proxy.gif delete mode 100644 elgg_clean/bower_components/respond/cross-domain/respond.proxy.js delete mode 100644 elgg_clean/bower_components/respond/dest/respond.matchmedia.addListener.min.js delete mode 100644 elgg_clean/bower_components/respond/dest/respond.matchmedia.addListener.src.js delete mode 100644 elgg_clean/bower_components/respond/dest/respond.min.js delete mode 100644 elgg_clean/bower_components/respond/dest/respond.src.js delete mode 100644 elgg_clean/bower_components/respond/package.json delete mode 100644 elgg_clean/bower_components/respond/src/matchmedia.addListener.js delete mode 100644 elgg_clean/bower_components/respond/src/matchmedia.polyfill.js delete mode 100644 elgg_clean/bower_components/respond/src/respond.js create mode 100644 elgg_clean/views/default/css/elements/reset.php create mode 100644 elgg_clean/views/default/css/elgg.php create mode 100644 elgg_clean/views/default/page/layouts/widgets.php diff --git a/elgg_clean/bower_components/bootstrap/.bower.json b/elgg_clean/bower_components/bootstrap/.bower.json deleted file mode 100644 index 2089e570..00000000 --- a/elgg_clean/bower_components/bootstrap/.bower.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "bootstrap", - "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", - "keywords": [ - "css", - "js", - "less", - "mobile-first", - "responsive", - "front-end", - "framework", - "web" - ], - "homepage": "http://getbootstrap.com", - "license": "MIT", - "moduleType": "globals", - "main": [ - "less/bootstrap.less", - "dist/js/bootstrap.js" - ], - "ignore": [ - "/.*", - "_config.yml", - "CNAME", - "composer.json", - "CONTRIBUTING.md", - "docs", - "js/tests", - "test-infra" - ], - "dependencies": { - "jquery": ">= 1.9.1" - }, - "version": "3.3.5", - "_release": "3.3.5", - "_resolution": { - "type": "version", - "tag": "v3.3.5", - "commit": "16b48259a62f576e52c903c476bd42b90ab22482" - }, - "_source": "git://github.com/twbs/bootstrap.git", - "_target": "3.x", - "_originalSource": "bootstrap" -} \ No newline at end of file diff --git a/elgg_clean/bower_components/bootstrap/Gruntfile.js b/elgg_clean/bower_components/bootstrap/Gruntfile.js deleted file mode 100644 index 4c021cef..00000000 --- a/elgg_clean/bower_components/bootstrap/Gruntfile.js +++ /dev/null @@ -1,531 +0,0 @@ -/*! - * Bootstrap's Gruntfile - * http://getbootstrap.com - * Copyright 2013-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -module.exports = function (grunt) { - 'use strict'; - - // Force use of Unix newlines - grunt.util.linefeed = '\n'; - - RegExp.quote = function (string) { - return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&'); - }; - - var fs = require('fs'); - var path = require('path'); - var npmShrinkwrap = require('npm-shrinkwrap'); - var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js'); - var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js'); - var getLessVarsData = function () { - var filePath = path.join(__dirname, 'less/variables.less'); - var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' }); - var parser = new BsLessdocParser(fileContent); - return { sections: parser.parseFile() }; - }; - var generateRawFiles = require('./grunt/bs-raw-files-generator.js'); - var generateCommonJSModule = require('./grunt/bs-commonjs-generator.js'); - var configBridge = grunt.file.readJSON('./grunt/configBridge.json', { encoding: 'utf8' }); - - Object.keys(configBridge.paths).forEach(function (key) { - configBridge.paths[key].forEach(function (val, i, arr) { - arr[i] = path.join('./docs/assets', val); - }); - }); - - // Project configuration. - grunt.initConfig({ - - // Metadata. - pkg: grunt.file.readJSON('package.json'), - banner: '/*!\n' + - ' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' + - ' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' + - ' * Licensed under the <%= pkg.license %> license\n' + - ' */\n', - jqueryCheck: configBridge.config.jqueryCheck.join('\n'), - jqueryVersionCheck: configBridge.config.jqueryVersionCheck.join('\n'), - - // Task configuration. - clean: { - dist: 'dist', - docs: 'docs/dist' - }, - - jshint: { - options: { - jshintrc: 'js/.jshintrc' - }, - grunt: { - options: { - jshintrc: 'grunt/.jshintrc' - }, - src: ['Gruntfile.js', 'package.js', 'grunt/*.js'] - }, - core: { - src: 'js/*.js' - }, - test: { - options: { - jshintrc: 'js/tests/unit/.jshintrc' - }, - src: 'js/tests/unit/*.js' - }, - assets: { - src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js'] - } - }, - - jscs: { - options: { - config: 'js/.jscsrc' - }, - grunt: { - src: '<%= jshint.grunt.src %>' - }, - core: { - src: '<%= jshint.core.src %>' - }, - test: { - src: '<%= jshint.test.src %>' - }, - assets: { - options: { - requireCamelCaseOrUpperCaseIdentifiers: null - }, - src: '<%= jshint.assets.src %>' - } - }, - - concat: { - options: { - banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>', - stripBanners: false - }, - bootstrap: { - src: [ - 'js/transition.js', - 'js/alert.js', - 'js/button.js', - 'js/carousel.js', - 'js/collapse.js', - 'js/dropdown.js', - 'js/modal.js', - 'js/tooltip.js', - 'js/popover.js', - 'js/scrollspy.js', - 'js/tab.js', - 'js/affix.js' - ], - dest: 'dist/js/<%= pkg.name %>.js' - } - }, - - uglify: { - options: { - compress: { - warnings: false - }, - mangle: true, - preserveComments: 'some' - }, - core: { - src: '<%= concat.bootstrap.dest %>', - dest: 'dist/js/<%= pkg.name %>.min.js' - }, - customize: { - src: configBridge.paths.customizerJs, - dest: 'docs/assets/js/customize.min.js' - }, - docsJs: { - src: configBridge.paths.docsJs, - dest: 'docs/assets/js/docs.min.js' - } - }, - - qunit: { - options: { - inject: 'js/tests/unit/phantom.js' - }, - files: 'js/tests/index.html' - }, - - less: { - compileCore: { - options: { - strictMath: true, - sourceMap: true, - outputSourceFiles: true, - sourceMapURL: '<%= pkg.name %>.css.map', - sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map' - }, - src: 'less/bootstrap.less', - dest: 'dist/css/<%= pkg.name %>.css' - }, - compileTheme: { - options: { - strictMath: true, - sourceMap: true, - outputSourceFiles: true, - sourceMapURL: '<%= pkg.name %>-theme.css.map', - sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map' - }, - src: 'less/theme.less', - dest: 'dist/css/<%= pkg.name %>-theme.css' - } - }, - - autoprefixer: { - options: { - browsers: configBridge.config.autoprefixerBrowsers - }, - core: { - options: { - map: true - }, - src: 'dist/css/<%= pkg.name %>.css' - }, - theme: { - options: { - map: true - }, - src: 'dist/css/<%= pkg.name %>-theme.css' - }, - docs: { - src: ['docs/assets/css/src/docs.css'] - }, - examples: { - expand: true, - cwd: 'docs/examples/', - src: ['**/*.css'], - dest: 'docs/examples/' - } - }, - - csslint: { - options: { - csslintrc: 'less/.csslintrc' - }, - dist: [ - 'dist/css/bootstrap.css', - 'dist/css/bootstrap-theme.css' - ], - examples: [ - 'docs/examples/**/*.css' - ], - docs: { - options: { - ids: false, - 'overqualified-elements': false - }, - src: 'docs/assets/css/src/docs.css' - } - }, - - cssmin: { - options: { - // TODO: disable `zeroUnits` optimization once clean-css 3.2 is released - // and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly - compatibility: 'ie8', - keepSpecialComments: '*', - advanced: false - }, - minifyCore: { - src: 'dist/css/<%= pkg.name %>.css', - dest: 'dist/css/<%= pkg.name %>.min.css' - }, - minifyTheme: { - src: 'dist/css/<%= pkg.name %>-theme.css', - dest: 'dist/css/<%= pkg.name %>-theme.min.css' - }, - docs: { - src: [ - 'docs/assets/css/src/pygments-manni.css', - 'docs/assets/css/src/docs.css' - ], - dest: 'docs/assets/css/docs.min.css' - } - }, - - csscomb: { - options: { - config: 'less/.csscomb.json' - }, - dist: { - expand: true, - cwd: 'dist/css/', - src: ['*.css', '!*.min.css'], - dest: 'dist/css/' - }, - examples: { - expand: true, - cwd: 'docs/examples/', - src: '**/*.css', - dest: 'docs/examples/' - }, - docs: { - src: 'docs/assets/css/src/docs.css', - dest: 'docs/assets/css/src/docs.css' - } - }, - - copy: { - fonts: { - expand: true, - src: 'fonts/*', - dest: 'dist/' - }, - docs: { - expand: true, - cwd: 'dist/', - src: [ - '**/*' - ], - dest: 'docs/dist/' - } - }, - - connect: { - server: { - options: { - port: 3000, - base: '.' - } - } - }, - - jekyll: { - options: { - config: '_config.yml' - }, - docs: {}, - github: { - options: { - raw: 'github: true' - } - } - }, - - htmlmin: { - dist: { - options: { - collapseWhitespace: true, - conservativeCollapse: true, - minifyCSS: true, - minifyJS: true, - removeAttributeQuotes: true, - removeComments: true - }, - expand: true, - cwd: '_gh_pages', - dest: '_gh_pages', - src: [ - '**/*.html', - '!examples/**/*.html' - ] - } - }, - - jade: { - options: { - pretty: true, - data: getLessVarsData - }, - customizerVars: { - src: 'docs/_jade/customizer-variables.jade', - dest: 'docs/_includes/customizer-variables.html' - }, - customizerNav: { - src: 'docs/_jade/customizer-nav.jade', - dest: 'docs/_includes/nav/customize.html' - } - }, - - htmllint: { - options: { - ignore: [ - 'Attribute "autocomplete" not allowed on element "button" at this point.', - 'Attribute "autocomplete" not allowed on element "input" at this point.', - 'Element "img" is missing required attribute "src".' - ] - }, - src: '_gh_pages/**/*.html' - }, - - watch: { - src: { - files: '<%= jshint.core.src %>', - tasks: ['jshint:core', 'qunit', 'concat'] - }, - test: { - files: '<%= jshint.test.src %>', - tasks: ['jshint:test', 'qunit'] - }, - less: { - files: 'less/**/*.less', - tasks: 'less' - } - }, - - sed: { - versionNumber: { - pattern: (function () { - var old = grunt.option('oldver'); - return old ? RegExp.quote(old) : old; - })(), - replacement: grunt.option('newver'), - exclude: [ - 'dist/fonts', - 'docs/assets', - 'fonts', - 'js/tests/vendor', - 'node_modules', - 'test-infra' - ], - recursive: true - } - }, - - 'saucelabs-qunit': { - all: { - options: { - build: process.env.TRAVIS_JOB_ID, - throttled: 10, - maxRetries: 3, - maxPollRetries: 4, - urls: ['http://127.0.0.1:3000/js/tests/index.html?hidepassed'], - browsers: grunt.file.readYAML('grunt/sauce_browsers.yml') - } - } - }, - - exec: { - npmUpdate: { - command: 'npm update' - } - }, - - compress: { - main: { - options: { - archive: 'bootstrap-<%= pkg.version %>-dist.zip', - mode: 'zip', - level: 9, - pretty: true - }, - files: [ - { - expand: true, - cwd: 'dist/', - src: ['**'], - dest: 'bootstrap-<%= pkg.version %>-dist' - } - ] - } - } - - }); - - - // These plugins provide necessary tasks. - require('load-grunt-tasks')(grunt, { scope: 'devDependencies' }); - require('time-grunt')(grunt); - - // Docs HTML validation task - grunt.registerTask('validate-html', ['jekyll:docs', 'htmllint']); - - var runSubset = function (subset) { - return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset; - }; - var isUndefOrNonZero = function (val) { - return val === undefined || val !== '0'; - }; - - // Test task. - var testSubtasks = []; - // Skip core tests if running a different subset of the test suite - if (runSubset('core') && - // Skip core tests if this is a Savage build - process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') { - testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'csslint:dist', 'test-js', 'docs']); - } - // Skip HTML validation if running a different subset of the test suite - if (runSubset('validate-html') && - // Skip HTML5 validator on Travis when [skip validator] is in the commit message - isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) { - testSubtasks.push('validate-html'); - } - // Only run Sauce Labs tests if there's a Sauce access key - if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' && - // Skip Sauce if running a different subset of the test suite - runSubset('sauce-js-unit') && - // Skip Sauce on Travis when [skip sauce] is in the commit message - isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) { - testSubtasks.push('connect'); - testSubtasks.push('saucelabs-qunit'); - } - grunt.registerTask('test', testSubtasks); - grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']); - - // JS distribution task. - grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']); - - // CSS distribution task. - grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']); - grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'autoprefixer:theme', 'csscomb:dist', 'cssmin:minifyCore', 'cssmin:minifyTheme']); - - // Full distribution task. - grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']); - - // Default task. - grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']); - - // Version numbering task. - // grunt change-version-number --oldver=A.B.C --newver=X.Y.Z - // This can be overzealous, so its changes should always be manually reviewed! - grunt.registerTask('change-version-number', 'sed'); - - grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); }); - - // task for building customizer - grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']); - grunt.registerTask('build-customizer-html', 'jade'); - grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () { - var banner = grunt.template.process('<%= banner %>'); - generateRawFiles(grunt, banner); - }); - - grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () { - var srcFiles = grunt.config.get('concat.bootstrap.src'); - var destFilepath = 'dist/js/npm.js'; - generateCommonJSModule(grunt, srcFiles, destFilepath); - }); - - // Docs task. - grunt.registerTask('docs-css', ['autoprefixer:docs', 'autoprefixer:examples', 'csscomb:docs', 'csscomb:examples', 'cssmin:docs']); - grunt.registerTask('lint-docs-css', ['csslint:docs', 'csslint:examples']); - grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']); - grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']); - grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']); - - grunt.registerTask('prep-release', ['dist', 'docs', 'jekyll:github', 'htmlmin', 'compress']); - - // Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json). - // This task should be run and the updated file should be committed whenever Bootstrap's dependencies change. - grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', '_update-shrinkwrap']); - grunt.registerTask('_update-shrinkwrap', function () { - var done = this.async(); - npmShrinkwrap({ dev: true, dirname: __dirname }, function (err) { - if (err) { - grunt.fail.warn(err); - } - var dest = 'test-infra/npm-shrinkwrap.json'; - fs.renameSync('npm-shrinkwrap.json', dest); - grunt.log.writeln('File ' + dest.cyan + ' updated.'); - done(); - }); - }); -}; diff --git a/elgg_clean/bower_components/bootstrap/LICENSE b/elgg_clean/bower_components/bootstrap/LICENSE deleted file mode 100644 index f4c52d6a..00000000 --- a/elgg_clean/bower_components/bootstrap/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2011-2015 Twitter, Inc - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/elgg_clean/bower_components/bootstrap/README.md b/elgg_clean/bower_components/bootstrap/README.md deleted file mode 100644 index 34c8b5a5..00000000 --- a/elgg_clean/bower_components/bootstrap/README.md +++ /dev/null @@ -1,137 +0,0 @@ -# [Bootstrap](http://getbootstrap.com) -[](https://bootstrap-slack.herokuapp.com) - -[](https://www.npmjs.com/package/bootstrap) -[](https://travis-ci.org/twbs/bootstrap) -[](https://david-dm.org/twbs/bootstrap#info=devDependencies) -[](https://saucelabs.com/u/bootstrap) - -Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community. - -To get started, check out <http://getbootstrap.com>! - -## Table of contents - -- [Quick start](#quick-start) -- [Bugs and feature requests](#bugs-and-feature-requests) -- [Documentation](#documentation) -- [Contributing](#contributing) -- [Community](#community) -- [Versioning](#versioning) -- [Creators](#creators) -- [Copyright and license](#copyright-and-license) - -## Quick start - -Several quick start options are available: - -- [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.5.zip). -- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`. -- Install with [Bower](http://bower.io): `bower install bootstrap`. -- Install with [npm](https://www.npmjs.com): `npm install bootstrap`. -- Install with [Meteor](https://www.meteor.com): `meteor add twbs:bootstrap`. -- Install with [Composer](https://getcomposer.org): `composer require twbs/bootstrap`. - -Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more. - -### What's included - -Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this: - -``` -bootstrap/ -├── css/ -│ ├── bootstrap.css -│ ├── bootstrap.css.map -│ ├── bootstrap.min.css -│ ├── bootstrap-theme.css -│ ├── bootstrap-theme.css.map -│ └── bootstrap-theme.min.css -├── js/ -│ ├── bootstrap.js -│ └── bootstrap.min.js -└── fonts/ - ├── glyphicons-halflings-regular.eot - ├── glyphicons-halflings-regular.svg - ├── glyphicons-halflings-regular.ttf - ├── glyphicons-halflings-regular.woff - └── glyphicons-halflings-regular.woff2 -``` - -We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developer.chrome.com/devtools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme. - - - -## Bugs and feature requests - -Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new). - - -## Documentation - -Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at <http://getbootstrap.com>. The docs may also be run locally. - -### Running documentation locally - -1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v2.5.x). - - **Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems. -2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`. -3. From the root `/bootstrap` directory, run `jekyll serve` in the command line. -4. Open <http://localhost:9001> in your browser, and voilà. - -Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/). - -### Documentation for previous releases - -Documentation for v2.3.2 has been made available for the time being at <http://getbootstrap.com/2.3.2/> while folks transition to Bootstrap 3. - -[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download. - - - -## Contributing - -Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. - -Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo). - -Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>. - - - -## Community - -Get updates on Bootstrap's development and chat with the project maintainers and community members. - -- Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap). -- Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com). -- Join [the official Slack room](https://bootstrap-slack.herokuapp.com). -- Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel. -- Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)). -- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability. - - - -## Versioning - -For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible. - - - -## Creators - -**Mark Otto** - -- <https://twitter.com/mdo> -- <https://github.com/mdo> - -**Jacob Thornton** - -- <https://twitter.com/fat> -- <https://github.com/fat> - - - -## Copyright and license - -Code and documentation copyright 2011-2015 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE). diff --git a/elgg_clean/bower_components/bootstrap/bower.json b/elgg_clean/bower_components/bootstrap/bower.json deleted file mode 100644 index 686bcf1a..00000000 --- a/elgg_clean/bower_components/bootstrap/bower.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "bootstrap", - "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", - "keywords": [ - "css", - "js", - "less", - "mobile-first", - "responsive", - "front-end", - "framework", - "web" - ], - "homepage": "http://getbootstrap.com", - "license": "MIT", - "moduleType": "globals", - "main": [ - "less/bootstrap.less", - "dist/js/bootstrap.js" - ], - "ignore": [ - "/.*", - "_config.yml", - "CNAME", - "composer.json", - "CONTRIBUTING.md", - "docs", - "js/tests", - "test-infra" - ], - "dependencies": { - "jquery": ">= 1.9.1" - } -} diff --git a/elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.css b/elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.css deleted file mode 100644 index c19cd5c4..00000000 --- a/elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.css +++ /dev/null @@ -1,587 +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) - */ -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); -} -.btn-default:active, -.btn-primary:active, -.btn-success:active, -.btn-info:active, -.btn-warning:active, -.btn-danger:active, -.btn-default.active, -.btn-primary.active, -.btn-success.active, -.btn-info.active, -.btn-warning.active, -.btn-danger.active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-default.disabled, -.btn-primary.disabled, -.btn-success.disabled, -.btn-info.disabled, -.btn-warning.disabled, -.btn-danger.disabled, -.btn-default[disabled], -.btn-primary[disabled], -.btn-success[disabled], -.btn-info[disabled], -.btn-warning[disabled], -.btn-danger[disabled], -fieldset[disabled] .btn-default, -fieldset[disabled] .btn-primary, -fieldset[disabled] .btn-success, -fieldset[disabled] .btn-info, -fieldset[disabled] .btn-warning, -fieldset[disabled] .btn-danger { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default .badge, -.btn-primary .badge, -.btn-success .badge, -.btn-info .badge, -.btn-warning .badge, -.btn-danger .badge { - text-shadow: none; -} -.btn:active, -.btn.active { - background-image: none; -} -.btn-default { - text-shadow: 0 1px 0 #fff; - background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); - background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #dbdbdb; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus { - background-color: #e0e0e0; - background-position: 0 -15px; -} -.btn-default:active, -.btn-default.active { - background-color: #e0e0e0; - border-color: #dbdbdb; -} -.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: #e0e0e0; - background-image: none; -} -.btn-primary { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); - background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #245580; -} -.btn-primary:hover, -.btn-primary:focus { - background-color: #265a88; - background-position: 0 -15px; -} -.btn-primary:active, -.btn-primary.active { - background-color: #265a88; - border-color: #245580; -} -.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: #265a88; - background-image: none; -} -.btn-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #3e8f3e; -} -.btn-success:hover, -.btn-success:focus { - background-color: #419641; - background-position: 0 -15px; -} -.btn-success:active, -.btn-success.active { - background-color: #419641; - border-color: #3e8f3e; -} -.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: #419641; - background-image: none; -} -.btn-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #28a4c9; -} -.btn-info:hover, -.btn-info:focus { - background-color: #2aabd2; - background-position: 0 -15px; -} -.btn-info:active, -.btn-info.active { - background-color: #2aabd2; - border-color: #28a4c9; -} -.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: #2aabd2; - background-image: none; -} -.btn-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #e38d13; -} -.btn-warning:hover, -.btn-warning:focus { - background-color: #eb9316; - background-position: 0 -15px; -} -.btn-warning:active, -.btn-warning.active { - background-color: #eb9316; - border-color: #e38d13; -} -.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: #eb9316; - background-image: none; -} -.btn-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #b92c28; -} -.btn-danger:hover, -.btn-danger:focus { - background-color: #c12e2a; - background-position: 0 -15px; -} -.btn-danger:active, -.btn-danger.active { - background-color: #c12e2a; - border-color: #b92c28; -} -.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: #c12e2a; - background-image: none; -} -.thumbnail, -.img-thumbnail { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #e8e8e8; - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - background-color: #2e6da4; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.navbar-default { - background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); - background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); - background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255, 255, 255, .25); -} -.navbar-inverse { - background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); - background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); - background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); -} -.navbar-inverse .navbar-brand, -.navbar-inverse .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); -} -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} -@media (max-width: 767px) { - .navbar .navbar-nav .open .dropdown-menu > .active > a, - .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; - } -} -.alert { - text-shadow: 0 1px 0 rgba(255, 255, 255, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); -} -.alert-success { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); - background-repeat: repeat-x; - border-color: #b2dba1; -} -.alert-info { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); - background-repeat: repeat-x; - border-color: #9acfea; -} -.alert-warning { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); - background-repeat: repeat-x; - border-color: #f5e79e; -} -.alert-danger { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); - background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); - background-repeat: repeat-x; - border-color: #dca7a7; -} -.progress { - background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); - background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-striped { - 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); -} -.list-group { - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 #286090; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); - background-repeat: repeat-x; - border-color: #2b669a; -} -.list-group-item.active .badge, -.list-group-item.active:hover .badge, -.list-group-item.active:focus .badge { - text-shadow: none; -} -.panel { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: 0 1px 2px rgba(0, 0, 0, .05); -} -.panel-default > .panel-heading { - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.panel-primary > .panel-heading { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.panel-success > .panel-heading { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); - background-repeat: repeat-x; -} -.panel-info > .panel-heading { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); - background-repeat: repeat-x; -} -.panel-warning > .panel-heading { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); - background-repeat: repeat-x; -} -.panel-danger > .panel-heading { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); - background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); - background-repeat: repeat-x; -} -.well { - background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; - border-color: #dcdcdc; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); -} -/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.css.map b/elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.css.map deleted file mode 100644 index 75353114..00000000 --- a/elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n 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);\n 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);\n 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);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.min.css b/elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.min.css deleted file mode 100644 index 61358b13..00000000 --- a/elgg_clean/bower_components/bootstrap/dist/css/bootstrap-theme.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) - */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.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:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.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:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.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:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.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:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.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:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.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:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{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)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file diff --git a/elgg_clean/bower_components/bootstrap/dist/css/bootstrap.css b/elgg_clean/bower_components/bootstrap/dist/css/bootstrap.css deleted file mode 100644 index 680e7687..00000000 --- a/elgg_clean/bower_components/bootstrap/dist/css/bootstrap.css +++ /dev/null @@ -1,6800 +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: bold; -} -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 #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -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 { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !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^="#"]: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 { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - 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; -} -.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: 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, -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: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.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, -.h4, -h5, -.h5, -h6, -.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:hover, -a.text-primary:focus { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover, -a.text-success:focus { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover, -a.text-info:focus { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover, -a.text-warning:focus { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover, -a.text-danger:focus { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -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: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - 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; -} -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; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-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 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: #777; -} -blockquote footer:before, -blockquote small: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 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: 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: bold; - -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-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-right: 15px; - padding-left: 15px; -} -.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: 1200px) { - .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: 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 > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - 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 > 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 #ddd; -} -.table .table { - background-color: #fff; -} -.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 #ddd; -} -.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 #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - 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 > 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: #f5f5f5; -} -.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: #e8e8e8; -} -.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: #dff0d8; -} -.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 { - 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 > 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 { - 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: 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: 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[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: 30px; - } - 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: 46px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - 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-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - 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 { - 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; -} -textarea.input-sm, -select[multiple].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 textarea.form-control, -.form-group-sm select[multiple].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; -} -textarea.input-lg, -select[multiple].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 textarea.form-control, -.form-group-lg select[multiple].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; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.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: #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 .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: #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 .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: #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 .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 { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - 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.333333px; - 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: normal; - 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: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: #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: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: #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], -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: #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: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: #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], -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: #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: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: #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], -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: #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: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: #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], -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: #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: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: #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], -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: #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: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: #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], -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: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - 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:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - 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="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].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; -} -.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; - 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: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - 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 > .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-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="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-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; -} -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: 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; -} -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: 6px 12px; - font-size: 14px; - font-weight: normal; - 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="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-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: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-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: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 { - 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:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - 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:hover, -.nav-tabs > li.active > a:focus { - 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:hover, -.nav-tabs.nav-justified > .active > a:focus { - 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:hover, - .nav-tabs.nav-justified > .active > a:focus { - 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:hover, -.nav-pills > li.active > a:focus { - 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:hover, -.nav-tabs-justified > .active > a:focus { - 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:hover, - .nav-tabs-justified > .active > a:focus { - 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-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 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: -15px; - margin-left: -15px; -} -@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; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.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: -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 > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .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: 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 .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; - 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:hover, -.navbar-default .navbar-brand:focus { - 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:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - 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:hover, -.navbar-default .navbar-nav > .open > a:focus { - 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:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - 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: #555; - 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: #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:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.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: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - 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:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - 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:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - 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:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - 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: #fff; - 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: #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:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.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: #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:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 3; - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.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: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - 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:hover, -.pager li > a:focus { - 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:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - 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]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #337ab7; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.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: 12px; - font-weight: bold; - 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-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - 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 > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - 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: 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-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-striped .progress-bar, -.progress-bar-striped { - 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.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: #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-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 { - 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:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - 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:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.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: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.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: #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:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #3c763d; - 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: #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:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #31708f; - 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: #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:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #8a6d3b; - 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: #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:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #a94442; - 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: #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 > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.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 > .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-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.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: 3px; - border-top-right-radius: 3px; -} -.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: 3px; -} -.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: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.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-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.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: 3px; -} -.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: 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 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 { - 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 > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - 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 iframe, -.embed-responsive embed, -.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: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - 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.42857143px; - 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: normal; - 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: normal; - 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 > img, -.carousel-inner > .item > a > 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.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - 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:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - margin-top: -10px; -} -.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; - 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-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 { - right: 20%; - left: 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 { - display: table; - content: " "; -} -.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-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-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: 1199px) { - .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: 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; - } - th.visible-lg, - td.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; - } - 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; - } -} -/*# sourceMappingURL=bootstrap.css.map */ diff --git a/elgg_clean/bower_components/bootstrap/dist/css/bootstrap.css.map b/elgg_clean/bower_components/bootstrap/dist/css/bootstrap.css.map deleted file mode 100644 index 9f60ed2b..00000000 --- a/elgg_clean/bower_components/bootstrap/dist/css/bootstrap.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;EA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DH;AezkDC;EACE,oBAAA;Cf2kDH;Ae5kDC;EACE,WAAA;Cf8kDH;Ae/kDC;EACE,oBAAA;CfilDH;AellDC;EACE,mBAAA;CfolDH;AehlDC;EACE,YAAA;CfklDH;AelmDC;EACE,WAAA;CfomDH;AermDC;EACE,mBAAA;CfumDH;AexmDC;EACE,mBAAA;Cf0mDH;Ae3mDC;EACE,UAAA;Cf6mDH;Ae9mDC;EACE,mBAAA;CfgnDH;AejnDC;EACE,mBAAA;CfmnDH;AepnDC;EACE,UAAA;CfsnDH;AevnDC;EACE,mBAAA;CfynDH;Ae1nDC;EACE,mBAAA;Cf4nDH;Ae7nDC;EACE,UAAA;Cf+nDH;AehoDC;EACE,mBAAA;CfkoDH;AenoDC;EACE,kBAAA;CfqoDH;AejoDC;EACE,WAAA;CfmoDH;AernDC;EACE,kBAAA;CfunDH;AexnDC;EACE,0BAAA;Cf0nDH;Ae3nDC;EACE,0BAAA;Cf6nDH;Ae9nDC;EACE,iBAAA;CfgoDH;AejoDC;EACE,0BAAA;CfmoDH;AepoDC;EACE,0BAAA;CfsoDH;AevoDC;EACE,iBAAA;CfyoDH;Ae1oDC;EACE,0BAAA;Cf4oDH;Ae7oDC;EACE,0BAAA;Cf+oDH;AehpDC;EACE,iBAAA;CfkpDH;AenpDC;EACE,0BAAA;CfqpDH;AetpDC;EACE,yBAAA;CfwpDH;AezpDC;EACE,gBAAA;Cf2pDH;Aa3pDD;EElCI;IACE,YAAA;GfgsDH;EezrDD;IACE,YAAA;Gf2rDD;Ee5rDD;IACE,oBAAA;Gf8rDD;Ee/rDD;IACE,oBAAA;GfisDD;EelsDD;IACE,WAAA;GfosDD;EersDD;IACE,oBAAA;GfusDD;EexsDD;IACE,oBAAA;Gf0sDD;Ee3sDD;IACE,WAAA;Gf6sDD;Ee9sDD;IACE,oBAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,WAAA;GfstDD;EevtDD;IACE,oBAAA;GfytDD;Ee1tDD;IACE,mBAAA;Gf4tDD;Ee9sDD;IACE,YAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,oBAAA;GfstDD;EevtDD;IACE,WAAA;GfytDD;Ee1tDD;IACE,oBAAA;Gf4tDD;Ee7tDD;IACE,oBAAA;Gf+tDD;EehuDD;IACE,WAAA;GfkuDD;EenuDD;IACE,oBAAA;GfquDD;EetuDD;IACE,oBAAA;GfwuDD;EezuDD;IACE,WAAA;Gf2uDD;Ee5uDD;IACE,oBAAA;Gf8uDD;Ee/uDD;IACE,mBAAA;GfivDD;Ee7uDD;IACE,YAAA;Gf+uDD;Ee/vDD;IACE,WAAA;GfiwDD;EelwDD;IACE,mBAAA;GfowDD;EerwDD;IACE,mBAAA;GfuwDD;EexwDD;IACE,UAAA;Gf0wDD;Ee3wDD;IACE,mBAAA;Gf6wDD;Ee9wDD;IACE,mBAAA;GfgxDD;EejxDD;IACE,UAAA;GfmxDD;EepxDD;IACE,mBAAA;GfsxDD;EevxDD;IACE,mBAAA;GfyxDD;Ee1xDD;IACE,UAAA;Gf4xDD;Ee7xDD;IACE,mBAAA;Gf+xDD;EehyDD;IACE,kBAAA;GfkyDD;Ee9xDD;IACE,WAAA;GfgyDD;EelxDD;IACE,kBAAA;GfoxDD;EerxDD;IACE,0BAAA;GfuxDD;EexxDD;IACE,0BAAA;Gf0xDD;Ee3xDD;IACE,iBAAA;Gf6xDD;Ee9xDD;IACE,0BAAA;GfgyDD;EejyDD;IACE,0BAAA;GfmyDD;EepyDD;IACE,iBAAA;GfsyDD;EevyDD;IACE,0BAAA;GfyyDD;Ee1yDD;IACE,0BAAA;Gf4yDD;Ee7yDD;IACE,iBAAA;Gf+yDD;EehzDD;IACE,0BAAA;GfkzDD;EenzDD;IACE,yBAAA;GfqzDD;EetzDD;IACE,gBAAA;GfwzDD;CACF;AahzDD;EE3CI;IACE,YAAA;Gf81DH;Eev1DD;IACE,YAAA;Gfy1DD;Ee11DD;IACE,oBAAA;Gf41DD;Ee71DD;IACE,oBAAA;Gf+1DD;Eeh2DD;IACE,WAAA;Gfk2DD;Een2DD;IACE,oBAAA;Gfq2DD;Eet2DD;IACE,oBAAA;Gfw2DD;Eez2DD;IACE,WAAA;Gf22DD;Ee52DD;IACE,oBAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,WAAA;Gfo3DD;Eer3DD;IACE,oBAAA;Gfu3DD;Eex3DD;IACE,mBAAA;Gf03DD;Ee52DD;IACE,YAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,oBAAA;Gfo3DD;Eer3DD;IACE,WAAA;Gfu3DD;Eex3DD;IACE,oBAAA;Gf03DD;Ee33DD;IACE,oBAAA;Gf63DD;Ee93DD;IACE,WAAA;Gfg4DD;Eej4DD;IACE,oBAAA;Gfm4DD;Eep4DD;IACE,oBAAA;Gfs4DD;Eev4DD;IACE,WAAA;Gfy4DD;Ee14DD;IACE,oBAAA;Gf44DD;Ee74DD;IACE,mBAAA;Gf+4DD;Ee34DD;IACE,YAAA;Gf64DD;Ee75DD;IACE,WAAA;Gf+5DD;Eeh6DD;IACE,mBAAA;Gfk6DD;Een6DD;IACE,mBAAA;Gfq6DD;Eet6DD;IACE,UAAA;Gfw6DD;Eez6DD;IACE,mBAAA;Gf26DD;Ee56DD;IACE,mBAAA;Gf86DD;Ee/6DD;IACE,UAAA;Gfi7DD;Eel7DD;IACE,mBAAA;Gfo7DD;Eer7DD;IACE,mBAAA;Gfu7DD;Eex7DD;IACE,UAAA;Gf07DD;Ee37DD;IACE,mBAAA;Gf67DD;Ee97DD;IACE,kBAAA;Gfg8DD;Ee57DD;IACE,WAAA;Gf87DD;Eeh7DD;IACE,kBAAA;Gfk7DD;Een7DD;IACE,0BAAA;Gfq7DD;Eet7DD;IACE,0BAAA;Gfw7DD;Eez7DD;IACE,iBAAA;Gf27DD;Ee57DD;IACE,0BAAA;Gf87DD;Ee/7DD;IACE,0BAAA;Gfi8DD;Eel8DD;IACE,iBAAA;Gfo8DD;Eer8DD;IACE,0BAAA;Gfu8DD;Eex8DD;IACE,0BAAA;Gf08DD;Ee38DD;IACE,iBAAA;Gf68DD;Ee98DD;IACE,0BAAA;Gfg9DD;Eej9DD;IACE,yBAAA;Gfm9DD;Eep9DD;IACE,gBAAA;Gfs9DD;CACF;Aa38DD;EE9CI;IACE,YAAA;Gf4/DH;Eer/DD;IACE,YAAA;Gfu/DD;Eex/DD;IACE,oBAAA;Gf0/DD;Ee3/DD;IACE,oBAAA;Gf6/DD;Ee9/DD;IACE,WAAA;GfggED;EejgED;IACE,oBAAA;GfmgED;EepgED;IACE,oBAAA;GfsgED;EevgED;IACE,WAAA;GfygED;Ee1gED;IACE,oBAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,WAAA;GfkhED;EenhED;IACE,oBAAA;GfqhED;EethED;IACE,mBAAA;GfwhED;Ee1gED;IACE,YAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,oBAAA;GfkhED;EenhED;IACE,WAAA;GfqhED;EethED;IACE,oBAAA;GfwhED;EezhED;IACE,oBAAA;Gf2hED;Ee5hED;IACE,WAAA;Gf8hED;Ee/hED;IACE,oBAAA;GfiiED;EeliED;IACE,oBAAA;GfoiED;EeriED;IACE,WAAA;GfuiED;EexiED;IACE,oBAAA;Gf0iED;Ee3iED;IACE,mBAAA;Gf6iED;EeziED;IACE,YAAA;Gf2iED;Ee3jED;IACE,WAAA;Gf6jED;Ee9jED;IACE,mBAAA;GfgkED;EejkED;IACE,mBAAA;GfmkED;EepkED;IACE,UAAA;GfskED;EevkED;IACE,mBAAA;GfykED;Ee1kED;IACE,mBAAA;Gf4kED;Ee7kED;IACE,UAAA;Gf+kED;EehlED;IACE,mBAAA;GfklED;EenlED;IACE,mBAAA;GfqlED;EetlED;IACE,UAAA;GfwlED;EezlED;IACE,mBAAA;Gf2lED;Ee5lED;IACE,kBAAA;Gf8lED;Ee1lED;IACE,WAAA;Gf4lED;Ee9kED;IACE,kBAAA;GfglED;EejlED;IACE,0BAAA;GfmlED;EeplED;IACE,0BAAA;GfslED;EevlED;IACE,iBAAA;GfylED;Ee1lED;IACE,0BAAA;Gf4lED;Ee7lED;IACE,0BAAA;Gf+lED;EehmED;IACE,iBAAA;GfkmED;EenmED;IACE,0BAAA;GfqmED;EetmED;IACE,0BAAA;GfwmED;EezmED;IACE,iBAAA;Gf2mED;Ee5mED;IACE,0BAAA;Gf8mED;Ee/mED;IACE,yBAAA;GfinED;EelnED;IACE,gBAAA;GfonED;CACF;AgBxrED;EACE,8BAAA;ChB0rED;AgBxrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChB0rED;AgBxrED;EACE,iBAAA;ChB0rED;AgBprED;EACE,YAAA;EACA,gBAAA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","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n 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');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\2a\";\n}\n.glyphicon-plus:before {\n content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #ffffff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #ffffff;\n background-color: #333333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.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 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.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 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .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 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .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 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .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 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #dddddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #dddddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #dddddd;\n}\n.table .table {\n background-color: #ffffff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #dddddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #ffffff;\n background-image: none;\n border: 1px solid #cccccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.333333px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333333;\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default .badge {\n color: #ffffff;\n background-color: #333333;\n}\n.btn-primary {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #ffffff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #ffffff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #ffffff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #ffffff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.btn-success {\n color: #ffffff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #ffffff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #ffffff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #ffffff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #ffffff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #ffffff;\n}\n.btn-info {\n color: #ffffff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #ffffff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #ffffff;\n}\n.btn-warning {\n color: #ffffff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #ffffff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #ffffff;\n}\n.btn-danger {\n color: #ffffff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #ffffff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #ffffff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #ffffff;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #ffffff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-bottom-left-radius: 4px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #dddddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #dddddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #ffffff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #dddddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #dddddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777777;\n}\n.navbar-default .navbar-link:hover {\n color: #333333;\n}\n.navbar-default .btn-link {\n color: #777777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #cccccc;\n}\n.navbar-inverse {\n background-color: #222222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #ffffff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #ffffff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #ffffff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #ffffff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #cccccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 3;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #dddddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #ffffff;\n border-color: #dddddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #ffffff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #ffffff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #ffffff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #ffffff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n 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);\n 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);\n 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);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n 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);\n 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);\n 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);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n 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);\n 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);\n 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);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n 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);\n 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);\n 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);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n 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);\n 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);\n 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);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #ffffff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #dddddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #dddddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #dddddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #dddddd;\n}\n.panel-default {\n border-color: #dddddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #dddddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #dddddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #dddddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000000;\n text-shadow: 0 1px 0 #ffffff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #ffffff;\n border: 1px solid #999999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n min-height: 16.42857143px;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #ffffff;\n text-align: center;\n background-color: #000000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #ffffff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #ffffff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #ffffff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #ffffff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #ffffff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #ffffff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #ffffff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @grid-float-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n }\n\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 8.3, iOS doesn't support `datetime` or `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n &.form-control {\n line-height: @input-height-base;\n }\n\n &.input-sm,\n .input-group-sm & {\n line-height: @input-height-small;\n }\n\n &.input-lg,\n .input-group-lg & {\n line-height: @input-height-large;\n }\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because <label>s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n &[disabled],\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used directly on <label>s\n.radio-inline,\n.checkbox-inline {\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used on elements with <label> descendants\n.radio,\n.checkbox {\n &.disabled,\n fieldset[disabled] & {\n label {\n cursor: @cursor-disabled;\n }\n }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n // Size it appropriately next to real form controls\n padding-top: (@padding-base-vertical + 1);\n padding-bottom: (@padding-base-vertical + 1);\n // Remove default margin from `p`\n margin-bottom: 0;\n min-height: (@line-height-computed + @font-size-base);\n\n &.input-lg,\n &.input-sm {\n padding-left: 0;\n padding-right: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n .form-control {\n height: @input-height-small;\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n border-radius: @input-border-radius-small;\n }\n select.form-control {\n height: @input-height-small;\n line-height: @input-height-small;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-small;\n min-height: (@line-height-computed + @font-size-small);\n padding: (@padding-small-vertical + 1) @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n }\n}\n\n.input-lg {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n .form-control {\n height: @input-height-large;\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n border-radius: @input-border-radius-large;\n }\n select.form-control {\n height: @input-height-large;\n line-height: @input-height-large;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-large;\n min-height: (@line-height-computed + @font-size-large);\n padding: (@padding-large-vertical + 1) @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2; // Ensure icon is above input groups\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: @input-height-large;\n height: @input-height-large;\n line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: @input-height-small;\n height: @input-height-small;\n line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n & ~ .form-control-feedback {\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n }\n &.sr-only ~ .form-control-feedback {\n top: 0;\n }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-static {\n display: inline-block;\n }\n\n .input-group {\n display: inline-table;\n vertical-align: middle;\n\n .input-group-addon,\n .input-group-btn,\n .form-control {\n width: auto;\n }\n }\n\n // Input groups need that 100% width though\n .input-group > .form-control {\n width: 100%;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match.\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n\n label {\n padding-left: 0;\n }\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of radios and checkboxes\n //\n // Labels also get some reset styles, but that is scoped to a media query below.\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n // Reset spacing and right align labels, but scope to media queries so that\n // labels on narrow viewports stack the same as a default form example.\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n right: floor((@grid-gutter-width / 2));\n }\n\n // Form group sizes\n //\n // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n // inputs and labels within a `.form-group`.\n .form-group-lg {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: ((@padding-large-vertical * @line-height-large) + 1);\n font-size: @font-size-large;\n }\n }\n }\n .form-group-sm {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-small-vertical + 1);\n font-size: @font-size-small;\n }\n }\n }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `<a>` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @btn-border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @btn-border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a&,\n button& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a,\n > small,\n > .small,\n > small > a,\n > .small > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n > .panel-heading + .panel-collapse > .list-group {\n .list-group-item:first-child {\n .border-top-radius(0);\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-small;\n\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n",".reset-text() {\n font-family: @font-family-base;\n // We deliberately do NOT reset font-size.\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: @line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-base;\n\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n .transition-transform(~'0.6s ease-in-out');\n .backface-visibility(~'hidden');\n .perspective(1000px);\n\n &.next,\n &.active.right {\n .translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n .translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n .translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: -15px;\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: -15px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table !important; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n"]} \ No newline at end of file diff --git a/elgg_clean/bower_components/bootstrap/dist/css/bootstrap.min.css b/elgg_clean/bower_components/bootstrap/dist/css/bootstrap.min.css deleted file mode 100644 index d65c66b1..00000000 --- a/elgg_clean/bower_components/bootstrap/dist/css/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/elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot b/elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a4953fff68df523aa7656497ee339d6026d64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20127 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 diff --git a/elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg b/elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index 94fb5490..00000000 --- a/elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,288 +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="glyphicons_halflingsregular" horiz-adv-x="1200" > -<font-face units-per-em="1200" ascent="960" descent="-240" /> -<missing-glyph horiz-adv-x="500" /> -<glyph horiz-adv-x="0" /> -<glyph horiz-adv-x="400" /> -<glyph unicode=" " /> -<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" /> -<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode=" " /> -<glyph unicode="¥" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" /> -<glyph unicode=" " horiz-adv-x="650" /> -<glyph unicode=" " horiz-adv-x="1300" /> -<glyph unicode=" " horiz-adv-x="650" /> -<glyph unicode=" " horiz-adv-x="1300" /> -<glyph unicode=" " horiz-adv-x="433" /> -<glyph unicode=" " horiz-adv-x="325" /> -<glyph unicode=" " horiz-adv-x="216" /> -<glyph unicode=" " horiz-adv-x="216" /> -<glyph unicode=" " horiz-adv-x="162" /> -<glyph unicode=" " horiz-adv-x="260" /> -<glyph unicode=" " horiz-adv-x="72" /> -<glyph unicode=" " horiz-adv-x="260" /> -<glyph unicode=" " horiz-adv-x="325" /> -<glyph unicode="€" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" /> -<glyph unicode="₽" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" /> -<glyph unicode="−" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="⌛" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" /> -<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" /> -<glyph unicode="☁" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" /> -<glyph unicode="⛺" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " /> -<glyph unicode="✉" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" /> -<glyph unicode="✏" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" /> -<glyph unicode="" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" /> -<glyph unicode="" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" /> -<glyph unicode="" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" /> -<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" /> -<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" /> -<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" /> -<glyph unicode="" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" /> -<glyph unicode="" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" /> -<glyph unicode="" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" /> -<glyph unicode="" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" /> -<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" /> -<glyph unicode="" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" /> -<glyph unicode="" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" /> -<glyph unicode="" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" /> -<glyph unicode="" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" /> -<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" /> -<glyph unicode="" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> -<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" /> -<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" /> -<glyph unicode="" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" /> -<glyph unicode="" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" /> -<glyph unicode="" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" /> -<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" /> -<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" /> -<glyph unicode="" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" /> -<glyph unicode="" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" /> -<glyph unicode="" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" /> -<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> -<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> -<glyph unicode="" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" /> -<glyph unicode="" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" /> -<glyph unicode="" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" /> -<glyph unicode="" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" /> -<glyph unicode="" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" /> -<glyph unicode="" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" /> -<glyph unicode="" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" /> -<glyph unicode="" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" /> -<glyph unicode="" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" /> -<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" /> -<glyph unicode="" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" /> -<glyph unicode="" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" /> -<glyph unicode="" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" /> -<glyph unicode="" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" /> -<glyph unicode="" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" /> -<glyph unicode="" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" /> -<glyph unicode="" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" /> -<glyph unicode="" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" /> -<glyph unicode="" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" /> -<glyph unicode="" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" /> -<glyph unicode="" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" /> -<glyph unicode="" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" /> -<glyph unicode="" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" /> -<glyph unicode="" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" /> -<glyph unicode="" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" /> -<glyph unicode="" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" /> -<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" /> -<glyph unicode="" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" /> -<glyph unicode="" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" /> -<glyph unicode="" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" /> -<glyph unicode="" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" /> -<glyph unicode="" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> -<glyph unicode="" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> -<glyph unicode="" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" /> -<glyph unicode="" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" /> -<glyph unicode="" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" /> -<glyph unicode="" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" /> -<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" /> -<glyph unicode="" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" /> -<glyph unicode="" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" /> -<glyph unicode="" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" /> -<glyph unicode="" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" /> -<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" /> -<glyph unicode="" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" /> -<glyph unicode="" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" /> -<glyph unicode="" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" /> -<glyph unicode="" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" /> -<glyph unicode="" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" /> -<glyph unicode="" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" /> -<glyph unicode="" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" /> -<glyph unicode="" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" /> -<glyph unicode="" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" /> -<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " /> -<glyph unicode="" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" /> -<glyph unicode="" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" /> -<glyph unicode="" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" /> -<glyph unicode="" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" /> -<glyph unicode="" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" /> -<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" /> -<glyph unicode="" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" /> -<glyph unicode="" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" /> -<glyph unicode="" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" /> -<glyph unicode="" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" /> -<glyph unicode="" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" /> -<glyph unicode="" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" /> -<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> -<glyph unicode="" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" /> -<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" /> -<glyph unicode="" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> -<glyph unicode="" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" /> -<glyph unicode="" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> -<glyph unicode="" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" /> -<glyph unicode="" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" /> -<glyph unicode="" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" /> -<glyph unicode="" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" /> -<glyph unicode="" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" /> -<glyph unicode="" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" /> -<glyph unicode="" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" /> -<glyph unicode="" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" /> -<glyph unicode="" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" /> -<glyph unicode="" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" /> -<glyph unicode="" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" /> -<glyph unicode="" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" /> -<glyph unicode="" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" /> -<glyph unicode="" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" /> -<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" /> -<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" /> -<glyph unicode="" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" /> -<glyph unicode="" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" /> -<glyph unicode="" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" /> -<glyph unicode="" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" /> -<glyph unicode="" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" /> -<glyph unicode="" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" /> -<glyph unicode="" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" /> -<glyph unicode="" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" /> -<glyph unicode="" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" /> -<glyph unicode="" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" /> -<glyph unicode="" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" /> -<glyph unicode="" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" /> -<glyph unicode="" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" /> -<glyph unicode="" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" /> -<glyph unicode="" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " /> -<glyph unicode="" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" /> -<glyph unicode="" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" /> -<glyph unicode="" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" /> -<glyph unicode="" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> -<glyph unicode="" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> -<glyph unicode="" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" /> -<glyph unicode="" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> -<glyph unicode="" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> -<glyph unicode="" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" /> -<glyph unicode="" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" /> -<glyph unicode="" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" /> -<glyph unicode="" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" /> -<glyph unicode="" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" /> -<glyph unicode="" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" /> -<glyph unicode="" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" /> -<glyph unicode="" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" /> -<glyph unicode="" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" /> -<glyph unicode="" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" /> -<glyph unicode="" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" /> -<glyph unicode="" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" /> -<glyph unicode="" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" /> -<glyph unicode="" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" /> -<glyph unicode="" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" /> -<glyph unicode="" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" /> -<glyph unicode="" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" /> -<glyph unicode="" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" /> -<glyph unicode="" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" /> -<glyph unicode="" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" /> -<glyph unicode="" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" /> -<glyph unicode="" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" /> -<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" /> -<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" /> -</font> -</defs></svg> \ No newline at end of file diff --git a/elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf b/elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc609ab6f21774de0cb7e01360095584f65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45404 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 diff --git a/elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff b/elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e612858f802245ddcbf59788a0db942224bab35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23424 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 diff --git a/elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 b/elgg_clean/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b54c3751a6d9adb44c8e3a45ba5a73b77f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18028 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	>4<kI*4>|3zXFgSkS#0b5#?_s^G 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 diff --git a/elgg_clean/bower_components/bootstrap/dist/js/bootstrap.js b/elgg_clean/bower_components/bootstrap/dist/js/bootstrap.js deleted file mode 100644 index 5debfd7d..00000000 --- a/elgg_clean/bower_components/bootstrap/dist/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/elgg_clean/bower_components/bootstrap/dist/js/bootstrap.min.js b/elgg_clean/bower_components/bootstrap/dist/js/bootstrap.min.js deleted file mode 100644 index 133aeecb..00000000 --- a/elgg_clean/bower_components/bootstrap/dist/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/elgg_clean/bower_components/bootstrap/dist/js/npm.js b/elgg_clean/bower_components/bootstrap/dist/js/npm.js deleted file mode 100644 index bf6aa806..00000000 --- a/elgg_clean/bower_components/bootstrap/dist/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/elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot b/elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a4953fff68df523aa7656497ee339d6026d64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20127 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 diff --git a/elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg b/elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index 94fb5490..00000000 --- a/elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,288 +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="glyphicons_halflingsregular" horiz-adv-x="1200" > -<font-face units-per-em="1200" ascent="960" descent="-240" /> -<missing-glyph horiz-adv-x="500" /> -<glyph horiz-adv-x="0" /> -<glyph horiz-adv-x="400" /> -<glyph unicode=" " /> -<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" /> -<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode=" " /> -<glyph unicode="¥" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" /> -<glyph unicode=" " horiz-adv-x="650" /> -<glyph unicode=" " horiz-adv-x="1300" /> -<glyph unicode=" " horiz-adv-x="650" /> -<glyph unicode=" " horiz-adv-x="1300" /> -<glyph unicode=" " horiz-adv-x="433" /> -<glyph unicode=" " horiz-adv-x="325" /> -<glyph unicode=" " horiz-adv-x="216" /> -<glyph unicode=" " horiz-adv-x="216" /> -<glyph unicode=" " horiz-adv-x="162" /> -<glyph unicode=" " horiz-adv-x="260" /> -<glyph unicode=" " horiz-adv-x="72" /> -<glyph unicode=" " horiz-adv-x="260" /> -<glyph unicode=" " horiz-adv-x="325" /> -<glyph unicode="€" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" /> -<glyph unicode="₽" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" /> -<glyph unicode="−" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="⌛" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" /> -<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" /> -<glyph unicode="☁" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" /> -<glyph unicode="⛺" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " /> -<glyph unicode="✉" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" /> -<glyph unicode="✏" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" /> -<glyph unicode="" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" /> -<glyph unicode="" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" /> -<glyph unicode="" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" /> -<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" /> -<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" /> -<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" /> -<glyph unicode="" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" /> -<glyph unicode="" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" /> -<glyph unicode="" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" /> -<glyph unicode="" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" /> -<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" /> -<glyph unicode="" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" /> -<glyph unicode="" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" /> -<glyph unicode="" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" /> -<glyph unicode="" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" /> -<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" /> -<glyph unicode="" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> -<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" /> -<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" /> -<glyph unicode="" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" /> -<glyph unicode="" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" /> -<glyph unicode="" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" /> -<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" /> -<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" /> -<glyph unicode="" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" /> -<glyph unicode="" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" /> -<glyph unicode="" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" /> -<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> -<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> -<glyph unicode="" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" /> -<glyph unicode="" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" /> -<glyph unicode="" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" /> -<glyph unicode="" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" /> -<glyph unicode="" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" /> -<glyph unicode="" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" /> -<glyph unicode="" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" /> -<glyph unicode="" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" /> -<glyph unicode="" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" /> -<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" /> -<glyph unicode="" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" /> -<glyph unicode="" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" /> -<glyph unicode="" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" /> -<glyph unicode="" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" /> -<glyph unicode="" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" /> -<glyph unicode="" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" /> -<glyph unicode="" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" /> -<glyph unicode="" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" /> -<glyph unicode="" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" /> -<glyph unicode="" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" /> -<glyph unicode="" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" /> -<glyph unicode="" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" /> -<glyph unicode="" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" /> -<glyph unicode="" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" /> -<glyph unicode="" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" /> -<glyph unicode="" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" /> -<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" /> -<glyph unicode="" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" /> -<glyph unicode="" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" /> -<glyph unicode="" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" /> -<glyph unicode="" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" /> -<glyph unicode="" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> -<glyph unicode="" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> -<glyph unicode="" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" /> -<glyph unicode="" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" /> -<glyph unicode="" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" /> -<glyph unicode="" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" /> -<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" /> -<glyph unicode="" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" /> -<glyph unicode="" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" /> -<glyph unicode="" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" /> -<glyph unicode="" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" /> -<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" /> -<glyph unicode="" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" /> -<glyph unicode="" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" /> -<glyph unicode="" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" /> -<glyph unicode="" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" /> -<glyph unicode="" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" /> -<glyph unicode="" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" /> -<glyph unicode="" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" /> -<glyph unicode="" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" /> -<glyph unicode="" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" /> -<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " /> -<glyph unicode="" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" /> -<glyph unicode="" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" /> -<glyph unicode="" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" /> -<glyph unicode="" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" /> -<glyph unicode="" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" /> -<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" /> -<glyph unicode="" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" /> -<glyph unicode="" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" /> -<glyph unicode="" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" /> -<glyph unicode="" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" /> -<glyph unicode="" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" /> -<glyph unicode="" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" /> -<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> -<glyph unicode="" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" /> -<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" /> -<glyph unicode="" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> -<glyph unicode="" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" /> -<glyph unicode="" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> -<glyph unicode="" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" /> -<glyph unicode="" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" /> -<glyph unicode="" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" /> -<glyph unicode="" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" /> -<glyph unicode="" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" /> -<glyph unicode="" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" /> -<glyph unicode="" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" /> -<glyph unicode="" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" /> -<glyph unicode="" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" /> -<glyph unicode="" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" /> -<glyph unicode="" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" /> -<glyph unicode="" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" /> -<glyph unicode="" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" /> -<glyph unicode="" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" /> -<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" /> -<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" /> -<glyph unicode="" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" /> -<glyph unicode="" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" /> -<glyph unicode="" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" /> -<glyph unicode="" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" /> -<glyph unicode="" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" /> -<glyph unicode="" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" /> -<glyph unicode="" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" /> -<glyph unicode="" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" /> -<glyph unicode="" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" /> -<glyph unicode="" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" /> -<glyph unicode="" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" /> -<glyph unicode="" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" /> -<glyph unicode="" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" /> -<glyph unicode="" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" /> -<glyph unicode="" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " /> -<glyph unicode="" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" /> -<glyph unicode="" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" /> -<glyph unicode="" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" /> -<glyph unicode="" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> -<glyph unicode="" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> -<glyph unicode="" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" /> -<glyph unicode="" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> -<glyph unicode="" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> -<glyph unicode="" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" /> -<glyph unicode="" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" /> -<glyph unicode="" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" /> -<glyph unicode="" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" /> -<glyph unicode="" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" /> -<glyph unicode="" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" /> -<glyph unicode="" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" /> -<glyph unicode="" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" /> -<glyph unicode="" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" /> -<glyph unicode="" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" /> -<glyph unicode="" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" /> -<glyph unicode="" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" /> -<glyph unicode="" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" /> -<glyph unicode="" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" /> -<glyph unicode="" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" /> -<glyph unicode="" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" /> -<glyph unicode="" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" /> -<glyph unicode="" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" /> -<glyph unicode="" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" /> -<glyph unicode="" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" /> -<glyph unicode="" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" /> -<glyph unicode="" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" /> -<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" /> -<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" /> -</font> -</defs></svg> \ No newline at end of file diff --git a/elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf b/elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc609ab6f21774de0cb7e01360095584f65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45404 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 diff --git a/elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff b/elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e612858f802245ddcbf59788a0db942224bab35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23424 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 diff --git a/elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/elgg_clean/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b54c3751a6d9adb44c8e3a45ba5a73b77f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18028 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	>4<kI*4>|3zXFgSkS#0b5#?_s^G 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 diff --git a/elgg_clean/bower_components/bootstrap/grunt/.jshintrc b/elgg_clean/bower_components/bootstrap/grunt/.jshintrc deleted file mode 100644 index 0ea0495e..00000000 --- a/elgg_clean/bower_components/bootstrap/grunt/.jshintrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends" : "../js/.jshintrc", - "asi" : false, - "browser" : false, - "es3" : false, - "node" : true -} diff --git a/elgg_clean/bower_components/bootstrap/grunt/bs-commonjs-generator.js b/elgg_clean/bower_components/bootstrap/grunt/bs-commonjs-generator.js deleted file mode 100644 index 0b4ebbfc..00000000 --- a/elgg_clean/bower_components/bootstrap/grunt/bs-commonjs-generator.js +++ /dev/null @@ -1,30 +0,0 @@ -/*! - * Bootstrap Grunt task for the CommonJS module generation - * http://getbootstrap.com - * Copyright 2014-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -'use strict'; - -var fs = require('fs'); -var path = require('path'); - -var COMMONJS_BANNER = '// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n'; - -module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath) { - var destDir = path.dirname(destFilepath); - - function srcPathToDestRequire(srcFilepath) { - var requirePath = path.relative(destDir, srcFilepath).replace(/\\/g, '/'); - return 'require(\'' + requirePath + '\')'; - } - - var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n'); - try { - fs.writeFileSync(destFilepath, moduleOutputJs); - } catch (err) { - grunt.fail.warn(err); - } - grunt.log.writeln('File ' + destFilepath.cyan + ' created.'); -}; diff --git a/elgg_clean/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js b/elgg_clean/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js deleted file mode 100644 index af2a82e2..00000000 --- a/elgg_clean/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js +++ /dev/null @@ -1,42 +0,0 @@ -/*! - * Bootstrap Grunt task for Glyphicons data generation - * http://getbootstrap.com - * Copyright 2014-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -'use strict'; - -var fs = require('fs'); - -module.exports = function generateGlyphiconsData(grunt) { - // Pass encoding, utf8, so `readFileSync` will return a string instead of a - // buffer - var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8'); - var glyphiconsLines = glyphiconsFile.split('\n'); - - // Use any line that starts with ".glyphicon-" and capture the class name - var iconClassName = /^\.(glyphicon-[a-zA-Z0-9-]+)/; - var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.**\n' + - '# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n'; - var glyphiconsYml = 'docs/_data/glyphicons.yml'; - for (var i = 0, len = glyphiconsLines.length; i < len; i++) { - var match = glyphiconsLines[i].match(iconClassName); - - if (match !== null) { - glyphiconsData += '- ' + match[1] + '\n'; - } - } - - // Create the `_data` directory if it doesn't already exist - if (!fs.existsSync('docs/_data')) { - fs.mkdirSync('docs/_data'); - } - - try { - fs.writeFileSync(glyphiconsYml, glyphiconsData); - } catch (err) { - grunt.fail.warn(err); - } - grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.'); -}; diff --git a/elgg_clean/bower_components/bootstrap/grunt/bs-lessdoc-parser.js b/elgg_clean/bower_components/bootstrap/grunt/bs-lessdoc-parser.js deleted file mode 100644 index 5a9ed2b3..00000000 --- a/elgg_clean/bower_components/bootstrap/grunt/bs-lessdoc-parser.js +++ /dev/null @@ -1,237 +0,0 @@ -/*! - * Bootstrap Grunt task for parsing Less docstrings - * http://getbootstrap.com - * Copyright 2014-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -'use strict'; - -var Markdown = require('markdown-it'); - -function markdown2html(markdownString) { - var md = new Markdown(); - - // the slice removes the <p>...</p> wrapper output by Markdown processor - return md.render(markdownString.trim()).slice(3, -5); -} - - -/* -Mini-language: - //== This is a normal heading, which starts a section. Sections group variables together. - //## Optional description for the heading - - //=== This is a subheading. - - //** Optional description for the following variable. You **can** use Markdown in descriptions to discuss `<html>` stuff. - @foo: #fff; - - //-- This is a heading for a section whose variables shouldn't be customizable - - All other lines are ignored completely. -*/ - - -var CUSTOMIZABLE_HEADING = /^[/]{2}={2}(.*)$/; -var UNCUSTOMIZABLE_HEADING = /^[/]{2}-{2}(.*)$/; -var SUBSECTION_HEADING = /^[/]{2}={3}(.*)$/; -var SECTION_DOCSTRING = /^[/]{2}#{2}(.+)$/; -var VAR_ASSIGNMENT = /^(@[a-zA-Z0-9_-]+):[ ]*([^ ;][^;]*);[ ]*$/; -var VAR_DOCSTRING = /^[/]{2}[*]{2}(.+)$/; - -function Section(heading, customizable) { - this.heading = heading.trim(); - this.id = this.heading.replace(/\s+/g, '-').toLowerCase(); - this.customizable = customizable; - this.docstring = null; - this.subsections = []; -} - -Section.prototype.addSubSection = function (subsection) { - this.subsections.push(subsection); -}; - -function SubSection(heading) { - this.heading = heading.trim(); - this.id = this.heading.replace(/\s+/g, '-').toLowerCase(); - this.variables = []; -} - -SubSection.prototype.addVar = function (variable) { - this.variables.push(variable); -}; - -function VarDocstring(markdownString) { - this.html = markdown2html(markdownString); -} - -function SectionDocstring(markdownString) { - this.html = markdown2html(markdownString); -} - -function Variable(name, defaultValue) { - this.name = name; - this.defaultValue = defaultValue; - this.docstring = null; -} - -function Tokenizer(fileContent) { - this._lines = fileContent.split('\n'); - this._next = undefined; -} - -Tokenizer.prototype.unshift = function (token) { - if (this._next !== undefined) { - throw new Error('Attempted to unshift twice!'); - } - this._next = token; -}; - -Tokenizer.prototype._shift = function () { - // returning null signals EOF - // returning undefined means the line was ignored - if (this._next !== undefined) { - var result = this._next; - this._next = undefined; - return result; - } - if (this._lines.length <= 0) { - return null; - } - var line = this._lines.shift(); - var match = null; - match = SUBSECTION_HEADING.exec(line); - if (match !== null) { - return new SubSection(match[1]); - } - match = CUSTOMIZABLE_HEADING.exec(line); - if (match !== null) { - return new Section(match[1], true); - } - match = UNCUSTOMIZABLE_HEADING.exec(line); - if (match !== null) { - return new Section(match[1], false); - } - match = SECTION_DOCSTRING.exec(line); - if (match !== null) { - return new SectionDocstring(match[1]); - } - match = VAR_DOCSTRING.exec(line); - if (match !== null) { - return new VarDocstring(match[1]); - } - var commentStart = line.lastIndexOf('//'); - var varLine = commentStart === -1 ? line : line.slice(0, commentStart); - match = VAR_ASSIGNMENT.exec(varLine); - if (match !== null) { - return new Variable(match[1], match[2]); - } - return undefined; -}; - -Tokenizer.prototype.shift = function () { - while (true) { - var result = this._shift(); - if (result === undefined) { - continue; - } - return result; - } -}; - -function Parser(fileContent) { - this._tokenizer = new Tokenizer(fileContent); -} - -Parser.prototype.parseFile = function () { - var sections = []; - while (true) { - var section = this.parseSection(); - if (section === null) { - if (this._tokenizer.shift() !== null) { - throw new Error('Unexpected unparsed section of file remains!'); - } - return sections; - } - sections.push(section); - } -}; - -Parser.prototype.parseSection = function () { - var section = this._tokenizer.shift(); - if (section === null) { - return null; - } - if (!(section instanceof Section)) { - throw new Error('Expected section heading; got: ' + JSON.stringify(section)); - } - var docstring = this._tokenizer.shift(); - if (docstring instanceof SectionDocstring) { - section.docstring = docstring; - } else { - this._tokenizer.unshift(docstring); - } - this.parseSubSections(section); - - return section; -}; - -Parser.prototype.parseSubSections = function (section) { - while (true) { - var subsection = this.parseSubSection(); - if (subsection === null) { - if (section.subsections.length === 0) { - // Presume an implicit initial subsection - subsection = new SubSection(''); - this.parseVars(subsection); - } else { - break; - } - } - section.addSubSection(subsection); - } - - if (section.subsections.length === 1 && !section.subsections[0].heading && section.subsections[0].variables.length === 0) { - // Ignore lone empty implicit subsection - section.subsections = []; - } -}; - -Parser.prototype.parseSubSection = function () { - var subsection = this._tokenizer.shift(); - if (subsection instanceof SubSection) { - this.parseVars(subsection); - return subsection; - } - this._tokenizer.unshift(subsection); - return null; -}; - -Parser.prototype.parseVars = function (subsection) { - while (true) { - var variable = this.parseVar(); - if (variable === null) { - return; - } - subsection.addVar(variable); - } -}; - -Parser.prototype.parseVar = function () { - var docstring = this._tokenizer.shift(); - if (!(docstring instanceof VarDocstring)) { - this._tokenizer.unshift(docstring); - docstring = null; - } - var variable = this._tokenizer.shift(); - if (variable instanceof Variable) { - variable.docstring = docstring; - return variable; - } - this._tokenizer.unshift(variable); - return null; -}; - - -module.exports = Parser; diff --git a/elgg_clean/bower_components/bootstrap/grunt/bs-raw-files-generator.js b/elgg_clean/bower_components/bootstrap/grunt/bs-raw-files-generator.js deleted file mode 100644 index 39224e4e..00000000 --- a/elgg_clean/bower_components/bootstrap/grunt/bs-raw-files-generator.js +++ /dev/null @@ -1,44 +0,0 @@ -/*! - * Bootstrap Grunt task for generating raw-files.min.js for the Customizer - * http://getbootstrap.com - * Copyright 2014-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -'use strict'; - -var fs = require('fs'); -var btoa = require('btoa'); -var glob = require('glob'); - -function getFiles(type) { - var files = {}; - var recursive = type === 'less'; - var globExpr = recursive ? '/**/*' : '/*'; - glob.sync(type + globExpr) - .filter(function (path) { - return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path); - }) - .forEach(function (fullPath) { - var relativePath = fullPath.replace(/^[^/]+\//, ''); - files[relativePath] = type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'); - }); - return 'var __' + type + ' = ' + JSON.stringify(files) + '\n'; -} - -module.exports = function generateRawFilesJs(grunt, banner) { - if (!banner) { - banner = ''; - } - var dirs = ['js', 'less', 'fonts']; - var files = banner + dirs.map(getFiles).reduce(function (combined, file) { - return combined + file; - }, ''); - var rawFilesJs = 'docs/assets/js/raw-files.min.js'; - try { - fs.writeFileSync(rawFilesJs, files); - } catch (err) { - grunt.fail.warn(err); - } - grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.'); -}; diff --git a/elgg_clean/bower_components/bootstrap/grunt/configBridge.json b/elgg_clean/bower_components/bootstrap/grunt/configBridge.json deleted file mode 100644 index 8ce4c3d9..00000000 --- a/elgg_clean/bower_components/bootstrap/grunt/configBridge.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "paths": { - "customizerJs": [ - "../assets/js/vendor/autoprefixer.js", - "../assets/js/vendor/less.min.js", - "../assets/js/vendor/jszip.min.js", - "../assets/js/vendor/uglify.min.js", - "../assets/js/vendor/Blob.js", - "../assets/js/vendor/FileSaver.js", - "../assets/js/raw-files.min.js", - "../assets/js/src/customizer.js" - ], - "docsJs": [ - "../assets/js/vendor/holder.min.js", - "../assets/js/vendor/ZeroClipboard.min.js", - "../assets/js/vendor/anchor.js", - "../assets/js/src/application.js" - ] - }, - "config": { - "autoprefixerBrowsers": [ - "Android 2.3", - "Android >= 4", - "Chrome >= 20", - "Firefox >= 24", - "Explorer >= 8", - "iOS >= 6", - "Opera >= 12", - "Safari >= 6" - ], - "jqueryCheck": [ - "if (typeof jQuery === 'undefined') {", - " throw new Error('Bootstrap\\'s JavaScript requires jQuery')", - "}\n" - ], - "jqueryVersionCheck": [ - "+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);\n\n" - ] - } -} \ No newline at end of file diff --git a/elgg_clean/bower_components/bootstrap/grunt/sauce_browsers.yml b/elgg_clean/bower_components/bootstrap/grunt/sauce_browsers.yml deleted file mode 100644 index 6267f35a..00000000 --- a/elgg_clean/bower_components/bootstrap/grunt/sauce_browsers.yml +++ /dev/null @@ -1,82 +0,0 @@ -[ - # Docs: https://saucelabs.com/docs/platforms/webdriver - - { - browserName: "safari", - platform: "OS X 10.10" - }, - { - browserName: "chrome", - platform: "OS X 10.10" - }, - { - browserName: "firefox", - platform: "OS X 10.10" - }, - - # Mac Opera not currently supported by Sauce Labs - - { - browserName: "internet explorer", - version: "11", - platform: "Windows 8.1" - }, - { - browserName: "internet explorer", - version: "10", - platform: "Windows 8" - }, - { - browserName: "internet explorer", - version: "9", - platform: "Windows 7" - }, - { - browserName: "internet explorer", - version: "8", - platform: "Windows 7" - }, - - # { # Unofficial - # browserName: "internet explorer", - # version: "7", - # platform: "Windows XP" - # }, - - { - browserName: "chrome", - platform: "Windows 8.1" - }, - { - browserName: "firefox", - platform: "Windows 8.1" - }, - - # Win Opera 15+ not currently supported by Sauce Labs - - { - browserName: "iphone", - platform: "OS X 10.10", - version: "8.2" - }, - - # iOS Chrome not currently supported by Sauce Labs - - # Linux (unofficial) - { - browserName: "chrome", - platform: "Linux" - }, - { - browserName: "firefox", - platform: "Linux" - } - - # Android Chrome not currently supported by Sauce Labs - - # { # Android Browser (super-unofficial) - # browserName: "android", - # version: "4.0", - # platform: "Linux" - # } -] diff --git a/elgg_clean/bower_components/bootstrap/js/.jscsrc b/elgg_clean/bower_components/bootstrap/js/.jscsrc deleted file mode 100644 index 9544d2d2..00000000 --- a/elgg_clean/bower_components/bootstrap/js/.jscsrc +++ /dev/null @@ -1,42 +0,0 @@ -{ - "disallowEmptyBlocks": true, - "disallowKeywords": ["with"], - "disallowMixedSpacesAndTabs": true, - "disallowMultipleLineStrings": true, - "disallowMultipleVarDecl": true, - "disallowQuotedKeysInObjects": "allButReserved", - "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], - "disallowSpaceBeforeBinaryOperators": [","], - "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], - "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, - "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, - "disallowSpacesInsideArrayBrackets": true, - "disallowSpacesInsideParentheses": true, - "disallowTrailingComma": true, - "disallowTrailingWhitespace": true, - "requireCamelCaseOrUpperCaseIdentifiers": true, - "requireCapitalizedConstructors": true, - "requireCommaBeforeLineBreak": true, - "requireDollarBeforejQueryAssignment": true, - "requireDotNotation": true, - "requireLineFeedAtFileEnd": true, - "requirePaddingNewLinesAfterUseStrict": true, - "requirePaddingNewLinesBeforeExport": true, - "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], - "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], - "requireSpaceAfterLineComment": true, - "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], - "requireSpaceBetweenArguments": true, - "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningCurlyBrace": true, "beforeOpeningRoundBrace": true }, - "requireSpacesInConditionalExpression": true, - "requireSpacesInForStatement": true, - "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, - "requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true }, - "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, - "requireSpacesInsideObjectBrackets": "allButNested", - "validateAlignedFunctionParameters": true, - "validateIndentation": 2, - "validateLineBreaks": "LF", - "validateNewlineAfterArrayElements": true, - "validateQuoteMarks": "'" -} diff --git a/elgg_clean/bower_components/bootstrap/js/.jshintrc b/elgg_clean/bower_components/bootstrap/js/.jshintrc deleted file mode 100644 index a59e1d00..00000000 --- a/elgg_clean/bower_components/bootstrap/js/.jshintrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "asi" : true, - "browser" : true, - "eqeqeq" : false, - "eqnull" : true, - "es3" : true, - "expr" : true, - "jquery" : true, - "latedef" : true, - "laxbreak" : true, - "nonbsp" : true, - "strict" : true, - "undef" : true, - "unused" : true -} diff --git a/elgg_clean/bower_components/bootstrap/js/affix.js b/elgg_clean/bower_components/bootstrap/js/affix.js deleted file mode 100644 index 11a3d39a..00000000 --- a/elgg_clean/bower_components/bootstrap/js/affix.js +++ /dev/null @@ -1,162 +0,0 @@ -/* ======================================================================== - * 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/elgg_clean/bower_components/bootstrap/js/alert.js b/elgg_clean/bower_components/bootstrap/js/alert.js deleted file mode 100644 index a7787cb5..00000000 --- a/elgg_clean/bower_components/bootstrap/js/alert.js +++ /dev/null @@ -1,94 +0,0 @@ -/* ======================================================================== - * 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); diff --git a/elgg_clean/bower_components/bootstrap/js/button.js b/elgg_clean/bower_components/bootstrap/js/button.js deleted file mode 100644 index 15d7dca6..00000000 --- a/elgg_clean/bower_components/bootstrap/js/button.js +++ /dev/null @@ -1,120 +0,0 @@ -/* ======================================================================== - * 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); diff --git a/elgg_clean/bower_components/bootstrap/js/carousel.js b/elgg_clean/bower_components/bootstrap/js/carousel.js deleted file mode 100644 index 6b2f1c4b..00000000 --- a/elgg_clean/bower_components/bootstrap/js/carousel.js +++ /dev/null @@ -1,237 +0,0 @@ -/* ======================================================================== - * 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); diff --git a/elgg_clean/bower_components/bootstrap/js/collapse.js b/elgg_clean/bower_components/bootstrap/js/collapse.js deleted file mode 100644 index 329e5354..00000000 --- a/elgg_clean/bower_components/bootstrap/js/collapse.js +++ /dev/null @@ -1,211 +0,0 @@ -/* ======================================================================== - * 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); diff --git a/elgg_clean/bower_components/bootstrap/js/dropdown.js b/elgg_clean/bower_components/bootstrap/js/dropdown.js deleted file mode 100644 index bc4d3734..00000000 --- a/elgg_clean/bower_components/bootstrap/js/dropdown.js +++ /dev/null @@ -1,165 +0,0 @@ -/* ======================================================================== - * 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); diff --git a/elgg_clean/bower_components/bootstrap/js/modal.js b/elgg_clean/bower_components/bootstrap/js/modal.js deleted file mode 100644 index d50a8560..00000000 --- a/elgg_clean/bower_components/bootstrap/js/modal.js +++ /dev/null @@ -1,337 +0,0 @@ -/* ======================================================================== - * 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); diff --git a/elgg_clean/bower_components/bootstrap/js/popover.js b/elgg_clean/bower_components/bootstrap/js/popover.js deleted file mode 100644 index aef22d16..00000000 --- a/elgg_clean/bower_components/bootstrap/js/popover.js +++ /dev/null @@ -1,108 +0,0 @@ -/* ======================================================================== - * 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); diff --git a/elgg_clean/bower_components/bootstrap/js/scrollspy.js b/elgg_clean/bower_components/bootstrap/js/scrollspy.js deleted file mode 100644 index 7208e250..00000000 --- a/elgg_clean/bower_components/bootstrap/js/scrollspy.js +++ /dev/null @@ -1,172 +0,0 @@ -/* ======================================================================== - * 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); diff --git a/elgg_clean/bower_components/bootstrap/js/tab.js b/elgg_clean/bower_components/bootstrap/js/tab.js deleted file mode 100644 index 8d5361fe..00000000 --- a/elgg_clean/bower_components/bootstrap/js/tab.js +++ /dev/null @@ -1,155 +0,0 @@ -/* ======================================================================== - * 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); diff --git a/elgg_clean/bower_components/bootstrap/js/tooltip.js b/elgg_clean/bower_components/bootstrap/js/tooltip.js deleted file mode 100644 index c3fe4b06..00000000 --- a/elgg_clean/bower_components/bootstrap/js/tooltip.js +++ /dev/null @@ -1,514 +0,0 @@ -/* ======================================================================== - * 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); diff --git a/elgg_clean/bower_components/bootstrap/js/transition.js b/elgg_clean/bower_components/bootstrap/js/transition.js deleted file mode 100644 index cd89fc49..00000000 --- a/elgg_clean/bower_components/bootstrap/js/transition.js +++ /dev/null @@ -1,59 +0,0 @@ -/* ======================================================================== - * 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); diff --git a/elgg_clean/bower_components/bootstrap/less/.csscomb.json b/elgg_clean/bower_components/bootstrap/less/.csscomb.json deleted file mode 100644 index 40695a47..00000000 --- a/elgg_clean/bower_components/bootstrap/less/.csscomb.json +++ /dev/null @@ -1,304 +0,0 @@ -{ - "always-semicolon": true, - "block-indent": 2, - "color-case": "lower", - "color-shorthand": true, - "element-case": "lower", - "eof-newline": true, - "leading-zero": false, - "remove-empty-rulesets": true, - "space-after-colon": 1, - "space-after-combinator": 1, - "space-before-selector-delimiter": 0, - "space-between-declarations": "\n", - "space-after-opening-brace": "\n", - "space-before-closing-brace": "\n", - "space-before-colon": 0, - "space-before-combinator": 1, - "space-before-opening-brace": 1, - "strip-spaces": true, - "unitless-zero": true, - "vendor-prefix-align": true, - "sort-order": [ - [ - "position", - "top", - "right", - "bottom", - "left", - "z-index", - "display", - "float", - "width", - "min-width", - "max-width", - "height", - "min-height", - "max-height", - "-webkit-box-sizing", - "-moz-box-sizing", - "box-sizing", - "-webkit-appearance", - "padding", - "padding-top", - "padding-right", - "padding-bottom", - "padding-left", - "margin", - "margin-top", - "margin-right", - "margin-bottom", - "margin-left", - "overflow", - "overflow-x", - "overflow-y", - "-webkit-overflow-scrolling", - "-ms-overflow-x", - "-ms-overflow-y", - "-ms-overflow-style", - "clip", - "clear", - "font", - "font-family", - "font-size", - "font-style", - "font-weight", - "font-variant", - "font-size-adjust", - "font-stretch", - "font-effect", - "font-emphasize", - "font-emphasize-position", - "font-emphasize-style", - "font-smooth", - "-webkit-hyphens", - "-moz-hyphens", - "hyphens", - "line-height", - "color", - "text-align", - "-webkit-text-align-last", - "-moz-text-align-last", - "-ms-text-align-last", - "text-align-last", - "text-emphasis", - "text-emphasis-color", - "text-emphasis-style", - "text-emphasis-position", - "text-decoration", - "text-indent", - "text-justify", - "text-outline", - "-ms-text-overflow", - "text-overflow", - "text-overflow-ellipsis", - "text-overflow-mode", - "text-shadow", - "text-transform", - "text-wrap", - "-webkit-text-size-adjust", - "-ms-text-size-adjust", - "letter-spacing", - "-ms-word-break", - "word-break", - "word-spacing", - "-ms-word-wrap", - "word-wrap", - "-moz-tab-size", - "-o-tab-size", - "tab-size", - "white-space", - "vertical-align", - "list-style", - "list-style-position", - "list-style-type", - "list-style-image", - "pointer-events", - "-ms-touch-action", - "touch-action", - "cursor", - "visibility", - "zoom", - "flex-direction", - "flex-order", - "flex-pack", - "flex-align", - "table-layout", - "empty-cells", - "caption-side", - "border-spacing", - "border-collapse", - "content", - "quotes", - "counter-reset", - "counter-increment", - "resize", - "-webkit-user-select", - "-moz-user-select", - "-ms-user-select", - "-o-user-select", - "user-select", - "nav-index", - "nav-up", - "nav-right", - "nav-down", - "nav-left", - "background", - "background-color", - "background-image", - "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", - "filter:progid:DXImageTransform.Microsoft.gradient", - "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", - "filter", - "background-repeat", - "background-attachment", - "background-position", - "background-position-x", - "background-position-y", - "-webkit-background-clip", - "-moz-background-clip", - "background-clip", - "background-origin", - "-webkit-background-size", - "-moz-background-size", - "-o-background-size", - "background-size", - "border", - "border-color", - "border-style", - "border-width", - "border-top", - "border-top-color", - "border-top-style", - "border-top-width", - "border-right", - "border-right-color", - "border-right-style", - "border-right-width", - "border-bottom", - "border-bottom-color", - "border-bottom-style", - "border-bottom-width", - "border-left", - "border-left-color", - "border-left-style", - "border-left-width", - "border-radius", - "border-top-left-radius", - "border-top-right-radius", - "border-bottom-right-radius", - "border-bottom-left-radius", - "-webkit-border-image", - "-moz-border-image", - "-o-border-image", - "border-image", - "-webkit-border-image-source", - "-moz-border-image-source", - "-o-border-image-source", - "border-image-source", - "-webkit-border-image-slice", - "-moz-border-image-slice", - "-o-border-image-slice", - "border-image-slice", - "-webkit-border-image-width", - "-moz-border-image-width", - "-o-border-image-width", - "border-image-width", - "-webkit-border-image-outset", - "-moz-border-image-outset", - "-o-border-image-outset", - "border-image-outset", - "-webkit-border-image-repeat", - "-moz-border-image-repeat", - "-o-border-image-repeat", - "border-image-repeat", - "outline", - "outline-width", - "outline-style", - "outline-color", - "outline-offset", - "-webkit-box-shadow", - "-moz-box-shadow", - "box-shadow", - "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", - "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", - "opacity", - "-ms-interpolation-mode", - "-webkit-transition", - "-moz-transition", - "-ms-transition", - "-o-transition", - "transition", - "-webkit-transition-delay", - "-moz-transition-delay", - "-ms-transition-delay", - "-o-transition-delay", - "transition-delay", - "-webkit-transition-timing-function", - "-moz-transition-timing-function", - "-ms-transition-timing-function", - "-o-transition-timing-function", - "transition-timing-function", - "-webkit-transition-duration", - "-moz-transition-duration", - "-ms-transition-duration", - "-o-transition-duration", - "transition-duration", - "-webkit-transition-property", - "-moz-transition-property", - "-ms-transition-property", - "-o-transition-property", - "transition-property", - "-webkit-transform", - "-moz-transform", - "-ms-transform", - "-o-transform", - "transform", - "-webkit-transform-origin", - "-moz-transform-origin", - "-ms-transform-origin", - "-o-transform-origin", - "transform-origin", - "-webkit-animation", - "-moz-animation", - "-ms-animation", - "-o-animation", - "animation", - "-webkit-animation-name", - "-moz-animation-name", - "-ms-animation-name", - "-o-animation-name", - "animation-name", - "-webkit-animation-duration", - "-moz-animation-duration", - "-ms-animation-duration", - "-o-animation-duration", - "animation-duration", - "-webkit-animation-play-state", - "-moz-animation-play-state", - "-ms-animation-play-state", - "-o-animation-play-state", - "animation-play-state", - "-webkit-animation-timing-function", - "-moz-animation-timing-function", - "-ms-animation-timing-function", - "-o-animation-timing-function", - "animation-timing-function", - "-webkit-animation-delay", - "-moz-animation-delay", - "-ms-animation-delay", - "-o-animation-delay", - "animation-delay", - "-webkit-animation-iteration-count", - "-moz-animation-iteration-count", - "-ms-animation-iteration-count", - "-o-animation-iteration-count", - "animation-iteration-count", - "-webkit-animation-direction", - "-moz-animation-direction", - "-ms-animation-direction", - "-o-animation-direction", - "animation-direction" - ] - ] -} diff --git a/elgg_clean/bower_components/bootstrap/less/.csslintrc b/elgg_clean/bower_components/bootstrap/less/.csslintrc deleted file mode 100644 index 005b8623..00000000 --- a/elgg_clean/bower_components/bootstrap/less/.csslintrc +++ /dev/null @@ -1,19 +0,0 @@ -{ - "adjoining-classes": false, - "box-sizing": false, - "box-model": false, - "compatible-vendor-prefixes": false, - "floats": false, - "font-sizes": false, - "gradients": false, - "important": false, - "known-properties": false, - "outline-none": false, - "qualified-headings": false, - "regex-selectors": false, - "shorthand": false, - "text-indent": false, - "unique-headings": false, - "universal-selector": false, - "unqualified-attributes": false -} diff --git a/elgg_clean/bower_components/bootstrap/less/alerts.less b/elgg_clean/bower_components/bootstrap/less/alerts.less deleted file mode 100644 index c4199db9..00000000 --- a/elgg_clean/bower_components/bootstrap/less/alerts.less +++ /dev/null @@ -1,73 +0,0 @@ -// -// Alerts -// -------------------------------------------------- - - -// Base styles -// ------------------------- - -.alert { - padding: @alert-padding; - margin-bottom: @line-height-computed; - border: 1px solid transparent; - border-radius: @alert-border-radius; - - // Headings for larger alerts - h4 { - margin-top: 0; - // Specified for the h4 to prevent conflicts of changing @headings-color - color: inherit; - } - - // Provide class for links that match alerts - .alert-link { - font-weight: @alert-link-font-weight; - } - - // Improve alignment and spacing of inner content - > p, - > ul { - margin-bottom: 0; - } - - > p + p { - margin-top: 5px; - } -} - -// Dismissible alerts -// -// Expand the right padding and account for the close button's positioning. - -.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. -.alert-dismissible { - padding-right: (@alert-padding + 20); - - // Adjust close link position - .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; - } -} - -// Alternate styles -// -// Generate contextual modifier classes for colorizing the alert. - -.alert-success { - .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); -} - -.alert-info { - .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); -} - -.alert-warning { - .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); -} - -.alert-danger { - .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); -} diff --git a/elgg_clean/bower_components/bootstrap/less/badges.less b/elgg_clean/bower_components/bootstrap/less/badges.less deleted file mode 100644 index 6ee16dca..00000000 --- a/elgg_clean/bower_components/bootstrap/less/badges.less +++ /dev/null @@ -1,66 +0,0 @@ -// -// Badges -// -------------------------------------------------- - - -// Base class -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: @font-size-small; - font-weight: @badge-font-weight; - color: @badge-color; - line-height: @badge-line-height; - vertical-align: middle; - white-space: nowrap; - text-align: center; - background-color: @badge-bg; - border-radius: @badge-border-radius; - - // Empty badges collapse automatically (not available in IE8) - &:empty { - display: none; - } - - // Quick fix for badges in buttons - .btn & { - position: relative; - top: -1px; - } - - .btn-xs &, - .btn-group-xs > .btn & { - top: 0; - padding: 1px 5px; - } - - // Hover state, but only for links - a& { - &:hover, - &:focus { - color: @badge-link-hover-color; - text-decoration: none; - cursor: pointer; - } - } - - // Account for badges in navs - .list-group-item.active > &, - .nav-pills > .active > a > & { - color: @badge-active-color; - background-color: @badge-active-bg; - } - - .list-group-item > & { - float: right; - } - - .list-group-item > & + & { - margin-right: 5px; - } - - .nav-pills > li > a > & { - margin-left: 3px; - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/bootstrap.less b/elgg_clean/bower_components/bootstrap/less/bootstrap.less deleted file mode 100644 index 4b9916e6..00000000 --- a/elgg_clean/bower_components/bootstrap/less/bootstrap.less +++ /dev/null @@ -1,56 +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) - */ - -// Core variables and mixins -@import "variables.less"; -@import "mixins.less"; - -// Reset and dependencies -@import "normalize.less"; -@import "print.less"; -@import "glyphicons.less"; - -// Core CSS -@import "scaffolding.less"; -@import "type.less"; -@import "code.less"; -@import "grid.less"; -@import "tables.less"; -@import "forms.less"; -@import "buttons.less"; - -// Components -@import "component-animations.less"; -@import "dropdowns.less"; -@import "button-groups.less"; -@import "input-groups.less"; -@import "navs.less"; -@import "navbar.less"; -@import "breadcrumbs.less"; -@import "pagination.less"; -@import "pager.less"; -@import "labels.less"; -@import "badges.less"; -@import "jumbotron.less"; -@import "thumbnails.less"; -@import "alerts.less"; -@import "progress-bars.less"; -@import "media.less"; -@import "list-group.less"; -@import "panels.less"; -@import "responsive-embed.less"; -@import "wells.less"; -@import "close.less"; - -// Components w/ JavaScript -@import "modals.less"; -@import "tooltip.less"; -@import "popovers.less"; -@import "carousel.less"; - -// Utility classes -@import "utilities.less"; -@import "responsive-utilities.less"; diff --git a/elgg_clean/bower_components/bootstrap/less/breadcrumbs.less b/elgg_clean/bower_components/bootstrap/less/breadcrumbs.less deleted file mode 100644 index cb01d503..00000000 --- a/elgg_clean/bower_components/bootstrap/less/breadcrumbs.less +++ /dev/null @@ -1,26 +0,0 @@ -// -// Breadcrumbs -// -------------------------------------------------- - - -.breadcrumb { - padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; - margin-bottom: @line-height-computed; - list-style: none; - background-color: @breadcrumb-bg; - border-radius: @border-radius-base; - - > li { - display: inline-block; - - + li:before { - content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space - padding: 0 5px; - color: @breadcrumb-color; - } - } - - > .active { - color: @breadcrumb-active-color; - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/button-groups.less b/elgg_clean/bower_components/bootstrap/less/button-groups.less deleted file mode 100644 index 6a0c5a86..00000000 --- a/elgg_clean/bower_components/bootstrap/less/button-groups.less +++ /dev/null @@ -1,244 +0,0 @@ -// -// Button groups -// -------------------------------------------------- - -// Make the div behave like a button -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; // match .btn alignment given font-size hack above - > .btn { - position: relative; - float: left; - // Bring the "active" button to the front - &:hover, - &:focus, - &:active, - &.active { - z-index: 2; - } - } -} - -// Prevent double borders when buttons are next to each other -.btn-group { - .btn + .btn, - .btn + .btn-group, - .btn-group + .btn, - .btn-group + .btn-group { - margin-left: -1px; - } -} - -// Optional: Group multiple button groups together for a toolbar -.btn-toolbar { - margin-left: -5px; // Offset the first child's margin - &:extend(.clearfix all); - - .btn, - .btn-group, - .input-group { - float: left; - } - > .btn, - > .btn-group, - > .input-group { - margin-left: 5px; - } -} - -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} - -// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match -.btn-group > .btn:first-child { - margin-left: 0; - &:not(:last-child):not(.dropdown-toggle) { - .border-right-radius(0); - } -} -// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - .border-left-radius(0); -} - -// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) { - > .btn:last-child, - > .dropdown-toggle { - .border-right-radius(0); - } -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - .border-left-radius(0); -} - -// On active and open, don't show outline -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} - - -// Sizing -// -// Remix the default button sizing classes into new ones for easier manipulation. - -.btn-group-xs > .btn { &:extend(.btn-xs); } -.btn-group-sm > .btn { &:extend(.btn-sm); } -.btn-group-lg > .btn { &:extend(.btn-lg); } - - -// Split button dropdowns -// ---------------------- - -// Give the line between buttons some depth -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} - -// The clickable button for toggling the menu -// Remove the gradient and set the same inset shadow as the :active state -.btn-group.open .dropdown-toggle { - .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); - - // Show no shadow for `.btn-link` since it has no other button styles. - &.btn-link { - .box-shadow(none); - } -} - - -// Reposition the caret -.btn .caret { - margin-left: 0; -} -// Carets in other button sizes -.btn-lg .caret { - border-width: @caret-width-large @caret-width-large 0; - border-bottom-width: 0; -} -// Upside down carets for .dropup -.dropup .btn-lg .caret { - border-width: 0 @caret-width-large @caret-width-large; -} - - -// Vertical button groups -// ---------------------- - -.btn-group-vertical { - > .btn, - > .btn-group, - > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; - } - - // Clear floats so dropdown menus can be properly placed - > .btn-group { - &:extend(.clearfix all); - > .btn { - float: none; - } - } - - > .btn + .btn, - > .btn + .btn-group, - > .btn-group + .btn, - > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; - } -} - -.btn-group-vertical > .btn { - &:not(:first-child):not(:last-child) { - border-radius: 0; - } - &:first-child:not(:last-child) { - border-top-right-radius: @btn-border-radius-base; - .border-bottom-radius(0); - } - &:last-child:not(:first-child) { - border-bottom-left-radius: @btn-border-radius-base; - .border-top-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, - > .dropdown-toggle { - .border-bottom-radius(0); - } -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - .border-top-radius(0); -} - - -// Justified button groups -// ---------------------- - -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; - > .btn, - > .btn-group { - float: none; - display: table-cell; - width: 1%; - } - > .btn-group .btn { - width: 100%; - } - - > .btn-group .dropdown-menu { - left: auto; - } -} - - -// Checkbox and radio options -// -// In order to support the browser's form validation feedback, powered by the -// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use -// `display: none;` or `visibility: hidden;` as that also hides the popover. -// Simply visually hiding the inputs via `opacity` would leave them clickable in -// certain cases which is prevented by using `clip` and `pointer-events`. -// This way, we ensure a DOM element is visible to position the popover from. -// -// See https://github.com/twbs/bootstrap/pull/12794 and -// https://github.com/twbs/bootstrap/pull/14559 for more information. - -[data-toggle="buttons"] { - > .btn, - > .btn-group > .btn { - input[type="radio"], - input[type="checkbox"] { - position: absolute; - clip: rect(0,0,0,0); - pointer-events: none; - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/buttons.less b/elgg_clean/bower_components/bootstrap/less/buttons.less deleted file mode 100644 index 9cbb8f41..00000000 --- a/elgg_clean/bower_components/bootstrap/less/buttons.less +++ /dev/null @@ -1,166 +0,0 @@ -// -// Buttons -// -------------------------------------------------- - - -// Base styles -// -------------------------------------------------- - -.btn { - display: inline-block; - margin-bottom: 0; // For input.btn - font-weight: @btn-font-weight; - text-align: center; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 - border: 1px solid transparent; - white-space: nowrap; - .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base); - .user-select(none); - - &, - &:active, - &.active { - &:focus, - &.focus { - .tab-focus(); - } - } - - &:hover, - &:focus, - &.focus { - color: @btn-default-color; - text-decoration: none; - } - - &:active, - &.active { - outline: 0; - background-image: none; - .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); - } - - &.disabled, - &[disabled], - fieldset[disabled] & { - cursor: @cursor-disabled; - .opacity(.65); - .box-shadow(none); - } - - a& { - &.disabled, - fieldset[disabled] & { - pointer-events: none; // Future-proof disabling of clicks on `<a>` elements - } - } -} - - -// Alternate buttons -// -------------------------------------------------- - -.btn-default { - .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border); -} -.btn-primary { - .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border); -} -// Success appears as green -.btn-success { - .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border); -} -// Info appears as blue-green -.btn-info { - .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border); -} -// Warning appears as orange -.btn-warning { - .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border); -} -// Danger and error appear as red -.btn-danger { - .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border); -} - - -// Link buttons -// ------------------------- - -// Make a button look and behave like a link -.btn-link { - color: @link-color; - font-weight: normal; - border-radius: 0; - - &, - &:active, - &.active, - &[disabled], - fieldset[disabled] & { - background-color: transparent; - .box-shadow(none); - } - &, - &:hover, - &:focus, - &:active { - border-color: transparent; - } - &:hover, - &:focus { - color: @link-hover-color; - text-decoration: @link-hover-decoration; - background-color: transparent; - } - &[disabled], - fieldset[disabled] & { - &:hover, - &:focus { - color: @btn-link-disabled-color; - text-decoration: none; - } - } -} - - -// Button Sizes -// -------------------------------------------------- - -.btn-lg { - // line-height: ensure even-numbered height of button next to large input - .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large); -} -.btn-sm { - // line-height: ensure proper height of button next to small input - .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small); -} -.btn-xs { - .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small); -} - - -// Block button -// -------------------------------------------------- - -.btn-block { - display: block; - width: 100%; -} - -// Vertically space out multiple block buttons -.btn-block + .btn-block { - margin-top: 5px; -} - -// Specificity overrides -input[type="submit"], -input[type="reset"], -input[type="button"] { - &.btn-block { - width: 100%; - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/carousel.less b/elgg_clean/bower_components/bootstrap/less/carousel.less deleted file mode 100644 index 87ed6961..00000000 --- a/elgg_clean/bower_components/bootstrap/less/carousel.less +++ /dev/null @@ -1,269 +0,0 @@ -// -// Carousel -// -------------------------------------------------- - - -// Wrapper for the slide container and indicators -.carousel { - position: relative; -} - -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; - - > .item { - display: none; - position: relative; - .transition(.6s ease-in-out left); - - // Account for jankitude on images - > img, - > a > img { - &:extend(.img-responsive); - line-height: 1; - } - - // WebKit CSS3 transforms for supported devices - @media all and (transform-3d), (-webkit-transform-3d) { - .transition-transform(~'0.6s ease-in-out'); - .backface-visibility(~'hidden'); - .perspective(1000px); - - &.next, - &.active.right { - .translate3d(100%, 0, 0); - left: 0; - } - &.prev, - &.active.left { - .translate3d(-100%, 0, 0); - left: 0; - } - &.next.left, - &.prev.right, - &.active { - .translate3d(0, 0, 0); - left: 0; - } - } - } - - > .active, - > .next, - > .prev { - display: block; - } - - > .active { - left: 0; - } - - > .next, - > .prev { - position: absolute; - top: 0; - width: 100%; - } - - > .next { - left: 100%; - } - > .prev { - left: -100%; - } - > .next.left, - > .prev.right { - left: 0; - } - - > .active.left { - left: -100%; - } - > .active.right { - left: 100%; - } - -} - -// Left/right controls for nav -// --------------------------- - -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: @carousel-control-width; - .opacity(@carousel-control-opacity); - font-size: @carousel-control-font-size; - color: @carousel-control-color; - text-align: center; - text-shadow: @carousel-text-shadow; - // We can't have this transition here because WebKit cancels the carousel - // animation if you trip this while in the middle of another animation. - - // Set gradients for backgrounds - &.left { - #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001)); - } - &.right { - left: auto; - right: 0; - #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5)); - } - - // Hover/focus state - &:hover, - &:focus { - outline: 0; - color: @carousel-control-color; - text-decoration: none; - .opacity(.9); - } - - // Toggles - .icon-prev, - .icon-next, - .glyphicon-chevron-left, - .glyphicon-chevron-right { - position: absolute; - top: 50%; - margin-top: -10px; - z-index: 5; - display: inline-block; - } - .icon-prev, - .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; - } - .icon-next, - .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; - } - .icon-prev, - .icon-next { - width: 20px; - height: 20px; - line-height: 1; - font-family: serif; - } - - - .icon-prev { - &:before { - content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) - } - } - .icon-next { - &:before { - content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) - } - } -} - -// Optional indicator pips -// -// Add an unordered list with the following class and add a list item for each -// slide your carousel holds. - -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - margin-left: -30%; - padding-left: 0; - list-style: none; - text-align: center; - - li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid @carousel-indicator-border-color; - border-radius: 10px; - cursor: pointer; - - // IE8-9 hack for event handling - // - // Internet Explorer 8-9 does not support clicks on elements without a set - // `background-color`. We cannot use `filter` since that's not viewed as a - // background color by the browser. Thus, a hack is needed. - // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer - // - // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we - // set alpha transparency for the best results possible. - background-color: #000 \9; // IE8 - background-color: rgba(0,0,0,0); // IE9 - } - .active { - margin: 0; - width: 12px; - height: 12px; - background-color: @carousel-indicator-active-bg; - } -} - -// Optional captions -// ----------------------------- -// Hidden by default for smaller viewports -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: @carousel-caption-color; - text-align: center; - text-shadow: @carousel-text-shadow; - & .btn { - text-shadow: none; // No shadow for button elements in carousel-caption - } -} - - -// Scale up controls for tablets and up -@media screen and (min-width: @screen-sm-min) { - - // Scale up the controls a smidge - .carousel-control { - .glyphicon-chevron-left, - .glyphicon-chevron-right, - .icon-prev, - .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .glyphicon-chevron-left, - .icon-prev { - margin-left: -15px; - } - .glyphicon-chevron-right, - .icon-next { - margin-right: -15px; - } - } - - // Show and left align the captions - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - - // Move up the indicators - .carousel-indicators { - bottom: 20px; - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/close.less b/elgg_clean/bower_components/bootstrap/less/close.less deleted file mode 100644 index 6d5bfe08..00000000 --- a/elgg_clean/bower_components/bootstrap/less/close.less +++ /dev/null @@ -1,34 +0,0 @@ -// -// Close icons -// -------------------------------------------------- - - -.close { - float: right; - font-size: (@font-size-base * 1.5); - font-weight: @close-font-weight; - line-height: 1; - color: @close-color; - text-shadow: @close-text-shadow; - .opacity(.2); - - &:hover, - &:focus { - color: @close-color; - text-decoration: none; - cursor: pointer; - .opacity(.5); - } - - // Additional properties for button version - // iOS requires the button element instead of an anchor tag. - // If you want the anchor version, it requires `href="#"`. - // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile - button& { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/code.less b/elgg_clean/bower_components/bootstrap/less/code.less deleted file mode 100644 index a08b4d48..00000000 --- a/elgg_clean/bower_components/bootstrap/less/code.less +++ /dev/null @@ -1,69 +0,0 @@ -// -// Code (inline and block) -// -------------------------------------------------- - - -// Inline and block code styles -code, -kbd, -pre, -samp { - font-family: @font-family-monospace; -} - -// Inline code -code { - padding: 2px 4px; - font-size: 90%; - color: @code-color; - background-color: @code-bg; - border-radius: @border-radius-base; -} - -// User input typically entered via keyboard -kbd { - padding: 2px 4px; - font-size: 90%; - color: @kbd-color; - background-color: @kbd-bg; - border-radius: @border-radius-small; - box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); - - kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - box-shadow: none; - } -} - -// Blocks of code -pre { - display: block; - padding: ((@line-height-computed - 1) / 2); - margin: 0 0 (@line-height-computed / 2); - font-size: (@font-size-base - 1); // 14px to 13px - line-height: @line-height-base; - word-break: break-all; - word-wrap: break-word; - color: @pre-color; - background-color: @pre-bg; - border: 1px solid @pre-border-color; - border-radius: @border-radius-base; - - // Account for some code outputs that place code tags in pre tags - code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; - } -} - -// Enable scrollable blocks of code -.pre-scrollable { - max-height: @pre-scrollable-max-height; - overflow-y: scroll; -} diff --git a/elgg_clean/bower_components/bootstrap/less/component-animations.less b/elgg_clean/bower_components/bootstrap/less/component-animations.less deleted file mode 100644 index 0bcee910..00000000 --- a/elgg_clean/bower_components/bootstrap/less/component-animations.less +++ /dev/null @@ -1,33 +0,0 @@ -// -// Component animations -// -------------------------------------------------- - -// Heads up! -// -// We don't use the `.opacity()` mixin here since it causes a bug with text -// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. - -.fade { - opacity: 0; - .transition(opacity .15s linear); - &.in { - opacity: 1; - } -} - -.collapse { - display: none; - - &.in { display: block; } - tr&.in { display: table-row; } - tbody&.in { display: table-row-group; } -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - .transition-property(~"height, visibility"); - .transition-duration(.35s); - .transition-timing-function(ease); -} diff --git a/elgg_clean/bower_components/bootstrap/less/dropdowns.less b/elgg_clean/bower_components/bootstrap/less/dropdowns.less deleted file mode 100644 index f6876c1a..00000000 --- a/elgg_clean/bower_components/bootstrap/less/dropdowns.less +++ /dev/null @@ -1,216 +0,0 @@ -// -// Dropdown menus -// -------------------------------------------------- - - -// Dropdown arrow/caret -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: @caret-width-base dashed; - border-top: @caret-width-base solid ~"\9"; // IE8 - border-right: @caret-width-base solid transparent; - border-left: @caret-width-base solid transparent; -} - -// The dropdown wrapper (div) -.dropup, -.dropdown { - position: relative; -} - -// Prevent the focus on the dropdown toggle when closing dropdowns -.dropdown-toggle:focus { - outline: 0; -} - -// The dropdown menu (ul) -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: @zindex-dropdown; - display: none; // none by default, but block on "open" of the menu - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; // override default ul - list-style: none; - font-size: @font-size-base; - text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) - background-color: @dropdown-bg; - border: 1px solid @dropdown-fallback-border; // IE8 fallback - border: 1px solid @dropdown-border; - border-radius: @border-radius-base; - .box-shadow(0 6px 12px rgba(0,0,0,.175)); - background-clip: padding-box; - - // Aligns the dropdown menu to right - // - // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` - &.pull-right { - right: 0; - left: auto; - } - - // Dividers (basically an hr) within the dropdown - .divider { - .nav-divider(@dropdown-divider-bg); - } - - // Links within the dropdown menu - > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: @line-height-base; - color: @dropdown-link-color; - white-space: nowrap; // prevent links from randomly breaking onto new lines - } -} - -// Hover/Focus state -.dropdown-menu > li > a { - &:hover, - &:focus { - text-decoration: none; - color: @dropdown-link-hover-color; - background-color: @dropdown-link-hover-bg; - } -} - -// Active state -.dropdown-menu > .active > a { - &, - &:hover, - &:focus { - color: @dropdown-link-active-color; - text-decoration: none; - outline: 0; - background-color: @dropdown-link-active-bg; - } -} - -// Disabled state -// -// Gray out text and ensure the hover/focus state remains gray - -.dropdown-menu > .disabled > a { - &, - &:hover, - &:focus { - color: @dropdown-link-disabled-color; - } - - // Nuke hover/focus effects - &:hover, - &:focus { - text-decoration: none; - background-color: transparent; - background-image: none; // Remove CSS gradient - .reset-filter(); - cursor: @cursor-disabled; - } -} - -// Open state for the dropdown -.open { - // Show the menu - > .dropdown-menu { - display: block; - } - - // Remove the outline when :focus is triggered - > a { - outline: 0; - } -} - -// Menu positioning -// -// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown -// menu with the parent. -.dropdown-menu-right { - left: auto; // Reset the default from `.dropdown-menu` - right: 0; -} -// With v3, we enabled auto-flipping if you have a dropdown within a right -// aligned nav component. To enable the undoing of that, we provide an override -// to restore the default dropdown menu alignment. -// -// This is only for left-aligning a dropdown menu within a `.navbar-right` or -// `.pull-right` nav component. -.dropdown-menu-left { - left: 0; - right: auto; -} - -// Dropdown section headers -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: @font-size-small; - line-height: @line-height-base; - color: @dropdown-header-color; - white-space: nowrap; // as with > li > a -} - -// Backdrop to catch body clicks on mobile, etc. -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: (@zindex-dropdown - 10); -} - -// Right aligned dropdowns -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} - -// Allow for dropdowns to go bottom up (aka, dropup-menu) -// -// Just add .dropup after the standard .dropdown class and you're set, bro. -// TODO: abstract this so that the navbar fixed styles are not placed here? - -.dropup, -.navbar-fixed-bottom .dropdown { - // Reverse the caret - .caret { - border-top: 0; - border-bottom: @caret-width-base dashed; - border-bottom: @caret-width-base solid ~"\9"; // IE8 - content: ""; - } - // Different positioning for bottom up menu - .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; - } -} - - -// Component alignment -// -// Reiterate per navbar.less and the modified component alignment there. - -@media (min-width: @grid-float-breakpoint) { - .navbar-right { - .dropdown-menu { - .dropdown-menu-right(); - } - // Necessary for overrides of the default right aligned menu. - // Will remove come v4 in all likelihood. - .dropdown-menu-left { - .dropdown-menu-left(); - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/forms.less b/elgg_clean/bower_components/bootstrap/less/forms.less deleted file mode 100644 index b064ede4..00000000 --- a/elgg_clean/bower_components/bootstrap/less/forms.less +++ /dev/null @@ -1,607 +0,0 @@ -// -// Forms -// -------------------------------------------------- - - -// Normalize non-controls -// -// Restyle and baseline non-control form elements. - -fieldset { - padding: 0; - margin: 0; - border: 0; - // Chrome and Firefox set a `min-width: min-content;` on fieldsets, - // so we reset that to ensure it behaves more like a standard block element. - // See https://github.com/twbs/bootstrap/issues/12359. - min-width: 0; -} - -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: @line-height-computed; - font-size: (@font-size-base * 1.5); - line-height: inherit; - color: @legend-color; - border: 0; - border-bottom: 1px solid @legend-border-color; -} - -label { - display: inline-block; - max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) - margin-bottom: 5px; - font-weight: bold; -} - - -// Normalize form controls -// -// While most of our form styles require extra classes, some basic normalization -// is required to ensure optimum display with or without those classes to better -// address browser inconsistencies. - -// Override content-box in Normalize (* isn't specific enough) -input[type="search"] { - .box-sizing(border-box); -} - -// Position radios and checkboxes better -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; // IE8-9 - line-height: normal; -} - -input[type="file"] { - display: block; -} - -// Make range inputs behave like textual form controls -input[type="range"] { - display: block; - width: 100%; -} - -// Make multiple select elements height not fixed -select[multiple], -select[size] { - height: auto; -} - -// Focus for file, radio, and checkbox -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - .tab-focus(); -} - -// Adjust output element -output { - display: block; - padding-top: (@padding-base-vertical + 1); - font-size: @font-size-base; - line-height: @line-height-base; - color: @input-color; -} - - -// Common form controls -// -// Shared size and type resets for form controls. Apply `.form-control` to any -// of the following form controls: -// -// select -// textarea -// input[type="text"] -// input[type="password"] -// input[type="datetime"] -// input[type="datetime-local"] -// input[type="date"] -// input[type="month"] -// input[type="time"] -// input[type="week"] -// input[type="number"] -// input[type="email"] -// input[type="url"] -// input[type="search"] -// input[type="tel"] -// input[type="color"] - -.form-control { - display: block; - width: 100%; - height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) - padding: @padding-base-vertical @padding-base-horizontal; - font-size: @font-size-base; - line-height: @line-height-base; - color: @input-color; - background-color: @input-bg; - background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 - border: 1px solid @input-border; - border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS. - .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); - .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s"); - - // Customize the `:focus` state to imitate native WebKit styles. - .form-control-focus(); - - // Placeholder - .placeholder(); - - // Disabled and read-only inputs - // - // HTML5 says that controls under a fieldset > legend:first-child won't be - // disabled if the fieldset is disabled. Due to implementation difficulty, we - // don't honor that edge case; we style them as disabled anyway. - &[disabled], - &[readonly], - fieldset[disabled] & { - background-color: @input-bg-disabled; - opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655 - } - - &[disabled], - fieldset[disabled] & { - cursor: @cursor-disabled; - } - - // Reset height for `textarea`s - textarea& { - height: auto; - } -} - - -// Search inputs in iOS -// -// This overrides the extra rounded corners on search inputs in iOS so that our -// `.form-control` class can properly style them. Note that this cannot simply -// be added to `.form-control` as it's not specific enough. For details, see -// https://github.com/twbs/bootstrap/issues/11586. - -input[type="search"] { - -webkit-appearance: none; -} - - -// Special styles for iOS temporal inputs -// -// In Mobile Safari, setting `display: block` on temporal inputs causes the -// text within the input to become vertically misaligned. As a workaround, we -// set a pixel line-height that matches the given height of the input, but only -// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848 -// -// Note that as of 8.3, iOS doesn't support `datetime` or `week`. - -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"], - input[type="time"], - input[type="datetime-local"], - input[type="month"] { - &.form-control { - line-height: @input-height-base; - } - - &.input-sm, - .input-group-sm & { - line-height: @input-height-small; - } - - &.input-lg, - .input-group-lg & { - line-height: @input-height-large; - } - } -} - - -// Form groups -// -// Designed to help with the organization and spacing of vertical forms. For -// horizontal forms, use the predefined grid classes. - -.form-group { - margin-bottom: @form-group-margin-bottom; -} - - -// Checkboxes and radios -// -// Indent the labels to position radios/checkboxes as hanging controls. - -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; - - label { - min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; - } -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-left: -20px; - margin-top: 4px \9; -} - -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing -} - -// Radios and checkboxes on same line -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; // space out consecutive inline controls -} - -// Apply same disabled cursor tweak as for inputs -// Some special care is needed because <label>s don't inherit their parent's `cursor`. -// -// Note: Neither radios nor checkboxes can be readonly. -input[type="radio"], -input[type="checkbox"] { - &[disabled], - &.disabled, - fieldset[disabled] & { - cursor: @cursor-disabled; - } -} -// These classes are used directly on <label>s -.radio-inline, -.checkbox-inline { - &.disabled, - fieldset[disabled] & { - cursor: @cursor-disabled; - } -} -// These classes are used on elements with <label> descendants -.radio, -.checkbox { - &.disabled, - fieldset[disabled] & { - label { - cursor: @cursor-disabled; - } - } -} - - -// Static form control text -// -// Apply class to a `p` element to make any string of text align with labels in -// a horizontal form layout. - -.form-control-static { - // Size it appropriately next to real form controls - padding-top: (@padding-base-vertical + 1); - padding-bottom: (@padding-base-vertical + 1); - // Remove default margin from `p` - margin-bottom: 0; - min-height: (@line-height-computed + @font-size-base); - - &.input-lg, - &.input-sm { - padding-left: 0; - padding-right: 0; - } -} - - -// Form control sizing -// -// Build on `.form-control` with modifier classes to decrease or increase the -// height and font-size of form controls. -// -// The `.form-group-* form-control` variations are sadly duplicated to avoid the -// issue documented in https://github.com/twbs/bootstrap/issues/15074. - -.input-sm { - .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small); -} -.form-group-sm { - .form-control { - height: @input-height-small; - padding: @padding-small-vertical @padding-small-horizontal; - font-size: @font-size-small; - line-height: @line-height-small; - border-radius: @input-border-radius-small; - } - select.form-control { - height: @input-height-small; - line-height: @input-height-small; - } - textarea.form-control, - select[multiple].form-control { - height: auto; - } - .form-control-static { - height: @input-height-small; - min-height: (@line-height-computed + @font-size-small); - padding: (@padding-small-vertical + 1) @padding-small-horizontal; - font-size: @font-size-small; - line-height: @line-height-small; - } -} - -.input-lg { - .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large); -} -.form-group-lg { - .form-control { - height: @input-height-large; - padding: @padding-large-vertical @padding-large-horizontal; - font-size: @font-size-large; - line-height: @line-height-large; - border-radius: @input-border-radius-large; - } - select.form-control { - height: @input-height-large; - line-height: @input-height-large; - } - textarea.form-control, - select[multiple].form-control { - height: auto; - } - .form-control-static { - height: @input-height-large; - min-height: (@line-height-computed + @font-size-large); - padding: (@padding-large-vertical + 1) @padding-large-horizontal; - font-size: @font-size-large; - line-height: @line-height-large; - } -} - - -// Form control feedback states -// -// Apply contextual and semantic states to individual form controls. - -.has-feedback { - // Enable absolute positioning - position: relative; - - // Ensure icons don't overlap text - .form-control { - padding-right: (@input-height-base * 1.25); - } -} -// Feedback icon (requires .glyphicon classes) -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; // Ensure icon is above input groups - display: block; - width: @input-height-base; - height: @input-height-base; - line-height: @input-height-base; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: @input-height-large; - height: @input-height-large; - line-height: @input-height-large; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: @input-height-small; - height: @input-height-small; - line-height: @input-height-small; -} - -// Feedback states -.has-success { - .form-control-validation(@state-success-text; @state-success-text; @state-success-bg); -} -.has-warning { - .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg); -} -.has-error { - .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg); -} - -// Reposition feedback icon if input has visible label above -.has-feedback label { - - & ~ .form-control-feedback { - top: (@line-height-computed + 5); // Height of the `label` and its margin - } - &.sr-only ~ .form-control-feedback { - top: 0; - } -} - - -// Help text -// -// Apply to any element you wish to create light text for placement immediately -// below a form control. Use for general help, formatting, or instructional text. - -.help-block { - display: block; // account for any element using help-block - margin-top: 5px; - margin-bottom: 10px; - color: lighten(@text-color, 25%); // lighten the text some for contrast -} - - -// Inline forms -// -// Make forms appear inline(-block) by adding the `.form-inline` class. Inline -// forms begin stacked on extra small (mobile) devices and then go inline when -// viewports reach <768px. -// -// Requires wrapping inputs and labels with `.form-group` for proper display of -// default HTML form controls and our custom form controls (e.g., input groups). -// -// Heads up! This is mixin-ed into `.navbar-form` in navbars.less. - -.form-inline { - - // Kick in the inline - @media (min-width: @screen-sm-min) { - // Inline-block all the things for "inline" - .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - - // In navbar-form, allow folks to *not* use `.form-group` - .form-control { - display: inline-block; - width: auto; // Prevent labels from stacking above inputs in `.form-group` - vertical-align: middle; - } - - // Make static controls behave like regular ones - .form-control-static { - display: inline-block; - } - - .input-group { - display: inline-table; - vertical-align: middle; - - .input-group-addon, - .input-group-btn, - .form-control { - width: auto; - } - } - - // Input groups need that 100% width though - .input-group > .form-control { - width: 100%; - } - - .control-label { - margin-bottom: 0; - vertical-align: middle; - } - - // Remove default margin on radios/checkboxes that were used for stacking, and - // then undo the floating of radios and checkboxes to match. - .radio, - .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - - label { - padding-left: 0; - } - } - .radio input[type="radio"], - .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - - // Re-override the feedback icon. - .has-feedback .form-control-feedback { - top: 0; - } - } -} - - -// Horizontal forms -// -// Horizontal forms are built on grid classes and allow you to create forms with -// labels on the left and inputs on the right. - -.form-horizontal { - - // Consistent vertical alignment of radios and checkboxes - // - // Labels also get some reset styles, but that is scoped to a media query below. - .radio, - .checkbox, - .radio-inline, - .checkbox-inline { - margin-top: 0; - margin-bottom: 0; - padding-top: (@padding-base-vertical + 1); // Default padding plus a border - } - // Account for padding we're adding to ensure the alignment and of help text - // and other content below items - .radio, - .checkbox { - min-height: (@line-height-computed + (@padding-base-vertical + 1)); - } - - // Make form groups behave like rows - .form-group { - .make-row(); - } - - // Reset spacing and right align labels, but scope to media queries so that - // labels on narrow viewports stack the same as a default form example. - @media (min-width: @screen-sm-min) { - .control-label { - text-align: right; - margin-bottom: 0; - padding-top: (@padding-base-vertical + 1); // Default padding plus a border - } - } - - // Validation states - // - // Reposition the icon because it's now within a grid column and columns have - // `position: relative;` on them. Also accounts for the grid gutter padding. - .has-feedback .form-control-feedback { - right: floor((@grid-gutter-width / 2)); - } - - // Form group sizes - // - // Quick utility class for applying `.input-lg` and `.input-sm` styles to the - // inputs and labels within a `.form-group`. - .form-group-lg { - @media (min-width: @screen-sm-min) { - .control-label { - padding-top: ((@padding-large-vertical * @line-height-large) + 1); - font-size: @font-size-large; - } - } - } - .form-group-sm { - @media (min-width: @screen-sm-min) { - .control-label { - padding-top: (@padding-small-vertical + 1); - font-size: @font-size-small; - } - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/glyphicons.less b/elgg_clean/bower_components/bootstrap/less/glyphicons.less deleted file mode 100644 index 335d80aa..00000000 --- a/elgg_clean/bower_components/bootstrap/less/glyphicons.less +++ /dev/null @@ -1,305 +0,0 @@ -// -// Glyphicons for Bootstrap -// -// Since icons are fonts, they can be placed anywhere text is placed and are -// thus automatically sized to match the surrounding child. To use, create an -// inline element with the appropriate classes, like so: -// -// <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a> - -// Import the fonts -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('@{icon-font-path}@{icon-font-name}.eot'); - src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'), - url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'), - url('@{icon-font-path}@{icon-font-name}.woff') format('woff'), - url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'), - url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg'); -} - -// Catchall baseclass -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -// Individual icons -.glyphicon-asterisk { &:before { content: "\2a"; } } -.glyphicon-plus { &:before { content: "\2b"; } } -.glyphicon-euro, -.glyphicon-eur { &:before { content: "\20ac"; } } -.glyphicon-minus { &:before { content: "\2212"; } } -.glyphicon-cloud { &:before { content: "\2601"; } } -.glyphicon-envelope { &:before { content: "\2709"; } } -.glyphicon-pencil { &:before { content: "\270f"; } } -.glyphicon-glass { &:before { content: "\e001"; } } -.glyphicon-music { &:before { content: "\e002"; } } -.glyphicon-search { &:before { content: "\e003"; } } -.glyphicon-heart { &:before { content: "\e005"; } } -.glyphicon-star { &:before { content: "\e006"; } } -.glyphicon-star-empty { &:before { content: "\e007"; } } -.glyphicon-user { &:before { content: "\e008"; } } -.glyphicon-film { &:before { content: "\e009"; } } -.glyphicon-th-large { &:before { content: "\e010"; } } -.glyphicon-th { &:before { content: "\e011"; } } -.glyphicon-th-list { &:before { content: "\e012"; } } -.glyphicon-ok { &:before { content: "\e013"; } } -.glyphicon-remove { &:before { content: "\e014"; } } -.glyphicon-zoom-in { &:before { content: "\e015"; } } -.glyphicon-zoom-out { &:before { content: "\e016"; } } -.glyphicon-off { &:before { content: "\e017"; } } -.glyphicon-signal { &:before { content: "\e018"; } } -.glyphicon-cog { &:before { content: "\e019"; } } -.glyphicon-trash { &:before { content: "\e020"; } } -.glyphicon-home { &:before { content: "\e021"; } } -.glyphicon-file { &:before { content: "\e022"; } } -.glyphicon-time { &:before { content: "\e023"; } } -.glyphicon-road { &:before { content: "\e024"; } } -.glyphicon-download-alt { &:before { content: "\e025"; } } -.glyphicon-download { &:before { content: "\e026"; } } -.glyphicon-upload { &:before { content: "\e027"; } } -.glyphicon-inbox { &:before { content: "\e028"; } } -.glyphicon-play-circle { &:before { content: "\e029"; } } -.glyphicon-repeat { &:before { content: "\e030"; } } -.glyphicon-refresh { &:before { content: "\e031"; } } -.glyphicon-list-alt { &:before { content: "\e032"; } } -.glyphicon-lock { &:before { content: "\e033"; } } -.glyphicon-flag { &:before { content: "\e034"; } } -.glyphicon-headphones { &:before { content: "\e035"; } } -.glyphicon-volume-off { &:before { content: "\e036"; } } -.glyphicon-volume-down { &:before { content: "\e037"; } } -.glyphicon-volume-up { &:before { content: "\e038"; } } -.glyphicon-qrcode { &:before { content: "\e039"; } } -.glyphicon-barcode { &:before { content: "\e040"; } } -.glyphicon-tag { &:before { content: "\e041"; } } -.glyphicon-tags { &:before { content: "\e042"; } } -.glyphicon-book { &:before { content: "\e043"; } } -.glyphicon-bookmark { &:before { content: "\e044"; } } -.glyphicon-print { &:before { content: "\e045"; } } -.glyphicon-camera { &:before { content: "\e046"; } } -.glyphicon-font { &:before { content: "\e047"; } } -.glyphicon-bold { &:before { content: "\e048"; } } -.glyphicon-italic { &:before { content: "\e049"; } } -.glyphicon-text-height { &:before { content: "\e050"; } } -.glyphicon-text-width { &:before { content: "\e051"; } } -.glyphicon-align-left { &:before { content: "\e052"; } } -.glyphicon-align-center { &:before { content: "\e053"; } } -.glyphicon-align-right { &:before { content: "\e054"; } } -.glyphicon-align-justify { &:before { content: "\e055"; } } -.glyphicon-list { &:before { content: "\e056"; } } -.glyphicon-indent-left { &:before { content: "\e057"; } } -.glyphicon-indent-right { &:before { content: "\e058"; } } -.glyphicon-facetime-video { &:before { content: "\e059"; } } -.glyphicon-picture { &:before { content: "\e060"; } } -.glyphicon-map-marker { &:before { content: "\e062"; } } -.glyphicon-adjust { &:before { content: "\e063"; } } -.glyphicon-tint { &:before { content: "\e064"; } } -.glyphicon-edit { &:before { content: "\e065"; } } -.glyphicon-share { &:before { content: "\e066"; } } -.glyphicon-check { &:before { content: "\e067"; } } -.glyphicon-move { &:before { content: "\e068"; } } -.glyphicon-step-backward { &:before { content: "\e069"; } } -.glyphicon-fast-backward { &:before { content: "\e070"; } } -.glyphicon-backward { &:before { content: "\e071"; } } -.glyphicon-play { &:before { content: "\e072"; } } -.glyphicon-pause { &:before { content: "\e073"; } } -.glyphicon-stop { &:before { content: "\e074"; } } -.glyphicon-forward { &:before { content: "\e075"; } } -.glyphicon-fast-forward { &:before { content: "\e076"; } } -.glyphicon-step-forward { &:before { content: "\e077"; } } -.glyphicon-eject { &:before { content: "\e078"; } } -.glyphicon-chevron-left { &:before { content: "\e079"; } } -.glyphicon-chevron-right { &:before { content: "\e080"; } } -.glyphicon-plus-sign { &:before { content: "\e081"; } } -.glyphicon-minus-sign { &:before { content: "\e082"; } } -.glyphicon-remove-sign { &:before { content: "\e083"; } } -.glyphicon-ok-sign { &:before { content: "\e084"; } } -.glyphicon-question-sign { &:before { content: "\e085"; } } -.glyphicon-info-sign { &:before { content: "\e086"; } } -.glyphicon-screenshot { &:before { content: "\e087"; } } -.glyphicon-remove-circle { &:before { content: "\e088"; } } -.glyphicon-ok-circle { &:before { content: "\e089"; } } -.glyphicon-ban-circle { &:before { content: "\e090"; } } -.glyphicon-arrow-left { &:before { content: "\e091"; } } -.glyphicon-arrow-right { &:before { content: "\e092"; } } -.glyphicon-arrow-up { &:before { content: "\e093"; } } -.glyphicon-arrow-down { &:before { content: "\e094"; } } -.glyphicon-share-alt { &:before { content: "\e095"; } } -.glyphicon-resize-full { &:before { content: "\e096"; } } -.glyphicon-resize-small { &:before { content: "\e097"; } } -.glyphicon-exclamation-sign { &:before { content: "\e101"; } } -.glyphicon-gift { &:before { content: "\e102"; } } -.glyphicon-leaf { &:before { content: "\e103"; } } -.glyphicon-fire { &:before { content: "\e104"; } } -.glyphicon-eye-open { &:before { content: "\e105"; } } -.glyphicon-eye-close { &:before { content: "\e106"; } } -.glyphicon-warning-sign { &:before { content: "\e107"; } } -.glyphicon-plane { &:before { content: "\e108"; } } -.glyphicon-calendar { &:before { content: "\e109"; } } -.glyphicon-random { &:before { content: "\e110"; } } -.glyphicon-comment { &:before { content: "\e111"; } } -.glyphicon-magnet { &:before { content: "\e112"; } } -.glyphicon-chevron-up { &:before { content: "\e113"; } } -.glyphicon-chevron-down { &:before { content: "\e114"; } } -.glyphicon-retweet { &:before { content: "\e115"; } } -.glyphicon-shopping-cart { &:before { content: "\e116"; } } -.glyphicon-folder-close { &:before { content: "\e117"; } } -.glyphicon-folder-open { &:before { content: "\e118"; } } -.glyphicon-resize-vertical { &:before { content: "\e119"; } } -.glyphicon-resize-horizontal { &:before { content: "\e120"; } } -.glyphicon-hdd { &:before { content: "\e121"; } } -.glyphicon-bullhorn { &:before { content: "\e122"; } } -.glyphicon-bell { &:before { content: "\e123"; } } -.glyphicon-certificate { &:before { content: "\e124"; } } -.glyphicon-thumbs-up { &:before { content: "\e125"; } } -.glyphicon-thumbs-down { &:before { content: "\e126"; } } -.glyphicon-hand-right { &:before { content: "\e127"; } } -.glyphicon-hand-left { &:before { content: "\e128"; } } -.glyphicon-hand-up { &:before { content: "\e129"; } } -.glyphicon-hand-down { &:before { content: "\e130"; } } -.glyphicon-circle-arrow-right { &:before { content: "\e131"; } } -.glyphicon-circle-arrow-left { &:before { content: "\e132"; } } -.glyphicon-circle-arrow-up { &:before { content: "\e133"; } } -.glyphicon-circle-arrow-down { &:before { content: "\e134"; } } -.glyphicon-globe { &:before { content: "\e135"; } } -.glyphicon-wrench { &:before { content: "\e136"; } } -.glyphicon-tasks { &:before { content: "\e137"; } } -.glyphicon-filter { &:before { content: "\e138"; } } -.glyphicon-briefcase { &:before { content: "\e139"; } } -.glyphicon-fullscreen { &:before { content: "\e140"; } } -.glyphicon-dashboard { &:before { content: "\e141"; } } -.glyphicon-paperclip { &:before { content: "\e142"; } } -.glyphicon-heart-empty { &:before { content: "\e143"; } } -.glyphicon-link { &:before { content: "\e144"; } } -.glyphicon-phone { &:before { content: "\e145"; } } -.glyphicon-pushpin { &:before { content: "\e146"; } } -.glyphicon-usd { &:before { content: "\e148"; } } -.glyphicon-gbp { &:before { content: "\e149"; } } -.glyphicon-sort { &:before { content: "\e150"; } } -.glyphicon-sort-by-alphabet { &:before { content: "\e151"; } } -.glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } } -.glyphicon-sort-by-order { &:before { content: "\e153"; } } -.glyphicon-sort-by-order-alt { &:before { content: "\e154"; } } -.glyphicon-sort-by-attributes { &:before { content: "\e155"; } } -.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } } -.glyphicon-unchecked { &:before { content: "\e157"; } } -.glyphicon-expand { &:before { content: "\e158"; } } -.glyphicon-collapse-down { &:before { content: "\e159"; } } -.glyphicon-collapse-up { &:before { content: "\e160"; } } -.glyphicon-log-in { &:before { content: "\e161"; } } -.glyphicon-flash { &:before { content: "\e162"; } } -.glyphicon-log-out { &:before { content: "\e163"; } } -.glyphicon-new-window { &:before { content: "\e164"; } } -.glyphicon-record { &:before { content: "\e165"; } } -.glyphicon-save { &:before { content: "\e166"; } } -.glyphicon-open { &:before { content: "\e167"; } } -.glyphicon-saved { &:before { content: "\e168"; } } -.glyphicon-import { &:before { content: "\e169"; } } -.glyphicon-export { &:before { content: "\e170"; } } -.glyphicon-send { &:before { content: "\e171"; } } -.glyphicon-floppy-disk { &:before { content: "\e172"; } } -.glyphicon-floppy-saved { &:before { content: "\e173"; } } -.glyphicon-floppy-remove { &:before { content: "\e174"; } } -.glyphicon-floppy-save { &:before { content: "\e175"; } } -.glyphicon-floppy-open { &:before { content: "\e176"; } } -.glyphicon-credit-card { &:before { content: "\e177"; } } -.glyphicon-transfer { &:before { content: "\e178"; } } -.glyphicon-cutlery { &:before { content: "\e179"; } } -.glyphicon-header { &:before { content: "\e180"; } } -.glyphicon-compressed { &:before { content: "\e181"; } } -.glyphicon-earphone { &:before { content: "\e182"; } } -.glyphicon-phone-alt { &:before { content: "\e183"; } } -.glyphicon-tower { &:before { content: "\e184"; } } -.glyphicon-stats { &:before { content: "\e185"; } } -.glyphicon-sd-video { &:before { content: "\e186"; } } -.glyphicon-hd-video { &:before { content: "\e187"; } } -.glyphicon-subtitles { &:before { content: "\e188"; } } -.glyphicon-sound-stereo { &:before { content: "\e189"; } } -.glyphicon-sound-dolby { &:before { content: "\e190"; } } -.glyphicon-sound-5-1 { &:before { content: "\e191"; } } -.glyphicon-sound-6-1 { &:before { content: "\e192"; } } -.glyphicon-sound-7-1 { &:before { content: "\e193"; } } -.glyphicon-copyright-mark { &:before { content: "\e194"; } } -.glyphicon-registration-mark { &:before { content: "\e195"; } } -.glyphicon-cloud-download { &:before { content: "\e197"; } } -.glyphicon-cloud-upload { &:before { content: "\e198"; } } -.glyphicon-tree-conifer { &:before { content: "\e199"; } } -.glyphicon-tree-deciduous { &:before { content: "\e200"; } } -.glyphicon-cd { &:before { content: "\e201"; } } -.glyphicon-save-file { &:before { content: "\e202"; } } -.glyphicon-open-file { &:before { content: "\e203"; } } -.glyphicon-level-up { &:before { content: "\e204"; } } -.glyphicon-copy { &:before { content: "\e205"; } } -.glyphicon-paste { &:before { content: "\e206"; } } -// The following 2 Glyphicons are omitted for the time being because -// they currently use Unicode codepoints that are outside the -// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle -// non-BMP codepoints in CSS string escapes, and thus can't display these two icons. -// Notably, the bug affects some older versions of the Android Browser. -// More info: https://github.com/twbs/bootstrap/issues/10106 -// .glyphicon-door { &:before { content: "\1f6aa"; } } -// .glyphicon-key { &:before { content: "\1f511"; } } -.glyphicon-alert { &:before { content: "\e209"; } } -.glyphicon-equalizer { &:before { content: "\e210"; } } -.glyphicon-king { &:before { content: "\e211"; } } -.glyphicon-queen { &:before { content: "\e212"; } } -.glyphicon-pawn { &:before { content: "\e213"; } } -.glyphicon-bishop { &:before { content: "\e214"; } } -.glyphicon-knight { &:before { content: "\e215"; } } -.glyphicon-baby-formula { &:before { content: "\e216"; } } -.glyphicon-tent { &:before { content: "\26fa"; } } -.glyphicon-blackboard { &:before { content: "\e218"; } } -.glyphicon-bed { &:before { content: "\e219"; } } -.glyphicon-apple { &:before { content: "\f8ff"; } } -.glyphicon-erase { &:before { content: "\e221"; } } -.glyphicon-hourglass { &:before { content: "\231b"; } } -.glyphicon-lamp { &:before { content: "\e223"; } } -.glyphicon-duplicate { &:before { content: "\e224"; } } -.glyphicon-piggy-bank { &:before { content: "\e225"; } } -.glyphicon-scissors { &:before { content: "\e226"; } } -.glyphicon-bitcoin { &:before { content: "\e227"; } } -.glyphicon-btc { &:before { content: "\e227"; } } -.glyphicon-xbt { &:before { content: "\e227"; } } -.glyphicon-yen { &:before { content: "\00a5"; } } -.glyphicon-jpy { &:before { content: "\00a5"; } } -.glyphicon-ruble { &:before { content: "\20bd"; } } -.glyphicon-rub { &:before { content: "\20bd"; } } -.glyphicon-scale { &:before { content: "\e230"; } } -.glyphicon-ice-lolly { &:before { content: "\e231"; } } -.glyphicon-ice-lolly-tasted { &:before { content: "\e232"; } } -.glyphicon-education { &:before { content: "\e233"; } } -.glyphicon-option-horizontal { &:before { content: "\e234"; } } -.glyphicon-option-vertical { &:before { content: "\e235"; } } -.glyphicon-menu-hamburger { &:before { content: "\e236"; } } -.glyphicon-modal-window { &:before { content: "\e237"; } } -.glyphicon-oil { &:before { content: "\e238"; } } -.glyphicon-grain { &:before { content: "\e239"; } } -.glyphicon-sunglasses { &:before { content: "\e240"; } } -.glyphicon-text-size { &:before { content: "\e241"; } } -.glyphicon-text-color { &:before { content: "\e242"; } } -.glyphicon-text-background { &:before { content: "\e243"; } } -.glyphicon-object-align-top { &:before { content: "\e244"; } } -.glyphicon-object-align-bottom { &:before { content: "\e245"; } } -.glyphicon-object-align-horizontal{ &:before { content: "\e246"; } } -.glyphicon-object-align-left { &:before { content: "\e247"; } } -.glyphicon-object-align-vertical { &:before { content: "\e248"; } } -.glyphicon-object-align-right { &:before { content: "\e249"; } } -.glyphicon-triangle-right { &:before { content: "\e250"; } } -.glyphicon-triangle-left { &:before { content: "\e251"; } } -.glyphicon-triangle-bottom { &:before { content: "\e252"; } } -.glyphicon-triangle-top { &:before { content: "\e253"; } } -.glyphicon-console { &:before { content: "\e254"; } } -.glyphicon-superscript { &:before { content: "\e255"; } } -.glyphicon-subscript { &:before { content: "\e256"; } } -.glyphicon-menu-left { &:before { content: "\e257"; } } -.glyphicon-menu-right { &:before { content: "\e258"; } } -.glyphicon-menu-down { &:before { content: "\e259"; } } -.glyphicon-menu-up { &:before { content: "\e260"; } } diff --git a/elgg_clean/bower_components/bootstrap/less/grid.less b/elgg_clean/bower_components/bootstrap/less/grid.less deleted file mode 100644 index e100655b..00000000 --- a/elgg_clean/bower_components/bootstrap/less/grid.less +++ /dev/null @@ -1,84 +0,0 @@ -// -// Grid system -// -------------------------------------------------- - - -// Container widths -// -// Set the container width, and override it for fixed navbars in media queries. - -.container { - .container-fixed(); - - @media (min-width: @screen-sm-min) { - width: @container-sm; - } - @media (min-width: @screen-md-min) { - width: @container-md; - } - @media (min-width: @screen-lg-min) { - width: @container-lg; - } -} - - -// Fluid container -// -// Utilizes the mixin meant for fixed width containers, but without any defined -// width for fluid, full width layouts. - -.container-fluid { - .container-fixed(); -} - - -// Row -// -// Rows contain and clear the floats of your columns. - -.row { - .make-row(); -} - - -// Columns -// -// Common styles for small and large grid columns - -.make-grid-columns(); - - -// Extra small grid -// -// Columns, offsets, pushes, and pulls for extra small devices like -// smartphones. - -.make-grid(xs); - - -// Small grid -// -// Columns, offsets, pushes, and pulls for the small device range, from phones -// to tablets. - -@media (min-width: @screen-sm-min) { - .make-grid(sm); -} - - -// Medium grid -// -// Columns, offsets, pushes, and pulls for the desktop device range. - -@media (min-width: @screen-md-min) { - .make-grid(md); -} - - -// Large grid -// -// Columns, offsets, pushes, and pulls for the large desktop device range. - -@media (min-width: @screen-lg-min) { - .make-grid(lg); -} diff --git a/elgg_clean/bower_components/bootstrap/less/input-groups.less b/elgg_clean/bower_components/bootstrap/less/input-groups.less deleted file mode 100644 index 457ea60b..00000000 --- a/elgg_clean/bower_components/bootstrap/less/input-groups.less +++ /dev/null @@ -1,167 +0,0 @@ -// -// Input groups -// -------------------------------------------------- - -// Base styles -// ------------------------- -.input-group { - position: relative; // For dropdowns - display: table; - border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table - - // Undo padding and float of grid classes - &[class*="col-"] { - float: none; - padding-left: 0; - padding-right: 0; - } - - .form-control { - // Ensure that the input is always above the *appended* addon button for - // proper border colors. - position: relative; - z-index: 2; - - // IE9 fubars the placeholder attribute in text inputs and the arrows on - // select elements in input groups. To fix it, we float the input. Details: - // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855 - float: left; - - width: 100%; - margin-bottom: 0; - } -} - -// Sizing options -// -// Remix the default form control sizing classes into new ones for easier -// manipulation. - -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - .input-lg(); -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - .input-sm(); -} - - -// Display as table-cell -// ------------------------- -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; - - &:not(:first-child):not(:last-child) { - border-radius: 0; - } -} -// Addon and addon wrapper for buttons -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; // Match the inputs -} - -// Text input groups -// ------------------------- -.input-group-addon { - padding: @padding-base-vertical @padding-base-horizontal; - font-size: @font-size-base; - font-weight: normal; - line-height: 1; - color: @input-color; - text-align: center; - background-color: @input-group-addon-bg; - border: 1px solid @input-group-addon-border-color; - border-radius: @border-radius-base; - - // Sizing - &.input-sm { - padding: @padding-small-vertical @padding-small-horizontal; - font-size: @font-size-small; - border-radius: @border-radius-small; - } - &.input-lg { - padding: @padding-large-vertical @padding-large-horizontal; - font-size: @font-size-large; - border-radius: @border-radius-large; - } - - // Nuke default margins from checkboxes and radios to vertically center within. - input[type="radio"], - input[type="checkbox"] { - margin-top: 0; - } -} - -// Reset rounded corners -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - .border-right-radius(0); -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - .border-left-radius(0); -} -.input-group-addon:last-child { - border-left: 0; -} - -// Button input groups -// ------------------------- -.input-group-btn { - position: relative; - // Jankily prevent input button groups from wrapping with `white-space` and - // `font-size` in combination with `inline-block` on buttons. - font-size: 0; - white-space: nowrap; - - // Negative margin for spacing, position for bringing hovered/focused/actived - // element above the siblings. - > .btn { - position: relative; - + .btn { - margin-left: -1px; - } - // Bring the "active" button to the front - &:hover, - &:focus, - &:active { - z-index: 2; - } - } - - // Negative margin to only have a 1px border between the two - &:first-child { - > .btn, - > .btn-group { - margin-right: -1px; - } - } - &:last-child { - > .btn, - > .btn-group { - z-index: 2; - margin-left: -1px; - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/jumbotron.less b/elgg_clean/bower_components/bootstrap/less/jumbotron.less deleted file mode 100644 index fa80a38c..00000000 --- a/elgg_clean/bower_components/bootstrap/less/jumbotron.less +++ /dev/null @@ -1,52 +0,0 @@ -// -// Jumbotron -// -------------------------------------------------- - - -.jumbotron { - padding-top: @jumbotron-padding; - padding-bottom: @jumbotron-padding; - margin-bottom: @jumbotron-padding; - color: @jumbotron-color; - background-color: @jumbotron-bg; - - h1, - .h1 { - color: @jumbotron-heading-color; - } - - p { - margin-bottom: (@jumbotron-padding / 2); - font-size: @jumbotron-font-size; - font-weight: 200; - } - - > hr { - border-top-color: darken(@jumbotron-bg, 10%); - } - - .container &, - .container-fluid & { - border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container - } - - .container { - max-width: 100%; - } - - @media screen and (min-width: @screen-sm-min) { - padding-top: (@jumbotron-padding * 1.6); - padding-bottom: (@jumbotron-padding * 1.6); - - .container &, - .container-fluid & { - padding-left: (@jumbotron-padding * 2); - padding-right: (@jumbotron-padding * 2); - } - - h1, - .h1 { - font-size: @jumbotron-heading-font-size; - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/labels.less b/elgg_clean/bower_components/bootstrap/less/labels.less deleted file mode 100644 index 9a5a2700..00000000 --- a/elgg_clean/bower_components/bootstrap/less/labels.less +++ /dev/null @@ -1,64 +0,0 @@ -// -// Labels -// -------------------------------------------------- - -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: @label-color; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; - - // Add hover effects, but only for links - a& { - &:hover, - &:focus { - color: @label-link-hover-color; - text-decoration: none; - cursor: pointer; - } - } - - // Empty labels collapse automatically (not available in IE8) - &:empty { - display: none; - } - - // Quick fix for labels in buttons - .btn & { - position: relative; - top: -1px; - } -} - -// Colors -// Contextual variations (linked labels get darker on :hover) - -.label-default { - .label-variant(@label-default-bg); -} - -.label-primary { - .label-variant(@label-primary-bg); -} - -.label-success { - .label-variant(@label-success-bg); -} - -.label-info { - .label-variant(@label-info-bg); -} - -.label-warning { - .label-variant(@label-warning-bg); -} - -.label-danger { - .label-variant(@label-danger-bg); -} diff --git a/elgg_clean/bower_components/bootstrap/less/list-group.less b/elgg_clean/bower_components/bootstrap/less/list-group.less deleted file mode 100644 index 216b9123..00000000 --- a/elgg_clean/bower_components/bootstrap/less/list-group.less +++ /dev/null @@ -1,130 +0,0 @@ -// -// List groups -// -------------------------------------------------- - - -// Base class -// -// Easily usable on <ul>, <ol>, or <div>. - -.list-group { - // No need to set list-style: none; since .list-group-item is block level - margin-bottom: 20px; - padding-left: 0; // reset padding because ul and ol -} - - -// Individual list items -// -// Use on `li`s or `div`s within the `.list-group` parent. - -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - // Place the border on the list items and negative margin up for better styling - margin-bottom: -1px; - background-color: @list-group-bg; - border: 1px solid @list-group-border; - - // Round the first and last items - &:first-child { - .border-top-radius(@list-group-border-radius); - } - &:last-child { - margin-bottom: 0; - .border-bottom-radius(@list-group-border-radius); - } -} - - -// Interactive list items -// -// Use anchor or button elements instead of `li`s or `div`s to create interactive items. -// Includes an extra `.active` modifier class for showing selected items. - -a.list-group-item, -button.list-group-item { - color: @list-group-link-color; - - .list-group-item-heading { - color: @list-group-link-heading-color; - } - - // Hover state - &:hover, - &:focus { - text-decoration: none; - color: @list-group-link-hover-color; - background-color: @list-group-hover-bg; - } -} - -button.list-group-item { - width: 100%; - text-align: left; -} - -.list-group-item { - // Disabled state - &.disabled, - &.disabled:hover, - &.disabled:focus { - background-color: @list-group-disabled-bg; - color: @list-group-disabled-color; - cursor: @cursor-disabled; - - // Force color to inherit for custom content - .list-group-item-heading { - color: inherit; - } - .list-group-item-text { - color: @list-group-disabled-text-color; - } - } - - // Active class on item itself, not parent - &.active, - &.active:hover, - &.active:focus { - z-index: 2; // Place active items above their siblings for proper border styling - color: @list-group-active-color; - background-color: @list-group-active-bg; - border-color: @list-group-active-border; - - // Force color to inherit for custom content - .list-group-item-heading, - .list-group-item-heading > small, - .list-group-item-heading > .small { - color: inherit; - } - .list-group-item-text { - color: @list-group-active-text-color; - } - } -} - - -// Contextual variants -// -// Add modifier classes to change text and background color on individual items. -// Organizationally, this must come after the `:hover` states. - -.list-group-item-variant(success; @state-success-bg; @state-success-text); -.list-group-item-variant(info; @state-info-bg; @state-info-text); -.list-group-item-variant(warning; @state-warning-bg; @state-warning-text); -.list-group-item-variant(danger; @state-danger-bg; @state-danger-text); - - -// Custom content options -// -// Extra classes for creating well-formatted content within `.list-group-item`s. - -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} diff --git a/elgg_clean/bower_components/bootstrap/less/media.less b/elgg_clean/bower_components/bootstrap/less/media.less deleted file mode 100644 index 8c835e86..00000000 --- a/elgg_clean/bower_components/bootstrap/less/media.less +++ /dev/null @@ -1,66 +0,0 @@ -.media { - // Proper spacing between instances of .media - margin-top: 15px; - - &:first-child { - margin-top: 0; - } -} - -.media, -.media-body { - zoom: 1; - overflow: hidden; -} - -.media-body { - width: 10000px; -} - -.media-object { - display: block; - - // Fix collapse in webkit from max-width: 100% and display: table-cell. - &.img-thumbnail { - max-width: none; - } -} - -.media-right, -.media > .pull-right { - padding-left: 10px; -} - -.media-left, -.media > .pull-left { - padding-right: 10px; -} - -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} - -.media-middle { - vertical-align: middle; -} - -.media-bottom { - vertical-align: bottom; -} - -// Reset margins on headings for tighter default spacing -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} - -// Media list variation -// -// Undo default ul/ol styles -.media-list { - padding-left: 0; - list-style: none; -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins.less b/elgg_clean/bower_components/bootstrap/less/mixins.less deleted file mode 100644 index e6f9fe68..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins.less +++ /dev/null @@ -1,40 +0,0 @@ -// Mixins -// -------------------------------------------------- - -// Utilities -@import "mixins/hide-text.less"; -@import "mixins/opacity.less"; -@import "mixins/image.less"; -@import "mixins/labels.less"; -@import "mixins/reset-filter.less"; -@import "mixins/resize.less"; -@import "mixins/responsive-visibility.less"; -@import "mixins/size.less"; -@import "mixins/tab-focus.less"; -@import "mixins/reset-text.less"; -@import "mixins/text-emphasis.less"; -@import "mixins/text-overflow.less"; -@import "mixins/vendor-prefixes.less"; - -// Components -@import "mixins/alerts.less"; -@import "mixins/buttons.less"; -@import "mixins/panels.less"; -@import "mixins/pagination.less"; -@import "mixins/list-group.less"; -@import "mixins/nav-divider.less"; -@import "mixins/forms.less"; -@import "mixins/progress-bar.less"; -@import "mixins/table-row.less"; - -// Skins -@import "mixins/background-variant.less"; -@import "mixins/border-radius.less"; -@import "mixins/gradients.less"; - -// Layout -@import "mixins/clearfix.less"; -@import "mixins/center-block.less"; -@import "mixins/nav-vertical-align.less"; -@import "mixins/grid-framework.less"; -@import "mixins/grid.less"; diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/alerts.less b/elgg_clean/bower_components/bootstrap/less/mixins/alerts.less deleted file mode 100644 index 396196f4..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/alerts.less +++ /dev/null @@ -1,14 +0,0 @@ -// Alerts - -.alert-variant(@background; @border; @text-color) { - background-color: @background; - border-color: @border; - color: @text-color; - - hr { - border-top-color: darken(@border, 5%); - } - .alert-link { - color: darken(@text-color, 10%); - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/background-variant.less b/elgg_clean/bower_components/bootstrap/less/mixins/background-variant.less deleted file mode 100644 index a85c22b7..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/background-variant.less +++ /dev/null @@ -1,9 +0,0 @@ -// Contextual backgrounds - -.bg-variant(@color) { - background-color: @color; - a&:hover, - a&:focus { - background-color: darken(@color, 10%); - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/border-radius.less b/elgg_clean/bower_components/bootstrap/less/mixins/border-radius.less deleted file mode 100644 index ca05dbf4..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/border-radius.less +++ /dev/null @@ -1,18 +0,0 @@ -// Single side border-radius - -.border-top-radius(@radius) { - border-top-right-radius: @radius; - border-top-left-radius: @radius; -} -.border-right-radius(@radius) { - border-bottom-right-radius: @radius; - border-top-right-radius: @radius; -} -.border-bottom-radius(@radius) { - border-bottom-right-radius: @radius; - border-bottom-left-radius: @radius; -} -.border-left-radius(@radius) { - border-bottom-left-radius: @radius; - border-top-left-radius: @radius; -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/buttons.less b/elgg_clean/bower_components/bootstrap/less/mixins/buttons.less deleted file mode 100644 index 6875a97c..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/buttons.less +++ /dev/null @@ -1,68 +0,0 @@ -// Button variants -// -// Easily pump out default styles, as well as :hover, :focus, :active, -// and disabled options for all buttons - -.button-variant(@color; @background; @border) { - color: @color; - background-color: @background; - border-color: @border; - - &:focus, - &.focus { - color: @color; - background-color: darken(@background, 10%); - border-color: darken(@border, 25%); - } - &:hover { - color: @color; - background-color: darken(@background, 10%); - border-color: darken(@border, 12%); - } - &:active, - &.active, - .open > .dropdown-toggle& { - color: @color; - background-color: darken(@background, 10%); - border-color: darken(@border, 12%); - - &:hover, - &:focus, - &.focus { - color: @color; - background-color: darken(@background, 17%); - border-color: darken(@border, 25%); - } - } - &:active, - &.active, - .open > .dropdown-toggle& { - background-image: none; - } - &.disabled, - &[disabled], - fieldset[disabled] & { - &, - &:hover, - &:focus, - &.focus, - &:active, - &.active { - background-color: @background; - border-color: @border; - } - } - - .badge { - color: @background; - background-color: @color; - } -} - -// Button sizes -.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { - padding: @padding-vertical @padding-horizontal; - font-size: @font-size; - line-height: @line-height; - border-radius: @border-radius; -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/center-block.less b/elgg_clean/bower_components/bootstrap/less/mixins/center-block.less deleted file mode 100644 index d18d6de9..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/center-block.less +++ /dev/null @@ -1,7 +0,0 @@ -// Center-align a block level element - -.center-block() { - display: block; - margin-left: auto; - margin-right: auto; -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/clearfix.less b/elgg_clean/bower_components/bootstrap/less/mixins/clearfix.less deleted file mode 100644 index 3f7a3820..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/clearfix.less +++ /dev/null @@ -1,22 +0,0 @@ -// Clearfix -// -// For modern browsers -// 1. The space content is one way to avoid an Opera bug when the -// contenteditable attribute is included anywhere else in the document. -// Otherwise it causes space to appear at the top and bottom of elements -// that are clearfixed. -// 2. The use of `table` rather than `block` is only necessary if using -// `:before` to contain the top-margins of child elements. -// -// Source: http://nicolasgallagher.com/micro-clearfix-hack/ - -.clearfix() { - &:before, - &:after { - content: " "; // 1 - display: table; // 2 - } - &:after { - clear: both; - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/forms.less b/elgg_clean/bower_components/bootstrap/less/mixins/forms.less deleted file mode 100644 index 6f55ed96..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/forms.less +++ /dev/null @@ -1,85 +0,0 @@ -// Form validation states -// -// Used in forms.less to generate the form validation CSS for warnings, errors, -// and successes. - -.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) { - // Color the label and help text - .help-block, - .control-label, - .radio, - .checkbox, - .radio-inline, - .checkbox-inline, - &.radio label, - &.checkbox label, - &.radio-inline label, - &.checkbox-inline label { - color: @text-color; - } - // Set the border and box shadow on specific inputs to match - .form-control { - border-color: @border-color; - .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work - &:focus { - border-color: darken(@border-color, 10%); - @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%); - .box-shadow(@shadow); - } - } - // Set validation states also for addons - .input-group-addon { - color: @text-color; - border-color: @border-color; - background-color: @background-color; - } - // Optional feedback icon - .form-control-feedback { - color: @text-color; - } -} - - -// Form control focus state -// -// Generate a customized focus state and for any input with the specified color, -// which defaults to the `@input-border-focus` variable. -// -// We highly encourage you to not customize the default value, but instead use -// this to tweak colors on an as-needed basis. This aesthetic change is based on -// WebKit's default styles, but applicable to a wider range of browsers. Its -// usability and accessibility should be taken into account with any change. -// -// Example usage: change the default blue border and shadow to white for better -// contrast against a dark gray background. -.form-control-focus(@color: @input-border-focus) { - @color-rgba: rgba(red(@color), green(@color), blue(@color), .6); - &:focus { - border-color: @color; - outline: 0; - .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}"); - } -} - -// Form control sizing -// -// Relative text size, padding, and border-radii changes for form controls. For -// horizontal sizing, wrap controls in the predefined grid classes. `<select>` -// element gets special love because it's special, and that's a fact! -.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { - height: @input-height; - padding: @padding-vertical @padding-horizontal; - font-size: @font-size; - line-height: @line-height; - border-radius: @border-radius; - - select& { - height: @input-height; - line-height: @input-height; - } - - textarea&, - select[multiple]& { - height: auto; - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/gradients.less b/elgg_clean/bower_components/bootstrap/less/mixins/gradients.less deleted file mode 100644 index 0b88a89c..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/gradients.less +++ /dev/null @@ -1,59 +0,0 @@ -// Gradients - -#gradient { - - // Horizontal gradient, from left to right - // - // Creates two color stops, start and end, by specifying a color and position for each color stop. - // Color stops are not available in IE9 and below. - .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) { - background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+ - background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12 - background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ - background-repeat: repeat-x; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down - } - - // Vertical gradient, from top to bottom - // - // Creates two color stops, start and end, by specifying a color and position for each color stop. - // Color stops are not available in IE9 and below. - .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) { - background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+ - background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12 - background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ - background-repeat: repeat-x; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down - } - - .directional(@start-color: #555; @end-color: #333; @deg: 45deg) { - background-repeat: repeat-x; - background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+ - background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12 - background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ - } - .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) { - background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); - background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); - background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color); - background-repeat: no-repeat; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback - } - .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) { - background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color); - background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color); - background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color); - background-repeat: no-repeat; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback - } - .radial(@inner-color: #555; @outer-color: #333) { - background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color); - background-image: radial-gradient(circle, @inner-color, @outer-color); - background-repeat: no-repeat; - } - .striped(@color: rgba(255,255,255,.15); @angle: 45deg) { - background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); - background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/grid-framework.less b/elgg_clean/bower_components/bootstrap/less/mixins/grid-framework.less deleted file mode 100644 index 8c23eed2..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/grid-framework.less +++ /dev/null @@ -1,91 +0,0 @@ -// Framework grid generation -// -// Used only by Bootstrap to generate the correct number of grid classes given -// any value of `@grid-columns`. - -.make-grid-columns() { - // Common styles for all sizes of grid columns, widths 1-12 - .col(@index) { // initial - @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}"; - .col((@index + 1), @item); - } - .col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo - @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}"; - .col((@index + 1), ~"@{list}, @{item}"); - } - .col(@index, @list) when (@index > @grid-columns) { // terminal - @{list} { - position: relative; - // Prevent columns from collapsing when empty - min-height: 1px; - // Inner gutter via padding - padding-left: ceil((@grid-gutter-width / 2)); - padding-right: floor((@grid-gutter-width / 2)); - } - } - .col(1); // kickstart it -} - -.float-grid-columns(@class) { - .col(@index) { // initial - @item: ~".col-@{class}-@{index}"; - .col((@index + 1), @item); - } - .col(@index, @list) when (@index =< @grid-columns) { // general - @item: ~".col-@{class}-@{index}"; - .col((@index + 1), ~"@{list}, @{item}"); - } - .col(@index, @list) when (@index > @grid-columns) { // terminal - @{list} { - float: left; - } - } - .col(1); // kickstart it -} - -.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) { - .col-@{class}-@{index} { - width: percentage((@index / @grid-columns)); - } -} -.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) { - .col-@{class}-push-@{index} { - left: percentage((@index / @grid-columns)); - } -} -.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) { - .col-@{class}-push-0 { - left: auto; - } -} -.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) { - .col-@{class}-pull-@{index} { - right: percentage((@index / @grid-columns)); - } -} -.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) { - .col-@{class}-pull-0 { - right: auto; - } -} -.calc-grid-column(@index, @class, @type) when (@type = offset) { - .col-@{class}-offset-@{index} { - margin-left: percentage((@index / @grid-columns)); - } -} - -// Basic looping in LESS -.loop-grid-columns(@index, @class, @type) when (@index >= 0) { - .calc-grid-column(@index, @class, @type); - // next iteration - .loop-grid-columns((@index - 1), @class, @type); -} - -// Create grid for specific class -.make-grid(@class) { - .float-grid-columns(@class); - .loop-grid-columns(@grid-columns, @class, width); - .loop-grid-columns(@grid-columns, @class, pull); - .loop-grid-columns(@grid-columns, @class, push); - .loop-grid-columns(@grid-columns, @class, offset); -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/grid.less b/elgg_clean/bower_components/bootstrap/less/mixins/grid.less deleted file mode 100644 index f144c15f..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/grid.less +++ /dev/null @@ -1,122 +0,0 @@ -// Grid system -// -// Generate semantic grid columns with these mixins. - -// Centered container element -.container-fixed(@gutter: @grid-gutter-width) { - margin-right: auto; - margin-left: auto; - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - &:extend(.clearfix all); -} - -// Creates a wrapper for a series of columns -.make-row(@gutter: @grid-gutter-width) { - margin-left: ceil((@gutter / -2)); - margin-right: floor((@gutter / -2)); - &:extend(.clearfix all); -} - -// Generate the extra small columns -.make-xs-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - float: left; - width: percentage((@columns / @grid-columns)); - min-height: 1px; - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); -} -.make-xs-column-offset(@columns) { - margin-left: percentage((@columns / @grid-columns)); -} -.make-xs-column-push(@columns) { - left: percentage((@columns / @grid-columns)); -} -.make-xs-column-pull(@columns) { - right: percentage((@columns / @grid-columns)); -} - -// Generate the small columns -.make-sm-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - min-height: 1px; - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - @media (min-width: @screen-sm-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} -.make-sm-column-offset(@columns) { - @media (min-width: @screen-sm-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-sm-column-push(@columns) { - @media (min-width: @screen-sm-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-sm-column-pull(@columns) { - @media (min-width: @screen-sm-min) { - right: percentage((@columns / @grid-columns)); - } -} - -// Generate the medium columns -.make-md-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - min-height: 1px; - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - @media (min-width: @screen-md-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} -.make-md-column-offset(@columns) { - @media (min-width: @screen-md-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-md-column-push(@columns) { - @media (min-width: @screen-md-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-md-column-pull(@columns) { - @media (min-width: @screen-md-min) { - right: percentage((@columns / @grid-columns)); - } -} - -// Generate the large columns -.make-lg-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - min-height: 1px; - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - @media (min-width: @screen-lg-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} -.make-lg-column-offset(@columns) { - @media (min-width: @screen-lg-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-lg-column-push(@columns) { - @media (min-width: @screen-lg-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-lg-column-pull(@columns) { - @media (min-width: @screen-lg-min) { - right: percentage((@columns / @grid-columns)); - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/hide-text.less b/elgg_clean/bower_components/bootstrap/less/mixins/hide-text.less deleted file mode 100644 index bc701185..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/hide-text.less +++ /dev/null @@ -1,21 +0,0 @@ -// CSS image replacement -// -// Heads up! v3 launched with only `.hide-text()`, but per our pattern for -// mixins being reused as classes with the same name, this doesn't hold up. As -// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. -// -// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 - -// Deprecated as of v3.0.1 (will be removed in v4) -.hide-text() { - font: ~"0/0" a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -// New mixin to use as of v3.0.1 -.text-hide() { - .hide-text(); -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/image.less b/elgg_clean/bower_components/bootstrap/less/mixins/image.less deleted file mode 100644 index f233cb3e..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/image.less +++ /dev/null @@ -1,33 +0,0 @@ -// Image Mixins -// - Responsive image -// - Retina image - - -// Responsive image -// -// Keep images from scaling beyond the width of their parents. -.img-responsive(@display: block) { - display: @display; - max-width: 100%; // Part 1: Set a maximum relative to the parent - height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching -} - - -// Retina image -// -// Short retina mixin for setting background-image and -size. Note that the -// spelling of `min--moz-device-pixel-ratio` is intentional. -.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { - background-image: url("@{file-1x}"); - - @media - only screen and (-webkit-min-device-pixel-ratio: 2), - only screen and ( min--moz-device-pixel-ratio: 2), - only screen and ( -o-min-device-pixel-ratio: 2/1), - only screen and ( min-device-pixel-ratio: 2), - only screen and ( min-resolution: 192dpi), - only screen and ( min-resolution: 2dppx) { - background-image: url("@{file-2x}"); - background-size: @width-1x @height-1x; - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/labels.less b/elgg_clean/bower_components/bootstrap/less/mixins/labels.less deleted file mode 100644 index 9f7a67ee..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/labels.less +++ /dev/null @@ -1,12 +0,0 @@ -// Labels - -.label-variant(@color) { - background-color: @color; - - &[href] { - &:hover, - &:focus { - background-color: darken(@color, 10%); - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/list-group.less b/elgg_clean/bower_components/bootstrap/less/mixins/list-group.less deleted file mode 100644 index 03aa1906..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/list-group.less +++ /dev/null @@ -1,30 +0,0 @@ -// List Groups - -.list-group-item-variant(@state; @background; @color) { - .list-group-item-@{state} { - color: @color; - background-color: @background; - - a&, - button& { - color: @color; - - .list-group-item-heading { - color: inherit; - } - - &:hover, - &:focus { - color: @color; - background-color: darken(@background, 5%); - } - &.active, - &.active:hover, - &.active:focus { - color: #fff; - background-color: @color; - border-color: @color; - } - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/nav-divider.less b/elgg_clean/bower_components/bootstrap/less/mixins/nav-divider.less deleted file mode 100644 index feb1e9ed..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/nav-divider.less +++ /dev/null @@ -1,10 +0,0 @@ -// Horizontal dividers -// -// Dividers (basically an hr) within dropdowns and nav lists - -.nav-divider(@color: #e5e5e5) { - height: 1px; - margin: ((@line-height-computed / 2) - 1) 0; - overflow: hidden; - background-color: @color; -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/nav-vertical-align.less b/elgg_clean/bower_components/bootstrap/less/mixins/nav-vertical-align.less deleted file mode 100644 index d458c786..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/nav-vertical-align.less +++ /dev/null @@ -1,9 +0,0 @@ -// Navbar vertical align -// -// Vertically center elements in the navbar. -// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. - -.navbar-vertical-align(@element-height) { - margin-top: ((@navbar-height - @element-height) / 2); - margin-bottom: ((@navbar-height - @element-height) / 2); -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/opacity.less b/elgg_clean/bower_components/bootstrap/less/mixins/opacity.less deleted file mode 100644 index 33ed25ce..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/opacity.less +++ /dev/null @@ -1,8 +0,0 @@ -// Opacity - -.opacity(@opacity) { - opacity: @opacity; - // IE8 filter - @opacity-ie: (@opacity * 100); - filter: ~"alpha(opacity=@{opacity-ie})"; -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/pagination.less b/elgg_clean/bower_components/bootstrap/less/mixins/pagination.less deleted file mode 100644 index 618804f2..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/pagination.less +++ /dev/null @@ -1,24 +0,0 @@ -// Pagination - -.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { - > li { - > a, - > span { - padding: @padding-vertical @padding-horizontal; - font-size: @font-size; - line-height: @line-height; - } - &:first-child { - > a, - > span { - .border-left-radius(@border-radius); - } - } - &:last-child { - > a, - > span { - .border-right-radius(@border-radius); - } - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/panels.less b/elgg_clean/bower_components/bootstrap/less/mixins/panels.less deleted file mode 100644 index 49ee10d4..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/panels.less +++ /dev/null @@ -1,24 +0,0 @@ -// Panels - -.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { - border-color: @border; - - & > .panel-heading { - color: @heading-text-color; - background-color: @heading-bg-color; - border-color: @heading-border; - - + .panel-collapse > .panel-body { - border-top-color: @border; - } - .badge { - color: @heading-bg-color; - background-color: @heading-text-color; - } - } - & > .panel-footer { - + .panel-collapse > .panel-body { - border-bottom-color: @border; - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/progress-bar.less b/elgg_clean/bower_components/bootstrap/less/mixins/progress-bar.less deleted file mode 100644 index f07996a3..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/progress-bar.less +++ /dev/null @@ -1,10 +0,0 @@ -// Progress bars - -.progress-bar-variant(@color) { - background-color: @color; - - // Deprecated parent class requirement as of v3.2.0 - .progress-striped & { - #gradient > .striped(); - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/reset-filter.less b/elgg_clean/bower_components/bootstrap/less/mixins/reset-filter.less deleted file mode 100644 index 68cdb5e1..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/reset-filter.less +++ /dev/null @@ -1,8 +0,0 @@ -// Reset filters for IE -// -// When you need to remove a gradient background, do not forget to use this to reset -// the IE filter for IE9 and below. - -.reset-filter() { - filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/reset-text.less b/elgg_clean/bower_components/bootstrap/less/mixins/reset-text.less deleted file mode 100644 index 58dd4d19..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/reset-text.less +++ /dev/null @@ -1,18 +0,0 @@ -.reset-text() { - font-family: @font-family-base; - // We deliberately do NOT reset font-size. - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: @line-height-base; - text-align: left; // Fallback for where `start` is not supported - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/resize.less b/elgg_clean/bower_components/bootstrap/less/mixins/resize.less deleted file mode 100644 index 3acd3afd..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/resize.less +++ /dev/null @@ -1,6 +0,0 @@ -// Resize anything - -.resizable(@direction) { - resize: @direction; // Options: horizontal, vertical, both - overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/responsive-visibility.less b/elgg_clean/bower_components/bootstrap/less/mixins/responsive-visibility.less deleted file mode 100644 index ecf1e979..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/responsive-visibility.less +++ /dev/null @@ -1,15 +0,0 @@ -// Responsive utilities - -// -// More easily include all the states for responsive-utilities.less. -.responsive-visibility() { - display: block !important; - table& { display: table !important; } - tr& { display: table-row !important; } - th&, - td& { display: table-cell !important; } -} - -.responsive-invisibility() { - display: none !important; -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/size.less b/elgg_clean/bower_components/bootstrap/less/mixins/size.less deleted file mode 100644 index a8be6508..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/size.less +++ /dev/null @@ -1,10 +0,0 @@ -// Sizing shortcuts - -.size(@width; @height) { - width: @width; - height: @height; -} - -.square(@size) { - .size(@size; @size); -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/tab-focus.less b/elgg_clean/bower_components/bootstrap/less/mixins/tab-focus.less deleted file mode 100644 index 1f1f05ab..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/tab-focus.less +++ /dev/null @@ -1,9 +0,0 @@ -// WebKit-style focus - -.tab-focus() { - // Default - outline: thin dotted; - // WebKit - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/table-row.less b/elgg_clean/bower_components/bootstrap/less/mixins/table-row.less deleted file mode 100644 index 0f287f1a..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/table-row.less +++ /dev/null @@ -1,28 +0,0 @@ -// Tables - -.table-row-variant(@state; @background) { - // Exact selectors below required to override `.table-striped` and prevent - // inheritance to nested tables. - .table > thead > tr, - .table > tbody > tr, - .table > tfoot > tr { - > td.@{state}, - > th.@{state}, - &.@{state} > td, - &.@{state} > th { - background-color: @background; - } - } - - // Hover states for `.table-hover` - // Note: this is not available for cells or rows within `thead` or `tfoot`. - .table-hover > tbody > tr { - > td.@{state}:hover, - > th.@{state}:hover, - &.@{state}:hover > td, - &:hover > .@{state}, - &.@{state}:hover > th { - background-color: darken(@background, 5%); - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/text-emphasis.less b/elgg_clean/bower_components/bootstrap/less/mixins/text-emphasis.less deleted file mode 100644 index 9e8a77a6..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/text-emphasis.less +++ /dev/null @@ -1,9 +0,0 @@ -// Typography - -.text-emphasis-variant(@color) { - color: @color; - a&:hover, - a&:focus { - color: darken(@color, 10%); - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/text-overflow.less b/elgg_clean/bower_components/bootstrap/less/mixins/text-overflow.less deleted file mode 100644 index c11ad2fb..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/text-overflow.less +++ /dev/null @@ -1,8 +0,0 @@ -// Text overflow -// Requires inline-block or block for proper styling - -.text-overflow() { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} diff --git a/elgg_clean/bower_components/bootstrap/less/mixins/vendor-prefixes.less b/elgg_clean/bower_components/bootstrap/less/mixins/vendor-prefixes.less deleted file mode 100644 index afd3331c..00000000 --- a/elgg_clean/bower_components/bootstrap/less/mixins/vendor-prefixes.less +++ /dev/null @@ -1,227 +0,0 @@ -// Vendor Prefixes -// -// All vendor mixins are deprecated as of v3.2.0 due to the introduction of -// Autoprefixer in our Gruntfile. They will be removed in v4. - -// - Animations -// - Backface visibility -// - Box shadow -// - Box sizing -// - Content columns -// - Hyphens -// - Placeholder text -// - Transformations -// - Transitions -// - User Select - - -// Animations -.animation(@animation) { - -webkit-animation: @animation; - -o-animation: @animation; - animation: @animation; -} -.animation-name(@name) { - -webkit-animation-name: @name; - animation-name: @name; -} -.animation-duration(@duration) { - -webkit-animation-duration: @duration; - animation-duration: @duration; -} -.animation-timing-function(@timing-function) { - -webkit-animation-timing-function: @timing-function; - animation-timing-function: @timing-function; -} -.animation-delay(@delay) { - -webkit-animation-delay: @delay; - animation-delay: @delay; -} -.animation-iteration-count(@iteration-count) { - -webkit-animation-iteration-count: @iteration-count; - animation-iteration-count: @iteration-count; -} -.animation-direction(@direction) { - -webkit-animation-direction: @direction; - animation-direction: @direction; -} -.animation-fill-mode(@fill-mode) { - -webkit-animation-fill-mode: @fill-mode; - animation-fill-mode: @fill-mode; -} - -// Backface visibility -// Prevent browsers from flickering when using CSS 3D transforms. -// Default value is `visible`, but can be changed to `hidden` - -.backface-visibility(@visibility){ - -webkit-backface-visibility: @visibility; - -moz-backface-visibility: @visibility; - backface-visibility: @visibility; -} - -// Drop shadows -// -// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's -// supported browsers that have box shadow capabilities now support it. - -.box-shadow(@shadow) { - -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1 - box-shadow: @shadow; -} - -// Box sizing -.box-sizing(@boxmodel) { - -webkit-box-sizing: @boxmodel; - -moz-box-sizing: @boxmodel; - box-sizing: @boxmodel; -} - -// CSS3 Content Columns -.content-columns(@column-count; @column-gap: @grid-gutter-width) { - -webkit-column-count: @column-count; - -moz-column-count: @column-count; - column-count: @column-count; - -webkit-column-gap: @column-gap; - -moz-column-gap: @column-gap; - column-gap: @column-gap; -} - -// Optional hyphenation -.hyphens(@mode: auto) { - word-wrap: break-word; - -webkit-hyphens: @mode; - -moz-hyphens: @mode; - -ms-hyphens: @mode; // IE10+ - -o-hyphens: @mode; - hyphens: @mode; -} - -// Placeholder text -.placeholder(@color: @input-color-placeholder) { - // Firefox - &::-moz-placeholder { - color: @color; - opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526 - } - &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+ - &::-webkit-input-placeholder { color: @color; } // Safari and Chrome -} - -// Transformations -.scale(@ratio) { - -webkit-transform: scale(@ratio); - -ms-transform: scale(@ratio); // IE9 only - -o-transform: scale(@ratio); - transform: scale(@ratio); -} -.scale(@ratioX; @ratioY) { - -webkit-transform: scale(@ratioX, @ratioY); - -ms-transform: scale(@ratioX, @ratioY); // IE9 only - -o-transform: scale(@ratioX, @ratioY); - transform: scale(@ratioX, @ratioY); -} -.scaleX(@ratio) { - -webkit-transform: scaleX(@ratio); - -ms-transform: scaleX(@ratio); // IE9 only - -o-transform: scaleX(@ratio); - transform: scaleX(@ratio); -} -.scaleY(@ratio) { - -webkit-transform: scaleY(@ratio); - -ms-transform: scaleY(@ratio); // IE9 only - -o-transform: scaleY(@ratio); - transform: scaleY(@ratio); -} -.skew(@x; @y) { - -webkit-transform: skewX(@x) skewY(@y); - -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ - -o-transform: skewX(@x) skewY(@y); - transform: skewX(@x) skewY(@y); -} -.translate(@x; @y) { - -webkit-transform: translate(@x, @y); - -ms-transform: translate(@x, @y); // IE9 only - -o-transform: translate(@x, @y); - transform: translate(@x, @y); -} -.translate3d(@x; @y; @z) { - -webkit-transform: translate3d(@x, @y, @z); - transform: translate3d(@x, @y, @z); -} -.rotate(@degrees) { - -webkit-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); // IE9 only - -o-transform: rotate(@degrees); - transform: rotate(@degrees); -} -.rotateX(@degrees) { - -webkit-transform: rotateX(@degrees); - -ms-transform: rotateX(@degrees); // IE9 only - -o-transform: rotateX(@degrees); - transform: rotateX(@degrees); -} -.rotateY(@degrees) { - -webkit-transform: rotateY(@degrees); - -ms-transform: rotateY(@degrees); // IE9 only - -o-transform: rotateY(@degrees); - transform: rotateY(@degrees); -} -.perspective(@perspective) { - -webkit-perspective: @perspective; - -moz-perspective: @perspective; - perspective: @perspective; -} -.perspective-origin(@perspective) { - -webkit-perspective-origin: @perspective; - -moz-perspective-origin: @perspective; - perspective-origin: @perspective; -} -.transform-origin(@origin) { - -webkit-transform-origin: @origin; - -moz-transform-origin: @origin; - -ms-transform-origin: @origin; // IE9 only - transform-origin: @origin; -} - - -// Transitions - -.transition(@transition) { - -webkit-transition: @transition; - -o-transition: @transition; - transition: @transition; -} -.transition-property(@transition-property) { - -webkit-transition-property: @transition-property; - transition-property: @transition-property; -} -.transition-delay(@transition-delay) { - -webkit-transition-delay: @transition-delay; - transition-delay: @transition-delay; -} -.transition-duration(@transition-duration) { - -webkit-transition-duration: @transition-duration; - transition-duration: @transition-duration; -} -.transition-timing-function(@timing-function) { - -webkit-transition-timing-function: @timing-function; - transition-timing-function: @timing-function; -} -.transition-transform(@transition) { - -webkit-transition: -webkit-transform @transition; - -moz-transition: -moz-transform @transition; - -o-transition: -o-transform @transition; - transition: transform @transition; -} - - -// User select -// For selecting text on the page - -.user-select(@select) { - -webkit-user-select: @select; - -moz-user-select: @select; - -ms-user-select: @select; // IE10+ - user-select: @select; -} diff --git a/elgg_clean/bower_components/bootstrap/less/modals.less b/elgg_clean/bower_components/bootstrap/less/modals.less deleted file mode 100644 index 1de62205..00000000 --- a/elgg_clean/bower_components/bootstrap/less/modals.less +++ /dev/null @@ -1,150 +0,0 @@ -// -// Modals -// -------------------------------------------------- - -// .modal-open - body class for killing the scroll -// .modal - container to scroll within -// .modal-dialog - positioning shell for the actual modal -// .modal-content - actual modal w/ bg and corners and shit - -// Kill the scroll on the body -.modal-open { - overflow: hidden; -} - -// Container that the modal scrolls within -.modal { - display: none; - overflow: hidden; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: @zindex-modal; - -webkit-overflow-scrolling: touch; - - // Prevent Chrome on Windows from adding a focus outline. For details, see - // https://github.com/twbs/bootstrap/pull/10951. - outline: 0; - - // When fading in the modal, animate it to slide down - &.fade .modal-dialog { - .translate(0, -25%); - .transition-transform(~"0.3s ease-out"); - } - &.in .modal-dialog { .translate(0, 0) } -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} - -// Shell div to position the modal with bottom padding -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} - -// Actual modal -.modal-content { - position: relative; - background-color: @modal-content-bg; - border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc) - border: 1px solid @modal-content-border-color; - border-radius: @border-radius-large; - .box-shadow(0 3px 9px rgba(0,0,0,.5)); - background-clip: padding-box; - // Remove focus outline from opened modal - outline: 0; -} - -// Modal background -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: @zindex-modal-background; - background-color: @modal-backdrop-bg; - // Fade for backdrop - &.fade { .opacity(0); } - &.in { .opacity(@modal-backdrop-opacity); } -} - -// Modal header -// Top section of the modal w/ title and dismiss -.modal-header { - padding: @modal-title-padding; - border-bottom: 1px solid @modal-header-border-color; - min-height: (@modal-title-padding + @modal-title-line-height); -} -// Close icon -.modal-header .close { - margin-top: -2px; -} - -// Title text within header -.modal-title { - margin: 0; - line-height: @modal-title-line-height; -} - -// Modal body -// Where all modal content resides (sibling of .modal-header and .modal-footer) -.modal-body { - position: relative; - padding: @modal-inner-padding; -} - -// Footer (for actions) -.modal-footer { - padding: @modal-inner-padding; - text-align: right; // right align buttons - border-top: 1px solid @modal-footer-border-color; - &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons - - // Properly space out buttons - .btn + .btn { - margin-left: 5px; - margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs - } - // but override that for button groups - .btn-group .btn + .btn { - margin-left: -1px; - } - // and override it for block buttons as well - .btn-block + .btn-block { - margin-left: 0; - } -} - -// Measure scrollbar width for padding body during modal show/hide -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} - -// Scale up the modal -@media (min-width: @screen-sm-min) { - // Automatically set modal's width for larger viewports - .modal-dialog { - width: @modal-md; - margin: 30px auto; - } - .modal-content { - .box-shadow(0 5px 15px rgba(0,0,0,.5)); - } - - // Modal sizes - .modal-sm { width: @modal-sm; } -} - -@media (min-width: @screen-md-min) { - .modal-lg { width: @modal-lg; } -} diff --git a/elgg_clean/bower_components/bootstrap/less/navbar.less b/elgg_clean/bower_components/bootstrap/less/navbar.less deleted file mode 100644 index 6d751bb9..00000000 --- a/elgg_clean/bower_components/bootstrap/less/navbar.less +++ /dev/null @@ -1,660 +0,0 @@ -// -// Navbars -// -------------------------------------------------- - - -// Wrapper and base class -// -// Provide a static navbar from which we expand to create full-width, fixed, and -// other navbar variations. - -.navbar { - position: relative; - min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode) - margin-bottom: @navbar-margin-bottom; - border: 1px solid transparent; - - // Prevent floats from breaking the navbar - &:extend(.clearfix all); - - @media (min-width: @grid-float-breakpoint) { - border-radius: @navbar-border-radius; - } -} - - -// Navbar heading -// -// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy -// styling of responsive aspects. - -.navbar-header { - &:extend(.clearfix all); - - @media (min-width: @grid-float-breakpoint) { - float: left; - } -} - - -// Navbar collapse (body) -// -// Group your navbar content into this for easy collapsing and expanding across -// various device sizes. By default, this content is collapsed when <768px, but -// will expand past that for a horizontal display. -// -// To start (on mobile devices) the navbar links, forms, and buttons are stacked -// vertically and include a `max-height` to overflow in case you have too much -// content for the user's viewport. - -.navbar-collapse { - overflow-x: visible; - padding-right: @navbar-padding-horizontal; - padding-left: @navbar-padding-horizontal; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255,255,255,.1); - &:extend(.clearfix all); - -webkit-overflow-scrolling: touch; - - &.in { - overflow-y: auto; - } - - @media (min-width: @grid-float-breakpoint) { - width: auto; - border-top: 0; - box-shadow: none; - - &.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; // Override default setting - overflow: visible !important; - } - - &.in { - overflow-y: visible; - } - - // Undo the collapse side padding for navbars with containers to ensure - // alignment of right-aligned contents. - .navbar-fixed-top &, - .navbar-static-top &, - .navbar-fixed-bottom & { - padding-left: 0; - padding-right: 0; - } - } -} - -.navbar-fixed-top, -.navbar-fixed-bottom { - .navbar-collapse { - max-height: @navbar-collapse-max-height; - - @media (max-device-width: @screen-xs-min) and (orientation: landscape) { - max-height: 200px; - } - } -} - - -// Both navbar header and collapse -// -// When a container is present, change the behavior of the header and collapse. - -.container, -.container-fluid { - > .navbar-header, - > .navbar-collapse { - margin-right: -@navbar-padding-horizontal; - margin-left: -@navbar-padding-horizontal; - - @media (min-width: @grid-float-breakpoint) { - margin-right: 0; - margin-left: 0; - } - } -} - - -// -// Navbar alignment options -// -// Display the navbar across the entirety of the page or fixed it to the top or -// bottom of the page. - -// Static top (unfixed, but 100% wide) navbar -.navbar-static-top { - z-index: @zindex-navbar; - border-width: 0 0 1px; - - @media (min-width: @grid-float-breakpoint) { - border-radius: 0; - } -} - -// Fix the top/bottom navbars when screen real estate supports it -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: @zindex-navbar-fixed; - - // Undo the rounded corners - @media (min-width: @grid-float-breakpoint) { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; // override .navbar defaults - border-width: 1px 0 0; -} - - -// Brand/project name - -.navbar-brand { - float: left; - padding: @navbar-padding-vertical @navbar-padding-horizontal; - font-size: @font-size-large; - line-height: @line-height-computed; - height: @navbar-height; - - &:hover, - &:focus { - text-decoration: none; - } - - > img { - display: block; - } - - @media (min-width: @grid-float-breakpoint) { - .navbar > .container &, - .navbar > .container-fluid & { - margin-left: -@navbar-padding-horizontal; - } - } -} - - -// Navbar toggle -// -// Custom button for toggling the `.navbar-collapse`, powered by the collapse -// JavaScript plugin. - -.navbar-toggle { - position: relative; - float: right; - margin-right: @navbar-padding-horizontal; - padding: 9px 10px; - .navbar-vertical-align(34px); - background-color: transparent; - background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 - border: 1px solid transparent; - border-radius: @border-radius-base; - - // We remove the `outline` here, but later compensate by attaching `:hover` - // styles to `:focus`. - &:focus { - outline: 0; - } - - // Bars - .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; - } - .icon-bar + .icon-bar { - margin-top: 4px; - } - - @media (min-width: @grid-float-breakpoint) { - display: none; - } -} - - -// Navbar nav links -// -// Builds on top of the `.nav` components with its own modifier class to make -// the nav the full height of the horizontal nav (above 768px). - -.navbar-nav { - margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal; - - > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: @line-height-computed; - } - - @media (max-width: @grid-float-breakpoint-max) { - // Dropdowns get custom display when collapsed - .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - box-shadow: none; - > li > a, - .dropdown-header { - padding: 5px 15px 5px 25px; - } - > li > a { - line-height: @line-height-computed; - &:hover, - &:focus { - background-image: none; - } - } - } - } - - // Uncollapse the nav - @media (min-width: @grid-float-breakpoint) { - float: left; - margin: 0; - - > li { - float: left; - > a { - padding-top: @navbar-padding-vertical; - padding-bottom: @navbar-padding-vertical; - } - } - } -} - - -// Navbar form -// -// Extension of the `.form-inline` with some extra flavor for optimum display in -// our navbars. - -.navbar-form { - margin-left: -@navbar-padding-horizontal; - margin-right: -@navbar-padding-horizontal; - padding: 10px @navbar-padding-horizontal; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - .box-shadow(@shadow); - - // Mixin behavior for optimum display - .form-inline(); - - .form-group { - @media (max-width: @grid-float-breakpoint-max) { - margin-bottom: 5px; - - &:last-child { - margin-bottom: 0; - } - } - } - - // Vertically center in expanded, horizontal navbar - .navbar-vertical-align(@input-height-base); - - // Undo 100% width for pull classes - @media (min-width: @grid-float-breakpoint) { - width: auto; - border: 0; - margin-left: 0; - margin-right: 0; - padding-top: 0; - padding-bottom: 0; - .box-shadow(none); - } -} - - -// Dropdown menus - -// Menu position and menu carets -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - .border-top-radius(0); -} -// Menu position and menu caret support for dropups via extra dropup class -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - .border-top-radius(@navbar-border-radius); - .border-bottom-radius(0); -} - - -// Buttons in navbars -// -// Vertically center a button within a navbar (when *not* in a form). - -.navbar-btn { - .navbar-vertical-align(@input-height-base); - - &.btn-sm { - .navbar-vertical-align(@input-height-small); - } - &.btn-xs { - .navbar-vertical-align(22); - } -} - - -// Text in navbars -// -// Add a class to make any element properly align itself vertically within the navbars. - -.navbar-text { - .navbar-vertical-align(@line-height-computed); - - @media (min-width: @grid-float-breakpoint) { - float: left; - margin-left: @navbar-padding-horizontal; - margin-right: @navbar-padding-horizontal; - } -} - - -// Component alignment -// -// Repurpose the pull utilities as their own navbar utilities to avoid specificity -// issues with parents and chaining. Only do this when the navbar is uncollapsed -// though so that navbar contents properly stack and align in mobile. -// -// Declared after the navbar components to ensure more specificity on the margins. - -@media (min-width: @grid-float-breakpoint) { - .navbar-left { .pull-left(); } - .navbar-right { - .pull-right(); - margin-right: -@navbar-padding-horizontal; - - ~ .navbar-right { - margin-right: 0; - } - } -} - - -// Alternate navbars -// -------------------------------------------------- - -// Default navbar -.navbar-default { - background-color: @navbar-default-bg; - border-color: @navbar-default-border; - - .navbar-brand { - color: @navbar-default-brand-color; - &:hover, - &:focus { - color: @navbar-default-brand-hover-color; - background-color: @navbar-default-brand-hover-bg; - } - } - - .navbar-text { - color: @navbar-default-color; - } - - .navbar-nav { - > li > a { - color: @navbar-default-link-color; - - &:hover, - &:focus { - color: @navbar-default-link-hover-color; - background-color: @navbar-default-link-hover-bg; - } - } - > .active > a { - &, - &:hover, - &:focus { - color: @navbar-default-link-active-color; - background-color: @navbar-default-link-active-bg; - } - } - > .disabled > a { - &, - &:hover, - &:focus { - color: @navbar-default-link-disabled-color; - background-color: @navbar-default-link-disabled-bg; - } - } - } - - .navbar-toggle { - border-color: @navbar-default-toggle-border-color; - &:hover, - &:focus { - background-color: @navbar-default-toggle-hover-bg; - } - .icon-bar { - background-color: @navbar-default-toggle-icon-bar-bg; - } - } - - .navbar-collapse, - .navbar-form { - border-color: @navbar-default-border; - } - - // Dropdown menu items - .navbar-nav { - // Remove background color from open dropdown - > .open > a { - &, - &:hover, - &:focus { - background-color: @navbar-default-link-active-bg; - color: @navbar-default-link-active-color; - } - } - - @media (max-width: @grid-float-breakpoint-max) { - // Dropdowns get custom display when collapsed - .open .dropdown-menu { - > li > a { - color: @navbar-default-link-color; - &:hover, - &:focus { - color: @navbar-default-link-hover-color; - background-color: @navbar-default-link-hover-bg; - } - } - > .active > a { - &, - &:hover, - &:focus { - color: @navbar-default-link-active-color; - background-color: @navbar-default-link-active-bg; - } - } - > .disabled > a { - &, - &:hover, - &:focus { - color: @navbar-default-link-disabled-color; - background-color: @navbar-default-link-disabled-bg; - } - } - } - } - } - - - // Links in navbars - // - // Add a class to ensure links outside the navbar nav are colored correctly. - - .navbar-link { - color: @navbar-default-link-color; - &:hover { - color: @navbar-default-link-hover-color; - } - } - - .btn-link { - color: @navbar-default-link-color; - &:hover, - &:focus { - color: @navbar-default-link-hover-color; - } - &[disabled], - fieldset[disabled] & { - &:hover, - &:focus { - color: @navbar-default-link-disabled-color; - } - } - } -} - -// Inverse navbar - -.navbar-inverse { - background-color: @navbar-inverse-bg; - border-color: @navbar-inverse-border; - - .navbar-brand { - color: @navbar-inverse-brand-color; - &:hover, - &:focus { - color: @navbar-inverse-brand-hover-color; - background-color: @navbar-inverse-brand-hover-bg; - } - } - - .navbar-text { - color: @navbar-inverse-color; - } - - .navbar-nav { - > li > a { - color: @navbar-inverse-link-color; - - &:hover, - &:focus { - color: @navbar-inverse-link-hover-color; - background-color: @navbar-inverse-link-hover-bg; - } - } - > .active > a { - &, - &:hover, - &:focus { - color: @navbar-inverse-link-active-color; - background-color: @navbar-inverse-link-active-bg; - } - } - > .disabled > a { - &, - &:hover, - &:focus { - color: @navbar-inverse-link-disabled-color; - background-color: @navbar-inverse-link-disabled-bg; - } - } - } - - // Darken the responsive nav toggle - .navbar-toggle { - border-color: @navbar-inverse-toggle-border-color; - &:hover, - &:focus { - background-color: @navbar-inverse-toggle-hover-bg; - } - .icon-bar { - background-color: @navbar-inverse-toggle-icon-bar-bg; - } - } - - .navbar-collapse, - .navbar-form { - border-color: darken(@navbar-inverse-bg, 7%); - } - - // Dropdowns - .navbar-nav { - > .open > a { - &, - &:hover, - &:focus { - background-color: @navbar-inverse-link-active-bg; - color: @navbar-inverse-link-active-color; - } - } - - @media (max-width: @grid-float-breakpoint-max) { - // Dropdowns get custom display - .open .dropdown-menu { - > .dropdown-header { - border-color: @navbar-inverse-border; - } - .divider { - background-color: @navbar-inverse-border; - } - > li > a { - color: @navbar-inverse-link-color; - &:hover, - &:focus { - color: @navbar-inverse-link-hover-color; - background-color: @navbar-inverse-link-hover-bg; - } - } - > .active > a { - &, - &:hover, - &:focus { - color: @navbar-inverse-link-active-color; - background-color: @navbar-inverse-link-active-bg; - } - } - > .disabled > a { - &, - &:hover, - &:focus { - color: @navbar-inverse-link-disabled-color; - background-color: @navbar-inverse-link-disabled-bg; - } - } - } - } - } - - .navbar-link { - color: @navbar-inverse-link-color; - &:hover { - color: @navbar-inverse-link-hover-color; - } - } - - .btn-link { - color: @navbar-inverse-link-color; - &:hover, - &:focus { - color: @navbar-inverse-link-hover-color; - } - &[disabled], - fieldset[disabled] & { - &:hover, - &:focus { - color: @navbar-inverse-link-disabled-color; - } - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/navs.less b/elgg_clean/bower_components/bootstrap/less/navs.less deleted file mode 100644 index a3d11b13..00000000 --- a/elgg_clean/bower_components/bootstrap/less/navs.less +++ /dev/null @@ -1,242 +0,0 @@ -// -// Navs -// -------------------------------------------------- - - -// Base class -// -------------------------------------------------- - -.nav { - margin-bottom: 0; - padding-left: 0; // Override default ul/ol - list-style: none; - &:extend(.clearfix all); - - > li { - position: relative; - display: block; - - > a { - position: relative; - display: block; - padding: @nav-link-padding; - &:hover, - &:focus { - text-decoration: none; - background-color: @nav-link-hover-bg; - } - } - - // Disabled state sets text to gray and nukes hover/tab effects - &.disabled > a { - color: @nav-disabled-link-color; - - &:hover, - &:focus { - color: @nav-disabled-link-hover-color; - text-decoration: none; - background-color: transparent; - cursor: @cursor-disabled; - } - } - } - - // Open dropdowns - .open > a { - &, - &:hover, - &:focus { - background-color: @nav-link-hover-bg; - border-color: @link-color; - } - } - - // Nav dividers (deprecated with v3.0.1) - // - // This should have been removed in v3 with the dropping of `.nav-list`, but - // we missed it. We don't currently support this anywhere, but in the interest - // of maintaining backward compatibility in case you use it, it's deprecated. - .nav-divider { - .nav-divider(); - } - - // Prevent IE8 from misplacing imgs - // - // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989 - > li > a > img { - max-width: none; - } -} - - -// Tabs -// ------------------------- - -// Give the tabs something to sit on -.nav-tabs { - border-bottom: 1px solid @nav-tabs-border-color; - > li { - float: left; - // Make the list-items overlay the bottom border - margin-bottom: -1px; - - // Actual tabs (as links) - > a { - margin-right: 2px; - line-height: @line-height-base; - border: 1px solid transparent; - border-radius: @border-radius-base @border-radius-base 0 0; - &:hover { - border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color; - } - } - - // Active state, and its :hover to override normal :hover - &.active > a { - &, - &:hover, - &:focus { - color: @nav-tabs-active-link-hover-color; - background-color: @nav-tabs-active-link-hover-bg; - border: 1px solid @nav-tabs-active-link-hover-border-color; - border-bottom-color: transparent; - cursor: default; - } - } - } - // pulling this in mainly for less shorthand - &.nav-justified { - .nav-justified(); - .nav-tabs-justified(); - } -} - - -// Pills -// ------------------------- -.nav-pills { - > li { - float: left; - - // Links rendered as pills - > a { - border-radius: @nav-pills-border-radius; - } - + li { - margin-left: 2px; - } - - // Active state - &.active > a { - &, - &:hover, - &:focus { - color: @nav-pills-active-link-hover-color; - background-color: @nav-pills-active-link-hover-bg; - } - } - } -} - - -// Stacked pills -.nav-stacked { - > li { - float: none; - + li { - margin-top: 2px; - margin-left: 0; // no need for this gap between nav items - } - } -} - - -// Nav variations -// -------------------------------------------------- - -// Justified nav links -// ------------------------- - -.nav-justified { - width: 100%; - - > li { - float: none; - > a { - text-align: center; - margin-bottom: 5px; - } - } - - > .dropdown .dropdown-menu { - top: auto; - left: auto; - } - - @media (min-width: @screen-sm-min) { - > li { - display: table-cell; - width: 1%; - > a { - margin-bottom: 0; - } - } - } -} - -// Move borders to anchors instead of bottom of list -// -// Mixin for adding on top the shared `.nav-justified` styles for our tabs -.nav-tabs-justified { - border-bottom: 0; - - > li > a { - // Override margin from .nav-tabs - margin-right: 0; - border-radius: @border-radius-base; - } - - > .active > a, - > .active > a:hover, - > .active > a:focus { - border: 1px solid @nav-tabs-justified-link-border-color; - } - - @media (min-width: @screen-sm-min) { - > li > a { - border-bottom: 1px solid @nav-tabs-justified-link-border-color; - border-radius: @border-radius-base @border-radius-base 0 0; - } - > .active > a, - > .active > a:hover, - > .active > a:focus { - border-bottom-color: @nav-tabs-justified-active-link-border-color; - } - } -} - - -// Tabbable tabs -// ------------------------- - -// Hide tabbable panes to start, show them when `.active` -.tab-content { - > .tab-pane { - display: none; - } - > .active { - display: block; - } -} - - -// Dropdowns -// ------------------------- - -// Specific dropdowns -.nav-tabs .dropdown-menu { - // make dropdown border overlap tab border - margin-top: -1px; - // Remove the top rounded corners here since there is a hard edge above the menu - .border-top-radius(0); -} diff --git a/elgg_clean/bower_components/bootstrap/less/normalize.less b/elgg_clean/bower_components/bootstrap/less/normalize.less deleted file mode 100644 index 9dddf73a..00000000 --- a/elgg_clean/bower_components/bootstrap/less/normalize.less +++ /dev/null @@ -1,424 +0,0 @@ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ - -// -// 1. Set default font family to sans-serif. -// 2. Prevent iOS and IE text size adjust after device orientation change, -// without disabling user zoom. -// - -html { - font-family: sans-serif; // 1 - -ms-text-size-adjust: 100%; // 2 - -webkit-text-size-adjust: 100%; // 2 -} - -// -// Remove default margin. -// - -body { - margin: 0; -} - -// HTML5 display definitions -// ========================================================================== - -// -// Correct `block` display not defined for any HTML5 element in IE 8/9. -// Correct `block` display not defined for `details` or `summary` in IE 10/11 -// and Firefox. -// Correct `block` display not defined for `main` in IE 11. -// - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} - -// -// 1. Correct `inline-block` display not defined in IE 8/9. -// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. -// - -audio, -canvas, -progress, -video { - display: inline-block; // 1 - vertical-align: baseline; // 2 -} - -// -// Prevent modern browsers from displaying `audio` without controls. -// Remove excess height in iOS 5 devices. -// - -audio:not([controls]) { - display: none; - height: 0; -} - -// -// Address `[hidden]` styling not present in IE 8/9/10. -// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. -// - -[hidden], -template { - display: none; -} - -// Links -// ========================================================================== - -// -// Remove the gray background color from active links in IE 10. -// - -a { - background-color: transparent; -} - -// -// Improve readability of focused elements when they are also in an -// active/hover state. -// - -a:active, -a:hover { - outline: 0; -} - -// Text-level semantics -// ========================================================================== - -// -// Address styling not present in IE 8/9/10/11, Safari, and Chrome. -// - -abbr[title] { - border-bottom: 1px dotted; -} - -// -// Address style set to `bolder` in Firefox 4+, Safari, and Chrome. -// - -b, -strong { - font-weight: bold; -} - -// -// Address styling not present in Safari and Chrome. -// - -dfn { - font-style: italic; -} - -// -// Address variable `h1` font-size and margin within `section` and `article` -// contexts in Firefox 4+, Safari, and Chrome. -// - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -// -// Address styling not present in IE 8/9. -// - -mark { - background: #ff0; - color: #000; -} - -// -// Address inconsistent and variable font size in all browsers. -// - -small { - font-size: 80%; -} - -// -// Prevent `sub` and `sup` affecting `line-height` in all browsers. -// - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -// Embedded content -// ========================================================================== - -// -// Remove border when inside `a` element in IE 8/9/10. -// - -img { - border: 0; -} - -// -// Correct overflow not hidden in IE 9/10/11. -// - -svg:not(:root) { - overflow: hidden; -} - -// Grouping content -// ========================================================================== - -// -// Address margin not present in IE 8/9 and Safari. -// - -figure { - margin: 1em 40px; -} - -// -// Address differences between Firefox and other browsers. -// - -hr { - box-sizing: content-box; - height: 0; -} - -// -// Contain overflow in all browsers. -// - -pre { - overflow: auto; -} - -// -// Address odd `em`-unit font size rendering in all browsers. -// - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -// Forms -// ========================================================================== - -// -// Known limitation: by default, Chrome and Safari on OS X allow very limited -// styling of `select`, unless a `border` property is set. -// - -// -// 1. Correct color not being inherited. -// Known issue: affects color of disabled elements. -// 2. Correct font properties not being inherited. -// 3. Address margins set differently in Firefox 4+, Safari, and Chrome. -// - -button, -input, -optgroup, -select, -textarea { - color: inherit; // 1 - font: inherit; // 2 - margin: 0; // 3 -} - -// -// Address `overflow` set to `hidden` in IE 8/9/10/11. -// - -button { - overflow: visible; -} - -// -// Address inconsistent `text-transform` inheritance for `button` and `select`. -// All other form control elements do not inherit `text-transform` values. -// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. -// Correct `select` style inheritance in Firefox. -// - -button, -select { - text-transform: none; -} - -// -// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` -// and `video` controls. -// 2. Correct inability to style clickable `input` types in iOS. -// 3. Improve usability and consistency of cursor style between image-type -// `input` and others. -// - -button, -html input[type="button"], // 1 -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; // 2 - cursor: pointer; // 3 -} - -// -// Re-set default cursor for disabled elements. -// - -button[disabled], -html input[disabled] { - cursor: default; -} - -// -// Remove inner padding and border in Firefox 4+. -// - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -// -// Address Firefox 4+ setting `line-height` on `input` using `!important` in -// the UA stylesheet. -// - -input { - line-height: normal; -} - -// -// It's recommended that you don't attempt to style these elements. -// Firefox's implementation doesn't respect box-sizing, padding, or width. -// -// 1. Address box sizing set to `content-box` in IE 8/9/10. -// 2. Remove excess padding in IE 8/9/10. -// - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; // 1 - padding: 0; // 2 -} - -// -// Fix the cursor style for Chrome's increment/decrement buttons. For certain -// `font-size` values of the `input`, it causes the cursor style of the -// decrement button to change from `default` to `text`. -// - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -// -// 1. Address `appearance` set to `searchfield` in Safari and Chrome. -// 2. Address `box-sizing` set to `border-box` in Safari and Chrome. -// - -input[type="search"] { - -webkit-appearance: textfield; // 1 - box-sizing: content-box; //2 -} - -// -// Remove inner padding and search cancel button in Safari and Chrome on OS X. -// Safari (but not Chrome) clips the cancel button when the search input has -// padding (and `textfield` appearance). -// - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -// -// Define consistent border, margin, and padding. -// - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -// -// 1. Correct `color` not being inherited in IE 8/9/10/11. -// 2. Remove padding so people aren't caught out if they zero out fieldsets. -// - -legend { - border: 0; // 1 - padding: 0; // 2 -} - -// -// Remove default vertical scrollbar in IE 8/9/10/11. -// - -textarea { - overflow: auto; -} - -// -// Don't inherit the `font-weight` (applied by a rule above). -// NOTE: the default cannot safely be changed in Chrome and Safari on OS X. -// - -optgroup { - font-weight: bold; -} - -// Tables -// ========================================================================== - -// -// Remove most spacing between table cells. -// - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} diff --git a/elgg_clean/bower_components/bootstrap/less/pager.less b/elgg_clean/bower_components/bootstrap/less/pager.less deleted file mode 100644 index 41abaaad..00000000 --- a/elgg_clean/bower_components/bootstrap/less/pager.less +++ /dev/null @@ -1,54 +0,0 @@ -// -// Pager pagination -// -------------------------------------------------- - - -.pager { - padding-left: 0; - margin: @line-height-computed 0; - list-style: none; - text-align: center; - &:extend(.clearfix all); - li { - display: inline; - > a, - > span { - display: inline-block; - padding: 5px 14px; - background-color: @pager-bg; - border: 1px solid @pager-border; - border-radius: @pager-border-radius; - } - - > a:hover, - > a:focus { - text-decoration: none; - background-color: @pager-hover-bg; - } - } - - .next { - > a, - > span { - float: right; - } - } - - .previous { - > a, - > span { - float: left; - } - } - - .disabled { - > a, - > a:hover, - > a:focus, - > span { - color: @pager-disabled-color; - background-color: @pager-bg; - cursor: @cursor-disabled; - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/pagination.less b/elgg_clean/bower_components/bootstrap/less/pagination.less deleted file mode 100644 index 31a23bf7..00000000 --- a/elgg_clean/bower_components/bootstrap/less/pagination.less +++ /dev/null @@ -1,89 +0,0 @@ -// -// Pagination (multiple pages) -// -------------------------------------------------- -.pagination { - display: inline-block; - padding-left: 0; - margin: @line-height-computed 0; - border-radius: @border-radius-base; - - > li { - display: inline; // Remove list-style and block-level defaults - > a, - > span { - position: relative; - float: left; // Collapse white-space - padding: @padding-base-vertical @padding-base-horizontal; - line-height: @line-height-base; - text-decoration: none; - color: @pagination-color; - background-color: @pagination-bg; - border: 1px solid @pagination-border; - margin-left: -1px; - } - &:first-child { - > a, - > span { - margin-left: 0; - .border-left-radius(@border-radius-base); - } - } - &:last-child { - > a, - > span { - .border-right-radius(@border-radius-base); - } - } - } - - > li > a, - > li > span { - &:hover, - &:focus { - z-index: 3; - color: @pagination-hover-color; - background-color: @pagination-hover-bg; - border-color: @pagination-hover-border; - } - } - - > .active > a, - > .active > span { - &, - &:hover, - &:focus { - z-index: 2; - color: @pagination-active-color; - background-color: @pagination-active-bg; - border-color: @pagination-active-border; - cursor: default; - } - } - - > .disabled { - > span, - > span:hover, - > span:focus, - > a, - > a:hover, - > a:focus { - color: @pagination-disabled-color; - background-color: @pagination-disabled-bg; - border-color: @pagination-disabled-border; - cursor: @cursor-disabled; - } - } -} - -// Sizing -// -------------------------------------------------- - -// Large -.pagination-lg { - .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); -} - -// Small -.pagination-sm { - .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); -} diff --git a/elgg_clean/bower_components/bootstrap/less/panels.less b/elgg_clean/bower_components/bootstrap/less/panels.less deleted file mode 100644 index 425eb5e6..00000000 --- a/elgg_clean/bower_components/bootstrap/less/panels.less +++ /dev/null @@ -1,271 +0,0 @@ -// -// Panels -// -------------------------------------------------- - - -// Base class -.panel { - margin-bottom: @line-height-computed; - background-color: @panel-bg; - border: 1px solid transparent; - border-radius: @panel-border-radius; - .box-shadow(0 1px 1px rgba(0,0,0,.05)); -} - -// Panel contents -.panel-body { - padding: @panel-body-padding; - &:extend(.clearfix all); -} - -// Optional heading -.panel-heading { - padding: @panel-heading-padding; - border-bottom: 1px solid transparent; - .border-top-radius((@panel-border-radius - 1)); - - > .dropdown .dropdown-toggle { - color: inherit; - } -} - -// Within heading, strip any `h*` tag of its default margins for spacing. -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: ceil((@font-size-base * 1.125)); - color: inherit; - - > a, - > small, - > .small, - > small > a, - > .small > a { - color: inherit; - } -} - -// Optional footer (stays gray in every modifier class) -.panel-footer { - padding: @panel-footer-padding; - background-color: @panel-footer-bg; - border-top: 1px solid @panel-inner-border; - .border-bottom-radius((@panel-border-radius - 1)); -} - - -// List groups in panels -// -// By default, space out list group content from panel headings to account for -// any kind of custom content between the two. - -.panel { - > .list-group, - > .panel-collapse > .list-group { - margin-bottom: 0; - - .list-group-item { - border-width: 1px 0; - border-radius: 0; - } - - // Add border top radius for first one - &:first-child { - .list-group-item:first-child { - border-top: 0; - .border-top-radius((@panel-border-radius - 1)); - } - } - - // Add border bottom radius for last one - &:last-child { - .list-group-item:last-child { - border-bottom: 0; - .border-bottom-radius((@panel-border-radius - 1)); - } - } - } - > .panel-heading + .panel-collapse > .list-group { - .list-group-item:first-child { - .border-top-radius(0); - } - } -} -// Collapse space between when there's no additional content. -.panel-heading + .list-group { - .list-group-item:first-child { - border-top-width: 0; - } -} -.list-group + .panel-footer { - border-top-width: 0; -} - -// Tables in panels -// -// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and -// watch it go full width. - -.panel { - > .table, - > .table-responsive > .table, - > .panel-collapse > .table { - margin-bottom: 0; - - caption { - padding-left: @panel-body-padding; - padding-right: @panel-body-padding; - } - } - // Add border top radius for first one - > .table:first-child, - > .table-responsive:first-child > .table:first-child { - .border-top-radius((@panel-border-radius - 1)); - - > thead:first-child, - > tbody:first-child { - > tr:first-child { - border-top-left-radius: (@panel-border-radius - 1); - border-top-right-radius: (@panel-border-radius - 1); - - td:first-child, - th:first-child { - border-top-left-radius: (@panel-border-radius - 1); - } - td:last-child, - th:last-child { - border-top-right-radius: (@panel-border-radius - 1); - } - } - } - } - // Add border bottom radius for last one - > .table:last-child, - > .table-responsive:last-child > .table:last-child { - .border-bottom-radius((@panel-border-radius - 1)); - - > tbody:last-child, - > tfoot:last-child { - > tr:last-child { - border-bottom-left-radius: (@panel-border-radius - 1); - border-bottom-right-radius: (@panel-border-radius - 1); - - td:first-child, - th:first-child { - border-bottom-left-radius: (@panel-border-radius - 1); - } - td:last-child, - th:last-child { - border-bottom-right-radius: (@panel-border-radius - 1); - } - } - } - } - > .panel-body + .table, - > .panel-body + .table-responsive, - > .table + .panel-body, - > .table-responsive + .panel-body { - border-top: 1px solid @table-border-color; - } - > .table > tbody:first-child > tr:first-child th, - > .table > tbody:first-child > tr:first-child td { - border-top: 0; - } - > .table-bordered, - > .table-responsive > .table-bordered { - border: 0; - > thead, - > tbody, - > tfoot { - > tr { - > th:first-child, - > td:first-child { - border-left: 0; - } - > th:last-child, - > td:last-child { - border-right: 0; - } - } - } - > thead, - > tbody { - > tr:first-child { - > td, - > th { - border-bottom: 0; - } - } - } - > tbody, - > tfoot { - > tr:last-child { - > td, - > th { - border-bottom: 0; - } - } - } - } - > .table-responsive { - border: 0; - margin-bottom: 0; - } -} - - -// Collapsable panels (aka, accordion) -// -// Wrap a series of panels in `.panel-group` to turn them into an accordion with -// the help of our collapse JavaScript plugin. - -.panel-group { - margin-bottom: @line-height-computed; - - // Tighten up margin so it's only between panels - .panel { - margin-bottom: 0; - border-radius: @panel-border-radius; - - + .panel { - margin-top: 5px; - } - } - - .panel-heading { - border-bottom: 0; - - + .panel-collapse > .panel-body, - + .panel-collapse > .list-group { - border-top: 1px solid @panel-inner-border; - } - } - - .panel-footer { - border-top: 0; - + .panel-collapse .panel-body { - border-bottom: 1px solid @panel-inner-border; - } - } -} - - -// Contextual variations -.panel-default { - .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border); -} -.panel-primary { - .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border); -} -.panel-success { - .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border); -} -.panel-info { - .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border); -} -.panel-warning { - .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border); -} -.panel-danger { - .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border); -} diff --git a/elgg_clean/bower_components/bootstrap/less/popovers.less b/elgg_clean/bower_components/bootstrap/less/popovers.less deleted file mode 100644 index 3a62a645..00000000 --- a/elgg_clean/bower_components/bootstrap/less/popovers.less +++ /dev/null @@ -1,131 +0,0 @@ -// -// Popovers -// -------------------------------------------------- - - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: @zindex-popover; - display: none; - max-width: @popover-max-width; - padding: 1px; - // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element. - // So reset our font and text properties to avoid inheriting weird values. - .reset-text(); - font-size: @font-size-base; - - background-color: @popover-bg; - background-clip: padding-box; - border: 1px solid @popover-fallback-border-color; - border: 1px solid @popover-border-color; - border-radius: @border-radius-large; - .box-shadow(0 5px 10px rgba(0,0,0,.2)); - - // Offset the popover to account for the popover arrow - &.top { margin-top: -@popover-arrow-width; } - &.right { margin-left: @popover-arrow-width; } - &.bottom { margin-top: @popover-arrow-width; } - &.left { margin-left: -@popover-arrow-width; } -} - -.popover-title { - margin: 0; // reset heading margin - padding: 8px 14px; - font-size: @font-size-base; - background-color: @popover-title-bg; - border-bottom: 1px solid darken(@popover-title-bg, 5%); - border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0; -} - -.popover-content { - padding: 9px 14px; -} - -// Arrows -// -// .arrow is outer, .arrow:after is inner - -.popover > .arrow { - &, - &:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - } -} -.popover > .arrow { - border-width: @popover-arrow-outer-width; -} -.popover > .arrow:after { - border-width: @popover-arrow-width; - content: ""; -} - -.popover { - &.top > .arrow { - left: 50%; - margin-left: -@popover-arrow-outer-width; - border-bottom-width: 0; - border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback - border-top-color: @popover-arrow-outer-color; - bottom: -@popover-arrow-outer-width; - &:after { - content: " "; - bottom: 1px; - margin-left: -@popover-arrow-width; - border-bottom-width: 0; - border-top-color: @popover-arrow-color; - } - } - &.right > .arrow { - top: 50%; - left: -@popover-arrow-outer-width; - margin-top: -@popover-arrow-outer-width; - border-left-width: 0; - border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback - border-right-color: @popover-arrow-outer-color; - &:after { - content: " "; - left: 1px; - bottom: -@popover-arrow-width; - border-left-width: 0; - border-right-color: @popover-arrow-color; - } - } - &.bottom > .arrow { - left: 50%; - margin-left: -@popover-arrow-outer-width; - border-top-width: 0; - border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback - border-bottom-color: @popover-arrow-outer-color; - top: -@popover-arrow-outer-width; - &:after { - content: " "; - top: 1px; - margin-left: -@popover-arrow-width; - border-top-width: 0; - border-bottom-color: @popover-arrow-color; - } - } - - &.left > .arrow { - top: 50%; - right: -@popover-arrow-outer-width; - margin-top: -@popover-arrow-outer-width; - border-right-width: 0; - border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback - border-left-color: @popover-arrow-outer-color; - &:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: @popover-arrow-color; - bottom: -@popover-arrow-width; - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/print.less b/elgg_clean/bower_components/bootstrap/less/print.less deleted file mode 100644 index 66e54ab4..00000000 --- a/elgg_clean/bower_components/bootstrap/less/print.less +++ /dev/null @@ -1,101 +0,0 @@ -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ - -// ========================================================================== -// Print styles. -// Inlined to avoid the additional HTTP request: h5bp.com/r -// ========================================================================== - -@media print { - *, - *:before, - *:after { - background: transparent !important; - color: #000 !important; // Black prints faster: h5bp.com/s - box-shadow: none !important; - text-shadow: none !important; - } - - a, - a:visited { - text-decoration: underline; - } - - a[href]:after { - content: " (" attr(href) ")"; - } - - abbr[title]:after { - content: " (" attr(title) ")"; - } - - // Don't show links that are fragment identifiers, - // or use the `javascript:` pseudo protocol - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - - thead { - display: table-header-group; // h5bp.com/t - } - - tr, - img { - page-break-inside: avoid; - } - - img { - max-width: 100% !important; - } - - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - - h2, - h3 { - page-break-after: avoid; - } - - // Bootstrap specific changes start - - // Bootstrap components - .navbar { - display: none; - } - .btn, - .dropup > .btn { - > .caret { - border-top-color: #000 !important; - } - } - .label { - border: 1px solid #000; - } - - .table { - border-collapse: collapse !important; - - td, - th { - background-color: #fff !important; - } - } - .table-bordered { - th, - td { - border: 1px solid #ddd !important; - } - } - - // Bootstrap specific changes end -} diff --git a/elgg_clean/bower_components/bootstrap/less/progress-bars.less b/elgg_clean/bower_components/bootstrap/less/progress-bars.less deleted file mode 100644 index 8868a1fe..00000000 --- a/elgg_clean/bower_components/bootstrap/less/progress-bars.less +++ /dev/null @@ -1,87 +0,0 @@ -// -// Progress bars -// -------------------------------------------------- - - -// Bar animations -// ------------------------- - -// WebKit -@-webkit-keyframes progress-bar-stripes { - from { background-position: 40px 0; } - to { background-position: 0 0; } -} - -// Spec and IE10+ -@keyframes progress-bar-stripes { - from { background-position: 40px 0; } - to { background-position: 0 0; } -} - - -// Bar itself -// ------------------------- - -// Outer container -.progress { - overflow: hidden; - height: @line-height-computed; - margin-bottom: @line-height-computed; - background-color: @progress-bg; - border-radius: @progress-border-radius; - .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); -} - -// Bar of progress -.progress-bar { - float: left; - width: 0%; - height: 100%; - font-size: @font-size-small; - line-height: @line-height-computed; - color: @progress-bar-color; - text-align: center; - background-color: @progress-bar-bg; - .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); - .transition(width .6s ease); -} - -// Striped bars -// -// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the -// `.progress-bar-striped` class, which you just add to an existing -// `.progress-bar`. -.progress-striped .progress-bar, -.progress-bar-striped { - #gradient > .striped(); - background-size: 40px 40px; -} - -// Call animation for the active one -// -// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the -// `.progress-bar.active` approach. -.progress.active .progress-bar, -.progress-bar.active { - .animation(progress-bar-stripes 2s linear infinite); -} - - -// Variations -// ------------------------- - -.progress-bar-success { - .progress-bar-variant(@progress-bar-success-bg); -} - -.progress-bar-info { - .progress-bar-variant(@progress-bar-info-bg); -} - -.progress-bar-warning { - .progress-bar-variant(@progress-bar-warning-bg); -} - -.progress-bar-danger { - .progress-bar-variant(@progress-bar-danger-bg); -} diff --git a/elgg_clean/bower_components/bootstrap/less/responsive-embed.less b/elgg_clean/bower_components/bootstrap/less/responsive-embed.less deleted file mode 100644 index 080a5118..00000000 --- a/elgg_clean/bower_components/bootstrap/less/responsive-embed.less +++ /dev/null @@ -1,35 +0,0 @@ -// Embeds responsive -// -// Credit: Nicolas Gallagher and SUIT CSS. - -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; - - .embed-responsive-item, - iframe, - embed, - object, - video { - position: absolute; - top: 0; - left: 0; - bottom: 0; - height: 100%; - width: 100%; - border: 0; - } -} - -// Modifier class for 16:9 aspect ratio -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} - -// Modifier class for 4:3 aspect ratio -.embed-responsive-4by3 { - padding-bottom: 75%; -} diff --git a/elgg_clean/bower_components/bootstrap/less/responsive-utilities.less b/elgg_clean/bower_components/bootstrap/less/responsive-utilities.less deleted file mode 100644 index b1db31d7..00000000 --- a/elgg_clean/bower_components/bootstrap/less/responsive-utilities.less +++ /dev/null @@ -1,194 +0,0 @@ -// -// Responsive: Utility classes -// -------------------------------------------------- - - -// IE10 in Windows (Phone) 8 -// -// Support for responsive views via media queries is kind of borked in IE10, for -// Surface/desktop in split view and for Windows Phone 8. This particular fix -// must be accompanied by a snippet of JavaScript to sniff the user agent and -// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at -// our Getting Started page for more information on this bug. -// -// For more information, see the following: -// -// Issue: https://github.com/twbs/bootstrap/issues/10497 -// Docs: http://getbootstrap.com/getting-started/#support-ie10-width -// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ -// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ - -@-ms-viewport { - width: device-width; -} - - -// Visibility utilities -// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0 -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - .responsive-invisibility(); -} - -.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; -} - -.visible-xs { - @media (max-width: @screen-xs-max) { - .responsive-visibility(); - } -} -.visible-xs-block { - @media (max-width: @screen-xs-max) { - display: block !important; - } -} -.visible-xs-inline { - @media (max-width: @screen-xs-max) { - display: inline !important; - } -} -.visible-xs-inline-block { - @media (max-width: @screen-xs-max) { - display: inline-block !important; - } -} - -.visible-sm { - @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { - .responsive-visibility(); - } -} -.visible-sm-block { - @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { - display: block !important; - } -} -.visible-sm-inline { - @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { - display: inline !important; - } -} -.visible-sm-inline-block { - @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { - display: inline-block !important; - } -} - -.visible-md { - @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { - .responsive-visibility(); - } -} -.visible-md-block { - @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { - display: block !important; - } -} -.visible-md-inline { - @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { - display: inline !important; - } -} -.visible-md-inline-block { - @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { - display: inline-block !important; - } -} - -.visible-lg { - @media (min-width: @screen-lg-min) { - .responsive-visibility(); - } -} -.visible-lg-block { - @media (min-width: @screen-lg-min) { - display: block !important; - } -} -.visible-lg-inline { - @media (min-width: @screen-lg-min) { - display: inline !important; - } -} -.visible-lg-inline-block { - @media (min-width: @screen-lg-min) { - display: inline-block !important; - } -} - -.hidden-xs { - @media (max-width: @screen-xs-max) { - .responsive-invisibility(); - } -} -.hidden-sm { - @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { - .responsive-invisibility(); - } -} -.hidden-md { - @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { - .responsive-invisibility(); - } -} -.hidden-lg { - @media (min-width: @screen-lg-min) { - .responsive-invisibility(); - } -} - - -// Print utilities -// -// Media queries are placed on the inside to be mixin-friendly. - -// Note: Deprecated .visible-print as of v3.2.0 -.visible-print { - .responsive-invisibility(); - - @media print { - .responsive-visibility(); - } -} -.visible-print-block { - display: none !important; - - @media print { - display: block !important; - } -} -.visible-print-inline { - display: none !important; - - @media print { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; - - @media print { - display: inline-block !important; - } -} - -.hidden-print { - @media print { - .responsive-invisibility(); - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/scaffolding.less b/elgg_clean/bower_components/bootstrap/less/scaffolding.less deleted file mode 100644 index 1929bfc5..00000000 --- a/elgg_clean/bower_components/bootstrap/less/scaffolding.less +++ /dev/null @@ -1,161 +0,0 @@ -// -// Scaffolding -// -------------------------------------------------- - - -// Reset the box-sizing -// -// Heads up! This reset may cause conflicts with some third-party widgets. -// For recommendations on resolving such conflicts, see -// http://getbootstrap.com/getting-started/#third-box-sizing -* { - .box-sizing(border-box); -} -*:before, -*:after { - .box-sizing(border-box); -} - - -// Body reset - -html { - font-size: 10px; - -webkit-tap-highlight-color: rgba(0,0,0,0); -} - -body { - font-family: @font-family-base; - font-size: @font-size-base; - line-height: @line-height-base; - color: @text-color; - background-color: @body-bg; -} - -// Reset fonts for relevant elements -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - - -// Links - -a { - color: @link-color; - text-decoration: none; - - &:hover, - &:focus { - color: @link-hover-color; - text-decoration: @link-hover-decoration; - } - - &:focus { - .tab-focus(); - } -} - - -// Figures -// -// We reset this here because previously Normalize had no `figure` margins. This -// ensures we don't break anyone's use of the element. - -figure { - margin: 0; -} - - -// Images - -img { - vertical-align: middle; -} - -// Responsive images (ensure images don't scale beyond their parents) -.img-responsive { - .img-responsive(); -} - -// Rounded corners -.img-rounded { - border-radius: @border-radius-large; -} - -// Image thumbnails -// -// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`. -.img-thumbnail { - padding: @thumbnail-padding; - line-height: @line-height-base; - background-color: @thumbnail-bg; - border: 1px solid @thumbnail-border; - border-radius: @thumbnail-border-radius; - .transition(all .2s ease-in-out); - - // Keep them at most 100% wide - .img-responsive(inline-block); -} - -// Perfect circle -.img-circle { - border-radius: 50%; // set radius in percents -} - - -// Horizontal rules - -hr { - margin-top: @line-height-computed; - margin-bottom: @line-height-computed; - border: 0; - border-top: 1px solid @hr-border; -} - - -// Only display content to screen readers -// -// See: http://a11yproject.com/posts/how-to-hide-content/ - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0,0,0,0); - border: 0; -} - -// Use in conjunction with .sr-only to only display content when it's focused. -// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 -// Credit: HTML5 Boilerplate - -.sr-only-focusable { - &:active, - &:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; - } -} - - -// iOS "clickable elements" fix for role="button" -// -// Fixes "clickability" issue (and more generally, the firing of events such as focus as well) -// for traditionally non-focusable elements with role="button" -// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile - -[role="button"] { - cursor: pointer; -} diff --git a/elgg_clean/bower_components/bootstrap/less/tables.less b/elgg_clean/bower_components/bootstrap/less/tables.less deleted file mode 100644 index 2242c036..00000000 --- a/elgg_clean/bower_components/bootstrap/less/tables.less +++ /dev/null @@ -1,234 +0,0 @@ -// -// Tables -// -------------------------------------------------- - - -table { - background-color: @table-bg; -} -caption { - padding-top: @table-cell-padding; - padding-bottom: @table-cell-padding; - color: @text-muted; - text-align: left; -} -th { - text-align: left; -} - - -// Baseline styles - -.table { - width: 100%; - max-width: 100%; - margin-bottom: @line-height-computed; - // Cells - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - padding: @table-cell-padding; - line-height: @line-height-base; - vertical-align: top; - border-top: 1px solid @table-border-color; - } - } - } - // Bottom align for column headings - > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid @table-border-color; - } - // Remove top border from thead by default - > caption + thead, - > colgroup + thead, - > thead:first-child { - > tr:first-child { - > th, - > td { - border-top: 0; - } - } - } - // Account for multiple tbody instances - > tbody + tbody { - border-top: 2px solid @table-border-color; - } - - // Nesting - .table { - background-color: @body-bg; - } -} - - -// Condensed table w/ half padding - -.table-condensed { - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - padding: @table-condensed-cell-padding; - } - } - } -} - - -// Bordered version -// -// Add borders all around the table and between all the columns. - -.table-bordered { - border: 1px solid @table-border-color; - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - border: 1px solid @table-border-color; - } - } - } - > thead > tr { - > th, - > td { - border-bottom-width: 2px; - } - } -} - - -// Zebra-striping -// -// Default zebra-stripe styles (alternating gray and transparent backgrounds) - -.table-striped { - > tbody > tr:nth-of-type(odd) { - background-color: @table-bg-accent; - } -} - - -// Hover effect -// -// Placed here since it has to come after the potential zebra striping - -.table-hover { - > tbody > tr:hover { - background-color: @table-bg-hover; - } -} - - -// Table cell sizing -// -// Reset default table behavior - -table col[class*="col-"] { - position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) - float: none; - display: table-column; -} -table { - td, - th { - &[class*="col-"] { - position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) - float: none; - display: table-cell; - } - } -} - - -// Table backgrounds -// -// Exact selectors below required to override `.table-striped` and prevent -// inheritance to nested tables. - -// Generate the contextual variants -.table-row-variant(active; @table-bg-active); -.table-row-variant(success; @state-success-bg); -.table-row-variant(info; @state-info-bg); -.table-row-variant(warning; @state-warning-bg); -.table-row-variant(danger; @state-danger-bg); - - -// Responsive tables -// -// Wrap your tables in `.table-responsive` and we'll make them mobile friendly -// by enabling horizontal scrolling. Only applies <768px. Everything above that -// will display normally. - -.table-responsive { - overflow-x: auto; - min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837) - - @media screen and (max-width: @screen-xs-max) { - width: 100%; - margin-bottom: (@line-height-computed * 0.75); - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid @table-border-color; - - // Tighten up spacing - > .table { - margin-bottom: 0; - - // Ensure the content doesn't wrap - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - white-space: nowrap; - } - } - } - } - - // Special overrides for the bordered tables - > .table-bordered { - border: 0; - - // Nuke the appropriate borders so that the parent can handle them - > thead, - > tbody, - > tfoot { - > tr { - > th:first-child, - > td:first-child { - border-left: 0; - } - > th:last-child, - > td:last-child { - border-right: 0; - } - } - } - - // Only nuke the last row's bottom-border in `tbody` and `tfoot` since - // chances are there will be only one `tr` in a `thead` and that would - // remove the border altogether. - > tbody, - > tfoot { - > tr:last-child { - > th, - > td { - border-bottom: 0; - } - } - } - - } - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/theme.less b/elgg_clean/bower_components/bootstrap/less/theme.less deleted file mode 100644 index 8371872b..00000000 --- a/elgg_clean/bower_components/bootstrap/less/theme.less +++ /dev/null @@ -1,291 +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) - */ - -// -// Load core variables and mixins -// -------------------------------------------------- - -@import "variables.less"; -@import "mixins.less"; - - -// -// Buttons -// -------------------------------------------------- - -// Common styles -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0,0,0,.2); - @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075); - .box-shadow(@shadow); - - // Reset the shadow - &:active, - &.active { - .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); - } - - &.disabled, - &[disabled], - fieldset[disabled] & { - .box-shadow(none); - } - - .badge { - text-shadow: none; - } -} - -// Mixin for generating new styles -.btn-styles(@btn-color: #555) { - #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%)); - .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620 - background-repeat: repeat-x; - border-color: darken(@btn-color, 14%); - - &:hover, - &:focus { - background-color: darken(@btn-color, 12%); - background-position: 0 -15px; - } - - &:active, - &.active { - background-color: darken(@btn-color, 12%); - border-color: darken(@btn-color, 14%); - } - - &.disabled, - &[disabled], - fieldset[disabled] & { - &, - &:hover, - &:focus, - &.focus, - &:active, - &.active { - background-color: darken(@btn-color, 12%); - background-image: none; - } - } -} - -// Common styles -.btn { - // Remove the gradient for the pressed/active state - &:active, - &.active { - background-image: none; - } -} - -// Apply the mixin to the buttons -.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; } -.btn-primary { .btn-styles(@btn-primary-bg); } -.btn-success { .btn-styles(@btn-success-bg); } -.btn-info { .btn-styles(@btn-info-bg); } -.btn-warning { .btn-styles(@btn-warning-bg); } -.btn-danger { .btn-styles(@btn-danger-bg); } - - -// -// Images -// -------------------------------------------------- - -.thumbnail, -.img-thumbnail { - .box-shadow(0 1px 2px rgba(0,0,0,.075)); -} - - -// -// Dropdowns -// -------------------------------------------------- - -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%)); - background-color: darken(@dropdown-link-hover-bg, 5%); -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%)); - background-color: darken(@dropdown-link-active-bg, 5%); -} - - -// -// Navbar -// -------------------------------------------------- - -// Default navbar -.navbar-default { - #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg); - .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered - border-radius: @navbar-border-radius; - @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075); - .box-shadow(@shadow); - - .navbar-nav > .open > a, - .navbar-nav > .active > a { - #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%)); - .box-shadow(inset 0 3px 9px rgba(0,0,0,.075)); - } -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255,255,255,.25); -} - -// Inverted navbar -.navbar-inverse { - #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg); - .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257 - border-radius: @navbar-border-radius; - .navbar-nav > .open > a, - .navbar-nav > .active > a { - #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%)); - .box-shadow(inset 0 3px 9px rgba(0,0,0,.25)); - } - - .navbar-brand, - .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - } -} - -// Undo rounded corners in static and fixed navbars -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} - -// Fix active state of dropdown items in collapsed mode -@media (max-width: @grid-float-breakpoint-max) { - .navbar .navbar-nav .open .dropdown-menu > .active > a { - &, - &:hover, - &:focus { - color: #fff; - #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%)); - } - } -} - - -// -// Alerts -// -------------------------------------------------- - -// Common styles -.alert { - text-shadow: 0 1px 0 rgba(255,255,255,.2); - @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05); - .box-shadow(@shadow); -} - -// Mixin for generating new styles -.alert-styles(@color) { - #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%)); - border-color: darken(@color, 15%); -} - -// Apply the mixin to the alerts -.alert-success { .alert-styles(@alert-success-bg); } -.alert-info { .alert-styles(@alert-info-bg); } -.alert-warning { .alert-styles(@alert-warning-bg); } -.alert-danger { .alert-styles(@alert-danger-bg); } - - -// -// Progress bars -// -------------------------------------------------- - -// Give the progress background some depth -.progress { - #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg) -} - -// Mixin for generating new styles -.progress-bar-styles(@color) { - #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%)); -} - -// Apply the mixin to the progress bars -.progress-bar { .progress-bar-styles(@progress-bar-bg); } -.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); } -.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); } -.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); } -.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); } - -// Reset the striped class because our mixins don't do multiple gradients and -// the above custom styles override the new `.progress-bar-striped` in v3.2.0. -.progress-bar-striped { - #gradient > .striped(); -} - - -// -// List groups -// -------------------------------------------------- - -.list-group { - border-radius: @border-radius-base; - .box-shadow(0 1px 2px rgba(0,0,0,.075)); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%); - #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%)); - border-color: darken(@list-group-active-border, 7.5%); - - .badge { - text-shadow: none; - } -} - - -// -// Panels -// -------------------------------------------------- - -// Common styles -.panel { - .box-shadow(0 1px 2px rgba(0,0,0,.05)); -} - -// Mixin for generating new styles -.panel-heading-styles(@color) { - #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%)); -} - -// Apply the mixin to the panel headings only -.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); } -.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); } -.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); } -.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); } -.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); } -.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); } - - -// -// Wells -// -------------------------------------------------- - -.well { - #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg); - border-color: darken(@well-bg, 10%); - @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1); - .box-shadow(@shadow); -} diff --git a/elgg_clean/bower_components/bootstrap/less/thumbnails.less b/elgg_clean/bower_components/bootstrap/less/thumbnails.less deleted file mode 100644 index 0713e67d..00000000 --- a/elgg_clean/bower_components/bootstrap/less/thumbnails.less +++ /dev/null @@ -1,36 +0,0 @@ -// -// Thumbnails -// -------------------------------------------------- - - -// Mixin and adjust the regular image class -.thumbnail { - display: block; - padding: @thumbnail-padding; - margin-bottom: @line-height-computed; - line-height: @line-height-base; - background-color: @thumbnail-bg; - border: 1px solid @thumbnail-border; - border-radius: @thumbnail-border-radius; - .transition(border .2s ease-in-out); - - > img, - a > img { - &:extend(.img-responsive); - margin-left: auto; - margin-right: auto; - } - - // Add a hover state for linked versions only - a&:hover, - a&:focus, - a&.active { - border-color: @link-color; - } - - // Image captions - .caption { - padding: @thumbnail-caption-padding; - color: @thumbnail-caption-color; - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/tooltip.less b/elgg_clean/bower_components/bootstrap/less/tooltip.less deleted file mode 100644 index b48d63e0..00000000 --- a/elgg_clean/bower_components/bootstrap/less/tooltip.less +++ /dev/null @@ -1,101 +0,0 @@ -// -// Tooltips -// -------------------------------------------------- - - -// Base class -.tooltip { - position: absolute; - z-index: @zindex-tooltip; - display: block; - // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element. - // So reset our font and text properties to avoid inheriting weird values. - .reset-text(); - font-size: @font-size-small; - - .opacity(0); - - &.in { .opacity(@tooltip-opacity); } - &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; } - &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; } - &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; } - &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; } -} - -// Wrapper for the tooltip content -.tooltip-inner { - max-width: @tooltip-max-width; - padding: 3px 8px; - color: @tooltip-color; - text-align: center; - background-color: @tooltip-bg; - border-radius: @border-radius-base; -} - -// Arrows -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1 -.tooltip { - &.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -@tooltip-arrow-width; - border-width: @tooltip-arrow-width @tooltip-arrow-width 0; - border-top-color: @tooltip-arrow-color; - } - &.top-left .tooltip-arrow { - bottom: 0; - right: @tooltip-arrow-width; - margin-bottom: -@tooltip-arrow-width; - border-width: @tooltip-arrow-width @tooltip-arrow-width 0; - border-top-color: @tooltip-arrow-color; - } - &.top-right .tooltip-arrow { - bottom: 0; - left: @tooltip-arrow-width; - margin-bottom: -@tooltip-arrow-width; - border-width: @tooltip-arrow-width @tooltip-arrow-width 0; - border-top-color: @tooltip-arrow-color; - } - &.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -@tooltip-arrow-width; - border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0; - border-right-color: @tooltip-arrow-color; - } - &.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -@tooltip-arrow-width; - border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width; - border-left-color: @tooltip-arrow-color; - } - &.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -@tooltip-arrow-width; - border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; - border-bottom-color: @tooltip-arrow-color; - } - &.bottom-left .tooltip-arrow { - top: 0; - right: @tooltip-arrow-width; - margin-top: -@tooltip-arrow-width; - border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; - border-bottom-color: @tooltip-arrow-color; - } - &.bottom-right .tooltip-arrow { - top: 0; - left: @tooltip-arrow-width; - margin-top: -@tooltip-arrow-width; - border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; - border-bottom-color: @tooltip-arrow-color; - } -} diff --git a/elgg_clean/bower_components/bootstrap/less/type.less b/elgg_clean/bower_components/bootstrap/less/type.less deleted file mode 100644 index 68ba6017..00000000 --- a/elgg_clean/bower_components/bootstrap/less/type.less +++ /dev/null @@ -1,302 +0,0 @@ -// -// Typography -// -------------------------------------------------- - - -// Headings -// ------------------------- - -h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - font-family: @headings-font-family; - font-weight: @headings-font-weight; - line-height: @headings-line-height; - color: @headings-color; - - small, - .small { - font-weight: normal; - line-height: 1; - color: @headings-small-color; - } -} - -h1, .h1, -h2, .h2, -h3, .h3 { - margin-top: @line-height-computed; - margin-bottom: (@line-height-computed / 2); - - small, - .small { - font-size: 65%; - } -} -h4, .h4, -h5, .h5, -h6, .h6 { - margin-top: (@line-height-computed / 2); - margin-bottom: (@line-height-computed / 2); - - small, - .small { - font-size: 75%; - } -} - -h1, .h1 { font-size: @font-size-h1; } -h2, .h2 { font-size: @font-size-h2; } -h3, .h3 { font-size: @font-size-h3; } -h4, .h4 { font-size: @font-size-h4; } -h5, .h5 { font-size: @font-size-h5; } -h6, .h6 { font-size: @font-size-h6; } - - -// Body text -// ------------------------- - -p { - margin: 0 0 (@line-height-computed / 2); -} - -.lead { - margin-bottom: @line-height-computed; - font-size: floor((@font-size-base * 1.15)); - font-weight: 300; - line-height: 1.4; - - @media (min-width: @screen-sm-min) { - font-size: (@font-size-base * 1.5); - } -} - - -// Emphasis & misc -// ------------------------- - -// Ex: (12px small font / 14px base font) * 100% = about 85% -small, -.small { - font-size: floor((100% * @font-size-small / @font-size-base)); -} - -mark, -.mark { - background-color: @state-warning-bg; - padding: .2em; -} - -// Alignment -.text-left { text-align: left; } -.text-right { text-align: right; } -.text-center { text-align: center; } -.text-justify { text-align: justify; } -.text-nowrap { white-space: nowrap; } - -// Transformation -.text-lowercase { text-transform: lowercase; } -.text-uppercase { text-transform: uppercase; } -.text-capitalize { text-transform: capitalize; } - -// Contextual colors -.text-muted { - color: @text-muted; -} -.text-primary { - .text-emphasis-variant(@brand-primary); -} -.text-success { - .text-emphasis-variant(@state-success-text); -} -.text-info { - .text-emphasis-variant(@state-info-text); -} -.text-warning { - .text-emphasis-variant(@state-warning-text); -} -.text-danger { - .text-emphasis-variant(@state-danger-text); -} - -// Contextual backgrounds -// For now we'll leave these alongside the text classes until v4 when we can -// safely shift things around (per SemVer rules). -.bg-primary { - // Given the contrast here, this is the only class to have its color inverted - // automatically. - color: #fff; - .bg-variant(@brand-primary); -} -.bg-success { - .bg-variant(@state-success-bg); -} -.bg-info { - .bg-variant(@state-info-bg); -} -.bg-warning { - .bg-variant(@state-warning-bg); -} -.bg-danger { - .bg-variant(@state-danger-bg); -} - - -// Page header -// ------------------------- - -.page-header { - padding-bottom: ((@line-height-computed / 2) - 1); - margin: (@line-height-computed * 2) 0 @line-height-computed; - border-bottom: 1px solid @page-header-border-color; -} - - -// Lists -// ------------------------- - -// Unordered and Ordered lists -ul, -ol { - margin-top: 0; - margin-bottom: (@line-height-computed / 2); - ul, - ol { - margin-bottom: 0; - } -} - -// List options - -// Unstyled keeps list items block level, just removes default browser padding and list-style -.list-unstyled { - padding-left: 0; - list-style: none; -} - -// Inline turns list items into inline-block -.list-inline { - .list-unstyled(); - margin-left: -5px; - - > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; - } -} - -// Description Lists -dl { - margin-top: 0; // Remove browser default - margin-bottom: @line-height-computed; -} -dt, -dd { - line-height: @line-height-base; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; // Undo browser default -} - -// Horizontal description lists -// -// Defaults to being stacked without any of the below styles applied, until the -// grid breakpoint is reached (default of ~768px). - -.dl-horizontal { - dd { - &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present - } - - @media (min-width: @grid-float-breakpoint) { - dt { - float: left; - width: (@dl-horizontal-offset - 20); - clear: left; - text-align: right; - .text-overflow(); - } - dd { - margin-left: @dl-horizontal-offset; - } - } -} - - -// Misc -// ------------------------- - -// Abbreviations and acronyms -abbr[title], -// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257 -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted @abbr-border-color; -} -.initialism { - font-size: 90%; - .text-uppercase(); -} - -// Blockquotes -blockquote { - padding: (@line-height-computed / 2) @line-height-computed; - margin: 0 0 @line-height-computed; - font-size: @blockquote-font-size; - border-left: 5px solid @blockquote-border-color; - - p, - ul, - ol { - &:last-child { - margin-bottom: 0; - } - } - - // Note: Deprecated small and .small as of v3.1.0 - // Context: https://github.com/twbs/bootstrap/issues/11660 - footer, - small, - .small { - display: block; - font-size: 80%; // back to default font-size - line-height: @line-height-base; - color: @blockquote-small-color; - - &:before { - content: '\2014 \00A0'; // em dash, nbsp - } - } -} - -// Opposite alignment of blockquote -// -// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0. -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid @blockquote-border-color; - border-left: 0; - text-align: right; - - // Account for citation - footer, - small, - .small { - &:before { content: ''; } - &:after { - content: '\00A0 \2014'; // nbsp, em dash - } - } -} - -// Addresses -address { - margin-bottom: @line-height-computed; - font-style: normal; - line-height: @line-height-base; -} diff --git a/elgg_clean/bower_components/bootstrap/less/utilities.less b/elgg_clean/bower_components/bootstrap/less/utilities.less deleted file mode 100644 index 7a8ca27a..00000000 --- a/elgg_clean/bower_components/bootstrap/less/utilities.less +++ /dev/null @@ -1,55 +0,0 @@ -// -// Utility classes -// -------------------------------------------------- - - -// Floats -// ------------------------- - -.clearfix { - .clearfix(); -} -.center-block { - .center-block(); -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} - - -// Toggling content -// ------------------------- - -// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - .text-hide(); -} - - -// Hide from screenreaders and browsers -// -// Credit: HTML5 Boilerplate - -.hidden { - display: none !important; -} - - -// For Affix plugin -// ------------------------- - -.affix { - position: fixed; -} diff --git a/elgg_clean/bower_components/bootstrap/less/variables.less b/elgg_clean/bower_components/bootstrap/less/variables.less deleted file mode 100644 index c1861a8e..00000000 --- a/elgg_clean/bower_components/bootstrap/less/variables.less +++ /dev/null @@ -1,867 +0,0 @@ -// -// Variables -// -------------------------------------------------- - - -//== Colors -// -//## Gray and brand colors for use across Bootstrap. - -@gray-base: #000; -@gray-darker: lighten(@gray-base, 13.5%); // #222 -@gray-dark: lighten(@gray-base, 20%); // #333 -@gray: lighten(@gray-base, 33.5%); // #555 -@gray-light: lighten(@gray-base, 46.7%); // #777 -@gray-lighter: lighten(@gray-base, 93.5%); // #eee - -@brand-primary: darken(#428bca, 6.5%); // #337ab7 -@brand-success: #5cb85c; -@brand-info: #5bc0de; -@brand-warning: #f0ad4e; -@brand-danger: #d9534f; - - -//== Scaffolding -// -//## Settings for some of the most global styles. - -//** Background color for `<body>`. -@body-bg: #fff; -//** Global text color on `<body>`. -@text-color: @gray-dark; - -//** Global textual link color. -@link-color: @brand-primary; -//** Link hover color set via `darken()` function. -@link-hover-color: darken(@link-color, 15%); -//** Link hover decoration. -@link-hover-decoration: underline; - - -//== Typography -// -//## Font, line-height, and color for body text, headings, and more. - -@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`. -@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace; -@font-family-base: @font-family-sans-serif; - -@font-size-base: 14px; -@font-size-large: ceil((@font-size-base * 1.25)); // ~18px -@font-size-small: ceil((@font-size-base * 0.85)); // ~12px - -@font-size-h1: floor((@font-size-base * 2.6)); // ~36px -@font-size-h2: floor((@font-size-base * 2.15)); // ~30px -@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px -@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px -@font-size-h5: @font-size-base; -@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px - -//** Unit-less `line-height` for use in components like buttons. -@line-height-base: 1.428571429; // 20/14 -//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc. -@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px - -//** By default, this inherits from the `<body>`. -@headings-font-family: inherit; -@headings-font-weight: 500; -@headings-line-height: 1.1; -@headings-color: inherit; - - -//== Iconography -// -//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower. - -//** Load fonts from this directory. -@icon-font-path: "../fonts/"; -//** File name for all font files. -@icon-font-name: "glyphicons-halflings-regular"; -//** Element ID within SVG icon file. -@icon-font-svg-id: "glyphicons_halflingsregular"; - - -//== Components -// -//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start). - -@padding-base-vertical: 6px; -@padding-base-horizontal: 12px; - -@padding-large-vertical: 10px; -@padding-large-horizontal: 16px; - -@padding-small-vertical: 5px; -@padding-small-horizontal: 10px; - -@padding-xs-vertical: 1px; -@padding-xs-horizontal: 5px; - -@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome -@line-height-small: 1.5; - -@border-radius-base: 4px; -@border-radius-large: 6px; -@border-radius-small: 3px; - -//** Global color for active items (e.g., navs or dropdowns). -@component-active-color: #fff; -//** Global background color for active items (e.g., navs or dropdowns). -@component-active-bg: @brand-primary; - -//** Width of the `border` for generating carets that indicator dropdowns. -@caret-width-base: 4px; -//** Carets increase slightly in size for larger components. -@caret-width-large: 5px; - - -//== Tables -// -//## Customizes the `.table` component with basic values, each used across all table variations. - -//** Padding for `<th>`s and `<td>`s. -@table-cell-padding: 8px; -//** Padding for cells in `.table-condensed`. -@table-condensed-cell-padding: 5px; - -//** Default background color used for all tables. -@table-bg: transparent; -//** Background color used for `.table-striped`. -@table-bg-accent: #f9f9f9; -//** Background color used for `.table-hover`. -@table-bg-hover: #f5f5f5; -@table-bg-active: @table-bg-hover; - -//** Border color for table and cell borders. -@table-border-color: #ddd; - - -//== Buttons -// -//## For each of Bootstrap's buttons, define text, background and border color. - -@btn-font-weight: normal; - -@btn-default-color: #333; -@btn-default-bg: #fff; -@btn-default-border: #ccc; - -@btn-primary-color: #fff; -@btn-primary-bg: @brand-primary; -@btn-primary-border: darken(@btn-primary-bg, 5%); - -@btn-success-color: #fff; -@btn-success-bg: @brand-success; -@btn-success-border: darken(@btn-success-bg, 5%); - -@btn-info-color: #fff; -@btn-info-bg: @brand-info; -@btn-info-border: darken(@btn-info-bg, 5%); - -@btn-warning-color: #fff; -@btn-warning-bg: @brand-warning; -@btn-warning-border: darken(@btn-warning-bg, 5%); - -@btn-danger-color: #fff; -@btn-danger-bg: @brand-danger; -@btn-danger-border: darken(@btn-danger-bg, 5%); - -@btn-link-disabled-color: @gray-light; - -// Allows for customizing button radius independently from global border radius -@btn-border-radius-base: @border-radius-base; -@btn-border-radius-large: @border-radius-large; -@btn-border-radius-small: @border-radius-small; - - -//== Forms -// -//## - -//** `<input>` background color -@input-bg: #fff; -//** `<input disabled>` background color -@input-bg-disabled: @gray-lighter; - -//** Text color for `<input>`s -@input-color: @gray; -//** `<input>` border color -@input-border: #ccc; - -// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4 -//** Default `.form-control` border radius -// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS. -@input-border-radius: @border-radius-base; -//** Large `.form-control` border radius -@input-border-radius-large: @border-radius-large; -//** Small `.form-control` border radius -@input-border-radius-small: @border-radius-small; - -//** Border color for inputs on focus -@input-border-focus: #66afe9; - -//** Placeholder text color -@input-color-placeholder: #999; - -//** Default `.form-control` height -@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2); -//** Large `.form-control` height -@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2); -//** Small `.form-control` height -@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2); - -//** `.form-group` margin -@form-group-margin-bottom: 15px; - -@legend-color: @gray-dark; -@legend-border-color: #e5e5e5; - -//** Background color for textual input addons -@input-group-addon-bg: @gray-lighter; -//** Border color for textual input addons -@input-group-addon-border-color: @input-border; - -//** Disabled cursor for form controls and buttons. -@cursor-disabled: not-allowed; - - -//== Dropdowns -// -//## Dropdown menu container and contents. - -//** Background for the dropdown menu. -@dropdown-bg: #fff; -//** Dropdown menu `border-color`. -@dropdown-border: rgba(0,0,0,.15); -//** Dropdown menu `border-color` **for IE8**. -@dropdown-fallback-border: #ccc; -//** Divider color for between dropdown items. -@dropdown-divider-bg: #e5e5e5; - -//** Dropdown link text color. -@dropdown-link-color: @gray-dark; -//** Hover color for dropdown links. -@dropdown-link-hover-color: darken(@gray-dark, 5%); -//** Hover background for dropdown links. -@dropdown-link-hover-bg: #f5f5f5; - -//** Active dropdown menu item text color. -@dropdown-link-active-color: @component-active-color; -//** Active dropdown menu item background color. -@dropdown-link-active-bg: @component-active-bg; - -//** Disabled dropdown menu item background color. -@dropdown-link-disabled-color: @gray-light; - -//** Text color for headers within dropdown menus. -@dropdown-header-color: @gray-light; - -//** Deprecated `@dropdown-caret-color` as of v3.1.0 -@dropdown-caret-color: #000; - - -//-- Z-index master list -// -// Warning: Avoid customizing these values. They're used for a bird's eye view -// of components dependent on the z-axis and are designed to all work together. -// -// Note: These variables are not generated into the Customizer. - -@zindex-navbar: 1000; -@zindex-dropdown: 1000; -@zindex-popover: 1060; -@zindex-tooltip: 1070; -@zindex-navbar-fixed: 1030; -@zindex-modal-background: 1040; -@zindex-modal: 1050; - - -//== Media queries breakpoints -// -//## Define the breakpoints at which your layout will change, adapting to different screen sizes. - -// Extra small screen / phone -//** Deprecated `@screen-xs` as of v3.0.1 -@screen-xs: 480px; -//** Deprecated `@screen-xs-min` as of v3.2.0 -@screen-xs-min: @screen-xs; -//** Deprecated `@screen-phone` as of v3.0.1 -@screen-phone: @screen-xs-min; - -// Small screen / tablet -//** Deprecated `@screen-sm` as of v3.0.1 -@screen-sm: 768px; -@screen-sm-min: @screen-sm; -//** Deprecated `@screen-tablet` as of v3.0.1 -@screen-tablet: @screen-sm-min; - -// Medium screen / desktop -//** Deprecated `@screen-md` as of v3.0.1 -@screen-md: 992px; -@screen-md-min: @screen-md; -//** Deprecated `@screen-desktop` as of v3.0.1 -@screen-desktop: @screen-md-min; - -// Large screen / wide desktop -//** Deprecated `@screen-lg` as of v3.0.1 -@screen-lg: 1200px; -@screen-lg-min: @screen-lg; -//** Deprecated `@screen-lg-desktop` as of v3.0.1 -@screen-lg-desktop: @screen-lg-min; - -// So media queries don't overlap when required, provide a maximum -@screen-xs-max: (@screen-sm-min - 1); -@screen-sm-max: (@screen-md-min - 1); -@screen-md-max: (@screen-lg-min - 1); - - -//== Grid system -// -//## Define your custom responsive grid. - -//** Number of columns in the grid. -@grid-columns: 12; -//** Padding between columns. Gets divided in half for the left and right. -@grid-gutter-width: 30px; -// Navbar collapse -//** Point at which the navbar becomes uncollapsed. -@grid-float-breakpoint: @screen-sm-min; -//** Point at which the navbar begins collapsing. -@grid-float-breakpoint-max: (@grid-float-breakpoint - 1); - - -//== Container sizes -// -//## Define the maximum width of `.container` for different screen sizes. - -// Small screen / tablet -@container-tablet: (720px + @grid-gutter-width); -//** For `@screen-sm-min` and up. -@container-sm: @container-tablet; - -// Medium screen / desktop -@container-desktop: (940px + @grid-gutter-width); -//** For `@screen-md-min` and up. -@container-md: @container-desktop; - -// Large screen / wide desktop -@container-large-desktop: (1140px + @grid-gutter-width); -//** For `@screen-lg-min` and up. -@container-lg: @container-large-desktop; - - -//== Navbar -// -//## - -// Basics of a navbar -@navbar-height: 50px; -@navbar-margin-bottom: @line-height-computed; -@navbar-border-radius: @border-radius-base; -@navbar-padding-horizontal: floor((@grid-gutter-width / 2)); -@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2); -@navbar-collapse-max-height: 340px; - -@navbar-default-color: #777; -@navbar-default-bg: #f8f8f8; -@navbar-default-border: darken(@navbar-default-bg, 6.5%); - -// Navbar links -@navbar-default-link-color: #777; -@navbar-default-link-hover-color: #333; -@navbar-default-link-hover-bg: transparent; -@navbar-default-link-active-color: #555; -@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%); -@navbar-default-link-disabled-color: #ccc; -@navbar-default-link-disabled-bg: transparent; - -// Navbar brand label -@navbar-default-brand-color: @navbar-default-link-color; -@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%); -@navbar-default-brand-hover-bg: transparent; - -// Navbar toggle -@navbar-default-toggle-hover-bg: #ddd; -@navbar-default-toggle-icon-bar-bg: #888; -@navbar-default-toggle-border-color: #ddd; - - -//=== Inverted navbar -// Reset inverted navbar basics -@navbar-inverse-color: lighten(@gray-light, 15%); -@navbar-inverse-bg: #222; -@navbar-inverse-border: darken(@navbar-inverse-bg, 10%); - -// Inverted navbar links -@navbar-inverse-link-color: lighten(@gray-light, 15%); -@navbar-inverse-link-hover-color: #fff; -@navbar-inverse-link-hover-bg: transparent; -@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color; -@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%); -@navbar-inverse-link-disabled-color: #444; -@navbar-inverse-link-disabled-bg: transparent; - -// Inverted navbar brand label -@navbar-inverse-brand-color: @navbar-inverse-link-color; -@navbar-inverse-brand-hover-color: #fff; -@navbar-inverse-brand-hover-bg: transparent; - -// Inverted navbar toggle -@navbar-inverse-toggle-hover-bg: #333; -@navbar-inverse-toggle-icon-bar-bg: #fff; -@navbar-inverse-toggle-border-color: #333; - - -//== Navs -// -//## - -//=== Shared nav styles -@nav-link-padding: 10px 15px; -@nav-link-hover-bg: @gray-lighter; - -@nav-disabled-link-color: @gray-light; -@nav-disabled-link-hover-color: @gray-light; - -//== Tabs -@nav-tabs-border-color: #ddd; - -@nav-tabs-link-hover-border-color: @gray-lighter; - -@nav-tabs-active-link-hover-bg: @body-bg; -@nav-tabs-active-link-hover-color: @gray; -@nav-tabs-active-link-hover-border-color: #ddd; - -@nav-tabs-justified-link-border-color: #ddd; -@nav-tabs-justified-active-link-border-color: @body-bg; - -//== Pills -@nav-pills-border-radius: @border-radius-base; -@nav-pills-active-link-hover-bg: @component-active-bg; -@nav-pills-active-link-hover-color: @component-active-color; - - -//== Pagination -// -//## - -@pagination-color: @link-color; -@pagination-bg: #fff; -@pagination-border: #ddd; - -@pagination-hover-color: @link-hover-color; -@pagination-hover-bg: @gray-lighter; -@pagination-hover-border: #ddd; - -@pagination-active-color: #fff; -@pagination-active-bg: @brand-primary; -@pagination-active-border: @brand-primary; - -@pagination-disabled-color: @gray-light; -@pagination-disabled-bg: #fff; -@pagination-disabled-border: #ddd; - - -//== Pager -// -//## - -@pager-bg: @pagination-bg; -@pager-border: @pagination-border; -@pager-border-radius: 15px; - -@pager-hover-bg: @pagination-hover-bg; - -@pager-active-bg: @pagination-active-bg; -@pager-active-color: @pagination-active-color; - -@pager-disabled-color: @pagination-disabled-color; - - -//== Jumbotron -// -//## - -@jumbotron-padding: 30px; -@jumbotron-color: inherit; -@jumbotron-bg: @gray-lighter; -@jumbotron-heading-color: inherit; -@jumbotron-font-size: ceil((@font-size-base * 1.5)); -@jumbotron-heading-font-size: ceil((@font-size-base * 4.5)); - - -//== Form states and alerts -// -//## Define colors for form feedback states and, by default, alerts. - -@state-success-text: #3c763d; -@state-success-bg: #dff0d8; -@state-success-border: darken(spin(@state-success-bg, -10), 5%); - -@state-info-text: #31708f; -@state-info-bg: #d9edf7; -@state-info-border: darken(spin(@state-info-bg, -10), 7%); - -@state-warning-text: #8a6d3b; -@state-warning-bg: #fcf8e3; -@state-warning-border: darken(spin(@state-warning-bg, -10), 5%); - -@state-danger-text: #a94442; -@state-danger-bg: #f2dede; -@state-danger-border: darken(spin(@state-danger-bg, -10), 5%); - - -//== Tooltips -// -//## - -//** Tooltip max width -@tooltip-max-width: 200px; -//** Tooltip text color -@tooltip-color: #fff; -//** Tooltip background color -@tooltip-bg: #000; -@tooltip-opacity: .9; - -//** Tooltip arrow width -@tooltip-arrow-width: 5px; -//** Tooltip arrow color -@tooltip-arrow-color: @tooltip-bg; - - -//== Popovers -// -//## - -//** Popover body background color -@popover-bg: #fff; -//** Popover maximum width -@popover-max-width: 276px; -//** Popover border color -@popover-border-color: rgba(0,0,0,.2); -//** Popover fallback border color -@popover-fallback-border-color: #ccc; - -//** Popover title background color -@popover-title-bg: darken(@popover-bg, 3%); - -//** Popover arrow width -@popover-arrow-width: 10px; -//** Popover arrow color -@popover-arrow-color: @popover-bg; - -//** Popover outer arrow width -@popover-arrow-outer-width: (@popover-arrow-width + 1); -//** Popover outer arrow color -@popover-arrow-outer-color: fadein(@popover-border-color, 5%); -//** Popover outer arrow fallback color -@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%); - - -//== Labels -// -//## - -//** Default label background color -@label-default-bg: @gray-light; -//** Primary label background color -@label-primary-bg: @brand-primary; -//** Success label background color -@label-success-bg: @brand-success; -//** Info label background color -@label-info-bg: @brand-info; -//** Warning label background color -@label-warning-bg: @brand-warning; -//** Danger label background color -@label-danger-bg: @brand-danger; - -//** Default label text color -@label-color: #fff; -//** Default text color of a linked label -@label-link-hover-color: #fff; - - -//== Modals -// -//## - -//** Padding applied to the modal body -@modal-inner-padding: 15px; - -//** Padding applied to the modal title -@modal-title-padding: 15px; -//** Modal title line-height -@modal-title-line-height: @line-height-base; - -//** Background color of modal content area -@modal-content-bg: #fff; -//** Modal content border color -@modal-content-border-color: rgba(0,0,0,.2); -//** Modal content border color **for IE8** -@modal-content-fallback-border-color: #999; - -//** Modal backdrop background color -@modal-backdrop-bg: #000; -//** Modal backdrop opacity -@modal-backdrop-opacity: .5; -//** Modal header border color -@modal-header-border-color: #e5e5e5; -//** Modal footer border color -@modal-footer-border-color: @modal-header-border-color; - -@modal-lg: 900px; -@modal-md: 600px; -@modal-sm: 300px; - - -//== Alerts -// -//## Define alert colors, border radius, and padding. - -@alert-padding: 15px; -@alert-border-radius: @border-radius-base; -@alert-link-font-weight: bold; - -@alert-success-bg: @state-success-bg; -@alert-success-text: @state-success-text; -@alert-success-border: @state-success-border; - -@alert-info-bg: @state-info-bg; -@alert-info-text: @state-info-text; -@alert-info-border: @state-info-border; - -@alert-warning-bg: @state-warning-bg; -@alert-warning-text: @state-warning-text; -@alert-warning-border: @state-warning-border; - -@alert-danger-bg: @state-danger-bg; -@alert-danger-text: @state-danger-text; -@alert-danger-border: @state-danger-border; - - -//== Progress bars -// -//## - -//** Background color of the whole progress component -@progress-bg: #f5f5f5; -//** Progress bar text color -@progress-bar-color: #fff; -//** Variable for setting rounded corners on progress bar. -@progress-border-radius: @border-radius-base; - -//** Default progress bar color -@progress-bar-bg: @brand-primary; -//** Success progress bar color -@progress-bar-success-bg: @brand-success; -//** Warning progress bar color -@progress-bar-warning-bg: @brand-warning; -//** Danger progress bar color -@progress-bar-danger-bg: @brand-danger; -//** Info progress bar color -@progress-bar-info-bg: @brand-info; - - -//== List group -// -//## - -//** Background color on `.list-group-item` -@list-group-bg: #fff; -//** `.list-group-item` border color -@list-group-border: #ddd; -//** List group border radius -@list-group-border-radius: @border-radius-base; - -//** Background color of single list items on hover -@list-group-hover-bg: #f5f5f5; -//** Text color of active list items -@list-group-active-color: @component-active-color; -//** Background color of active list items -@list-group-active-bg: @component-active-bg; -//** Border color of active list elements -@list-group-active-border: @list-group-active-bg; -//** Text color for content within active list items -@list-group-active-text-color: lighten(@list-group-active-bg, 40%); - -//** Text color of disabled list items -@list-group-disabled-color: @gray-light; -//** Background color of disabled list items -@list-group-disabled-bg: @gray-lighter; -//** Text color for content within disabled list items -@list-group-disabled-text-color: @list-group-disabled-color; - -@list-group-link-color: #555; -@list-group-link-hover-color: @list-group-link-color; -@list-group-link-heading-color: #333; - - -//== Panels -// -//## - -@panel-bg: #fff; -@panel-body-padding: 15px; -@panel-heading-padding: 10px 15px; -@panel-footer-padding: @panel-heading-padding; -@panel-border-radius: @border-radius-base; - -//** Border color for elements within panels -@panel-inner-border: #ddd; -@panel-footer-bg: #f5f5f5; - -@panel-default-text: @gray-dark; -@panel-default-border: #ddd; -@panel-default-heading-bg: #f5f5f5; - -@panel-primary-text: #fff; -@panel-primary-border: @brand-primary; -@panel-primary-heading-bg: @brand-primary; - -@panel-success-text: @state-success-text; -@panel-success-border: @state-success-border; -@panel-success-heading-bg: @state-success-bg; - -@panel-info-text: @state-info-text; -@panel-info-border: @state-info-border; -@panel-info-heading-bg: @state-info-bg; - -@panel-warning-text: @state-warning-text; -@panel-warning-border: @state-warning-border; -@panel-warning-heading-bg: @state-warning-bg; - -@panel-danger-text: @state-danger-text; -@panel-danger-border: @state-danger-border; -@panel-danger-heading-bg: @state-danger-bg; - - -//== Thumbnails -// -//## - -//** Padding around the thumbnail image -@thumbnail-padding: 4px; -//** Thumbnail background color -@thumbnail-bg: @body-bg; -//** Thumbnail border color -@thumbnail-border: #ddd; -//** Thumbnail border radius -@thumbnail-border-radius: @border-radius-base; - -//** Custom text color for thumbnail captions -@thumbnail-caption-color: @text-color; -//** Padding around the thumbnail caption -@thumbnail-caption-padding: 9px; - - -//== Wells -// -//## - -@well-bg: #f5f5f5; -@well-border: darken(@well-bg, 7%); - - -//== Badges -// -//## - -@badge-color: #fff; -//** Linked badge text color on hover -@badge-link-hover-color: #fff; -@badge-bg: @gray-light; - -//** Badge text color in active nav link -@badge-active-color: @link-color; -//** Badge background color in active nav link -@badge-active-bg: #fff; - -@badge-font-weight: bold; -@badge-line-height: 1; -@badge-border-radius: 10px; - - -//== Breadcrumbs -// -//## - -@breadcrumb-padding-vertical: 8px; -@breadcrumb-padding-horizontal: 15px; -//** Breadcrumb background color -@breadcrumb-bg: #f5f5f5; -//** Breadcrumb text color -@breadcrumb-color: #ccc; -//** Text color of current page in the breadcrumb -@breadcrumb-active-color: @gray-light; -//** Textual separator for between breadcrumb elements -@breadcrumb-separator: "/"; - - -//== Carousel -// -//## - -@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6); - -@carousel-control-color: #fff; -@carousel-control-width: 15%; -@carousel-control-opacity: .5; -@carousel-control-font-size: 20px; - -@carousel-indicator-active-bg: #fff; -@carousel-indicator-border-color: #fff; - -@carousel-caption-color: #fff; - - -//== Close -// -//## - -@close-font-weight: bold; -@close-color: #000; -@close-text-shadow: 0 1px 0 #fff; - - -//== Code -// -//## - -@code-color: #c7254e; -@code-bg: #f9f2f4; - -@kbd-color: #fff; -@kbd-bg: #333; - -@pre-bg: #f5f5f5; -@pre-color: @gray-dark; -@pre-border-color: #ccc; -@pre-scrollable-max-height: 340px; - - -//== Type -// -//## - -//** Horizontal offset for forms and lists. -@component-offset-horizontal: 180px; -//** Text muted color -@text-muted: @gray-light; -//** Abbreviations and acronyms border color -@abbr-border-color: @gray-light; -//** Headings small color -@headings-small-color: @gray-light; -//** Blockquote small color -@blockquote-small-color: @gray-light; -//** Blockquote font size -@blockquote-font-size: (@font-size-base * 1.25); -//** Blockquote border color -@blockquote-border-color: @gray-lighter; -//** Page header border color -@page-header-border-color: @gray-lighter; -//** Width of horizontal description list titles -@dl-horizontal-offset: @component-offset-horizontal; -//** Horizontal line color. -@hr-border: @gray-lighter; diff --git a/elgg_clean/bower_components/bootstrap/less/wells.less b/elgg_clean/bower_components/bootstrap/less/wells.less deleted file mode 100644 index 15d072b0..00000000 --- a/elgg_clean/bower_components/bootstrap/less/wells.less +++ /dev/null @@ -1,29 +0,0 @@ -// -// Wells -// -------------------------------------------------- - - -// Base class -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: @well-bg; - border: 1px solid @well-border; - border-radius: @border-radius-base; - .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); - blockquote { - border-color: #ddd; - border-color: rgba(0,0,0,.15); - } -} - -// Sizes -.well-lg { - padding: 24px; - border-radius: @border-radius-large; -} -.well-sm { - padding: 9px; - border-radius: @border-radius-small; -} diff --git a/elgg_clean/bower_components/bootstrap/package.js b/elgg_clean/bower_components/bootstrap/package.js deleted file mode 100644 index 81d42a68..00000000 --- a/elgg_clean/bower_components/bootstrap/package.js +++ /dev/null @@ -1,25 +0,0 @@ -// package metadata file for Meteor.js - -/* jshint strict:false */ -/* global Package:true */ - -Package.describe({ - name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap - summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.', - version: '3.3.5', - git: 'https://github.com/twbs/bootstrap.git' -}); - -Package.onUse(function (api) { - api.versionsFrom('METEOR@1.0'); - api.use('jquery', 'client'); - api.addFiles([ - 'dist/fonts/glyphicons-halflings-regular.eot', - 'dist/fonts/glyphicons-halflings-regular.svg', - 'dist/fonts/glyphicons-halflings-regular.ttf', - 'dist/fonts/glyphicons-halflings-regular.woff', - 'dist/fonts/glyphicons-halflings-regular.woff2', - 'dist/css/bootstrap.css', - 'dist/js/bootstrap.js' - ], 'client'); -}); diff --git a/elgg_clean/bower_components/bootstrap/package.json b/elgg_clean/bower_components/bootstrap/package.json deleted file mode 100644 index 380472a0..00000000 --- a/elgg_clean/bower_components/bootstrap/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "name": "bootstrap", - "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", - "version": "3.3.5", - "keywords": [ - "css", - "less", - "mobile-first", - "responsive", - "front-end", - "framework", - "web" - ], - "homepage": "http://getbootstrap.com", - "author": "Twitter, Inc.", - "scripts": { - "test": "grunt test" - }, - "style": "dist/css/bootstrap.css", - "less": "less/bootstrap.less", - "main": "./dist/js/npm", - "repository": { - "type": "git", - "url": "https://github.com/twbs/bootstrap.git" - }, - "bugs": { - "url": "https://github.com/twbs/bootstrap/issues" - }, - "license": "MIT", - "devDependencies": { - "btoa": "~1.1.2", - "glob": "~5.0.5", - "grunt": "~0.4.5", - "grunt-autoprefixer": "~3.0.0", - "grunt-contrib-clean": "~0.6.0", - "grunt-contrib-compress": "~0.13.0", - "grunt-contrib-concat": "~0.5.1", - "grunt-contrib-connect": "~0.10.1", - "grunt-contrib-copy": "~0.8.0", - "grunt-contrib-csslint": "~0.4.0", - "grunt-contrib-cssmin": "~0.12.3", - "grunt-contrib-htmlmin": "~0.4.0", - "grunt-contrib-jade": "~0.14.1", - "grunt-contrib-jshint": "~0.11.2", - "grunt-contrib-less": "~1.0.1", - "grunt-contrib-qunit": "~0.7.0", - "grunt-contrib-uglify": "~0.9.1", - "grunt-contrib-watch": "~0.6.1", - "grunt-csscomb": "~3.0.0", - "grunt-exec": "~0.4.6", - "grunt-html": "~4.0.3", - "grunt-jekyll": "~0.4.2", - "grunt-jscs": "~1.8.0", - "grunt-saucelabs": "~8.6.1", - "grunt-sed": "twbs/grunt-sed#v0.2.0", - "load-grunt-tasks": "~3.2.0", - "markdown-it": "^4.2.1", - "npm-shrinkwrap": "^200.4.0", - "time-grunt": "^1.2.0" - }, - "engines": { - "node": ">=0.10.1" - }, - "files": [ - "dist", - "fonts", - "grunt", - "js/*.js", - "less/**/*.less", - "Gruntfile.js", - "LICENSE" - ], - "jspm": { - "main": "js/bootstrap", - "shim": { - "js/bootstrap": { - "deps": "jquery", - "exports": "$" - } - }, - "files": [ - "css", - "fonts", - "js" - ] - } -} diff --git a/elgg_clean/bower_components/font-awesome/.bower.json b/elgg_clean/bower_components/font-awesome/.bower.json deleted file mode 100644 index 0a17592f..00000000 --- a/elgg_clean/bower_components/font-awesome/.bower.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "font-awesome", - "description": "Font Awesome", - "keywords": [], - "homepage": "http://fontawesome.io", - "dependencies": {}, - "devDependencies": {}, - "license": [ - "OFL-1.1", - "MIT", - "CC-BY-3.0" - ], - "main": [ - "less/font-awesome.less", - "scss/font-awesome.scss" - ], - "ignore": [ - "*/.*", - "*.json", - "src", - "*.yml", - "Gemfile", - "Gemfile.lock", - "*.md" - ], - "version": "4.4.0", - "_release": "4.4.0", - "_resolution": { - "type": "version", - "tag": "v4.4.0", - "commit": "f2cc73da12f0e6d828bc2daaa72bff457067bf39" - }, - "_source": "git://github.com/FortAwesome/Font-Awesome.git", - "_target": "~4.4.0", - "_originalSource": "fontawesome", - "_direct": true -} \ No newline at end of file diff --git a/elgg_clean/bower_components/font-awesome/.npmignore b/elgg_clean/bower_components/font-awesome/.npmignore deleted file mode 100644 index 54a691f8..00000000 --- a/elgg_clean/bower_components/font-awesome/.npmignore +++ /dev/null @@ -1,42 +0,0 @@ -*.pyc -*.egg-info -*.db -*.db.old -*.swp -*.db-journal - -.coverage -.DS_Store -.installed.cfg -_gh_pages/* - -.idea/* -.svn/* -src/website/static/* -src/website/media/* - -bin -cfcache -develop-eggs -dist -downloads -eggs -parts -tmp -.sass-cache -node_modules - -src/website/settingslocal.py -stunnel.log - -.ruby-version - -# don't need these in the npm package. -src/ -_config.yml -bower.json -component.json -composer.json -CONTRIBUTING.md -Gemfile -Gemfile.lock diff --git a/elgg_clean/bower_components/font-awesome/HELP-US-OUT.txt b/elgg_clean/bower_components/font-awesome/HELP-US-OUT.txt deleted file mode 100644 index cfd9d9f3..00000000 --- a/elgg_clean/bower_components/font-awesome/HELP-US-OUT.txt +++ /dev/null @@ -1,7 +0,0 @@ -I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, -Fonticons (https://fonticons.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, -comprehensive icon sets or copy and paste your own. - -Please. Check it out. - --Dave Gandy diff --git a/elgg_clean/bower_components/font-awesome/bower.json b/elgg_clean/bower_components/font-awesome/bower.json deleted file mode 100644 index 9e211265..00000000 --- a/elgg_clean/bower_components/font-awesome/bower.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "font-awesome", - "description": "Font Awesome", - "keywords": [], - "homepage": "http://fontawesome.io", - "dependencies": {}, - "devDependencies": {}, - "license": ["OFL-1.1", "MIT", "CC-BY-3.0"], - "main": [ - "less/font-awesome.less", - "scss/font-awesome.scss" - ], - "ignore": [ - "*/.*", - "*.json", - "src", - "*.yml", - "Gemfile", - "Gemfile.lock", - "*.md" - ] -} diff --git a/elgg_clean/bower_components/font-awesome/css/font-awesome.css b/elgg_clean/bower_components/font-awesome/css/font-awesome.css deleted file mode 100644 index 880eb825..00000000 --- a/elgg_clean/bower_components/font-awesome/css/font-awesome.css +++ /dev/null @@ -1,2026 +0,0 @@ -/*! - * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.4.0'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg'); - font-weight: normal; - font-style: normal; -} -.fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; -} -.fa-2x { - font-size: 2em; -} -.fa-3x { - font-size: 3em; -} -.fa-4x { - font-size: 4em; -} -.fa-5x { - font-size: 5em; -} -.fa-fw { - width: 1.28571429em; - text-align: center; -} -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} -.fa-ul > li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; -} -.fa-pull-left { - float: left; -} -.fa-pull-right { - float: right; -} -.fa.fa-pull-left { - margin-right: .3em; -} -.fa.fa-pull-right { - margin-left: .3em; -} -/* Deprecated as of 4.4.0 */ -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -.fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - 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 { - 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: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-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"; -} diff --git a/elgg_clean/bower_components/font-awesome/css/font-awesome.css.map b/elgg_clean/bower_components/font-awesome/css/font-awesome.css.map deleted file mode 100644 index 60763a86..00000000 --- a/elgg_clean/bower_components/font-awesome/css/font-awesome.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "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", -"sources": ["../scss/_path.scss","../scss/_core.scss","../scss/_larger.scss","../scss/_fixed-width.scss","../scss/_list.scss","../scss/_variables.scss","../scss/_bordered-pulled.scss","../scss/_animated.scss","../scss/_rotated-flipped.scss","../scss/_mixins.scss","../scss/_stacked.scss","../scss/_icons.scss"], -"names": [], -"file": "font-awesome.css" -} diff --git a/elgg_clean/bower_components/font-awesome/css/font-awesome.min.css b/elgg_clean/bower_components/font-awesome/css/font-awesome.min.css deleted file mode 100644 index ee4e9782..00000000 --- a/elgg_clean/bower_components/font-awesome/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.4.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{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{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper: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-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"} diff --git a/elgg_clean/bower_components/font-awesome/fonts/FontAwesome.otf b/elgg_clean/bower_components/font-awesome/fonts/FontAwesome.otf deleted file mode 100644 index 681bdd4d4c8dddbaeb4d4f2a1f58c38cad92afe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106260 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 Ba-9GG diff --git a/elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.eot b/elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.eot deleted file mode 100644 index a30335d748c65c0bab5880b4e6dba53f5c79206c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68875 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 S4JLYQi@fc6kfU6U0SW*@ORnAk diff --git a/elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.svg b/elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.svg deleted file mode 100644 index 6fd19abc..00000000 --- a/elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,640 +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" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"> -<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="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" 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="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" 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="M829 318q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5zM755 863q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5 t-57.5 96.5t-17.5 106q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107zM861 1120l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95 q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83zM1152 672h128v64h-128v128h-64v-128 h-128v-64h128v-160h64v160zM1536 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="M735 740q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4 q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65t-59.5 -61.5t-24.5 -66zM589 836q38 0 78 16.5t66 43.5q53 57 53 159q0 58 -17 125t-48.5 129.5 t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26zM591 -37q58 0 111.5 13t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2 q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5zM1401 839h213v-108h-213v-219h-105v219h-212v108h212v217h105v-217z" /> -<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="" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" /> -<glyph unicode="" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" /> -<glyph unicode="" 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="" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" /> -<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="M1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.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="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" /> -<glyph unicode="" 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="M1792 204v-209h-642v209h134v926h-6l-314 -1135h-243l-310 1135h-8v-926h135v-209h-538v209h69q21 0 43 19.5t22 37.5v881q0 18 -22 40t-43 22h-69v209h672l221 -821h6l223 821h670v-209h-71q-19 0 -41 -22t-22 -40v-881q0 -18 21.5 -37.5t41.5 -19.5h71z" /> -<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="" d="M768 -92q77 0 139.5 63t100.5 166t59 234.5t21 268.5t-21 268.5t-59 234.5t-100.5 166t-139.5 63t-139.5 -63t-100.5 -166t-59 -234.5t-21 -268.5t21 -268.5t59 -234.5t100.5 -166t139.5 -63zM768 -256q-184 0 -333 77t-240 203t-141 287t-50 329t50 329t141 287t240 203 t333 77q148 0 274 -50t214.5 -136t151.5 -201t92.5 -244t29.5 -265t-29.5 -265t-92.5 -244t-151.5 -201t-214.5 -136t-274 -50z" /> -<glyph unicode="" horiz-adv-x="1792" d="M716 -69q-143 35 -261.5 114t-197.5 191q-139 -300 -17 -398q26 -21 85 -24.5t127.5 9.5t141 41.5t122.5 66.5zM693 762h452q0 108 -61.5 169t-168.5 61q-103 0 -162.5 -62.5t-59.5 -167.5zM1724 1137h-34q26 102 22.5 170t-25 110t-63.5 57t-93.5 11t-115 -26.5 t-128.5 -56.5t-134 -79q129 -37 238.5 -113.5t185 -179t110 -231.5t15.5 -262h-1005q0 -60 10 -106t34 -85t69.5 -60t112.5 -21q87 0 142.5 44t72.5 122h540q-71 -230 -281.5 -377t-477.5 -147q-83 0 -159 15q-35 -40 -151 -94t-248 -78t-219 35q-78 60 -100 159t7 214 t88 242t143.5 248t173.5 226.5t177.5 183.5t156.5 112v24q-120 -37 -258.5 -137.5t-240.5 -207t-159 -195.5q4 106 34 201t80 169t118 135.5t147.5 100.5t168 65.5t180.5 29.5t185 -8q310 186 503 189h7q57 0 103 -18q80 -30 98 -132.5t-30 -248.5z" /> -<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="" horiz-adv-x="2304" d="M1391 390v0l-1 1q-15 18 -34.5 37.5t-62.5 57.5t-93.5 62t-95.5 24q-48 0 -83 -21.5t-51 -54t-23 -59t-7 -47.5v0v0q0 -21 7 -48t23 -59t51 -53.5t83 -21.5q45 0 95.5 24t94 62.5t62 57t34.5 37.5zM2103 390q0 21 -7 47.5t-23 59t-51 54t-83 21.5q-45 0 -95.5 -24 t-94 -62.5t-62 -57t-34.5 -37.5l-1 -1v0v0l1 -1q15 -18 34.5 -37.5t62.5 -57.5t93.5 -62t95.5 -24q48 0 83 21.5t51 53.5t23 59t7 48zM2304 393q0 -69 -24 -137.5t-68 -126t-116 -93.5t-159 -36q-68 0 -134 24t-113.5 58.5t-84.5 69.5t-59.5 59t-25.5 24t-22.5 -24 t-54.5 -58.5t-81.5 -69.5t-115 -59t-143.5 -24q-65 0 -123.5 22.5t-96.5 54t-66.5 66.5t-41 59.5t-12.5 32.5q0 -8 -8.5 -26.5t-25 -45.5t-47 -55t-69 -52.5t-96.5 -40t-125 -15.5q-71 0 -130 15.5t-98.5 39.5t-70.5 56.5t-48 63.5t-27.5 63.5t-14 54t-3.5 36.5h217 q0 -55 49 -107.5t126 -52.5q79 0 134.5 67t55.5 148q0 80 -52 136.5t-138 56.5q-5 0 -13 -0.5t-31 -5t-43 -12t-42 -24.5t-34 -40h-195l102 583h602v-174h-445q-27 -159 -41 -248q4 0 16.5 13t31.5 28.5t65 28.5t108 13t114 -20.5t82.5 -49.5t51.5 -58.5t31 -50t11 -20.5 t13 25t36.5 60.5t60.5 71.5t97 61t133 25t140.5 -25t115.5 -60.5t83.5 -71.5t56.5 -61t21 -25q2 0 22 25t56 60.5t83.5 71.5t115.5 61t140 25q92 0 164.5 -35t115.5 -93t65 -125t22 -137z" /> -<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" /> -<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" /> -<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/elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.ttf b/elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.ttf deleted file mode 100644 index d7994e13086b1ac1a216bd754c93e1bccd65f237..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138204 zcmZQzWME+6V`yMtW=L>z3-QgH(__TI!0?8FfkDRI#np{LovDt2fsuoOfkDncSl_6_ ztnwBE1EU5514BY`Zeqdt*GYm542&HN3{0=m6N?M}|7T!kU|=a>U|`@#pXvFKzY z0|QG91LK<~8L5dW+?Ss3V_^K4z`(#@mXVQ~$oG>gi-Gau3<d@Um5khy3Jy1scm~Fg zdl(ovkL2VhC;lv}`NP2YyMcj$<x_5AMFG=8CK(1M29Ws*d5O8H#x|`N8JHNRFfcH8 z6yz6|v~b)jV_;&DVPFv7UY?qiHZL)BI|GyS6$S<dHU<W;Zy7G;b_6moFfg1B+zO%? zF5dNf0G8olU|<kqU|?WkU}RuqDraD1U;*<$s+ifF87DBXGO)1puoyEiFtkBvreX#L z#x9ToT)3dJsF;C)LE$R{8^eFFGeAKOwhyL70nB4&U;u?3gAAC*!1#oL8O)MlU|~GL zz`&5l;K0DjpvR!Vuz+DD!#aj7496I5C~zt0E5s`*Dak1%sQ&rD_d)K1-3Px9aUb$N z)P3mtFz>^<51T%m`*82WyAS_9@_m&1sQ1zCqu<B4k9i;KKK6Z__i^3FeIL(#y!Y|l z$A6#rKFNKu`{eg2?o-~Ux=(#y8UBMD46<(p+&%^r`xrh5d{F%0@FCzs!iRzn4Id_a zSny%PhXWrje0cET!$*dX0v{DV8hmv481OOSW5LIUj}tyF__*QYfsYqHKKS_I6T>Hg zPl}%$J_USA_*C$z0c79*$Ny9Q$NrD}AM)S%ztIEk`_J$1xcBYu@4LHh$qUE`NDD{` zNC=1vhzW=ahzJM^2nh%Zum~^<FbOaUF!2B9|HuEA{}2Cf{$Kn*`G4?#=l{n4mH!L> zXZ}z8ANfD<zvq9;|AzlH|118N{4aPx@e7LqI?;@5&?E>-icIjdg|M9wk^~R}1IJ=# zli*;L;^dOV=>$;bz$uAeg7N=<1||k3h5`l#W&t*kr`Z`8%oPO{nFSREA21&H=TN}3 zpnz53R{<NtFR)SIOao>yFfbT`f-&|#1KVQO1_oIM21XHfMnOd*F%dRpMI|*8Gh;<T zMm19tJ4RzgBRNL4#oB*67#*b4)TI72fJjD%za82t8se-C;u<QfZpzw!JN`1LnW(9m zs4+7zRcI@VOLK5YgY01V&%nmO+Q6XAz`!Ud!pEef$7Ev1WNaiZ$coA}F*9d0Gd2=q zV{pkxk4n#Qamh&6%?$sG%2ktNcHj}vuwYgAy}-y%TU1orFU3z=RGmrk?O$tT0p{cK z#$1dHEEWt*3?Mf&ur@HTGbl1JFbFUxfH0#7o3fHRBb&04iW-xEkeP}Ci<pq82s@(~ zOT)jP|N8#@WMpS7VrKU-F;n@sa`T=3f4}$U=kH}?Wt3xN-J4&-7_Q31&RE3A4pIEC z!Nf<6F{}omB7g6{-~D$s|68dFiXDdk4eSi83=C2XwhX=u461@`>@4hjOxjFJdW`C7 zs%q+jB4WmhMrMLGOnS`9ib`yvBI07=axB(NMt02RX6AN`=7NyOF%<+wkC7N#gM#Y6 zFY}BYat#<64RRff=l%PlsvykEdVp7$k(G^y<Cg=k@Z^IR*sPSy^+XsMMfA*-tk^Cb zG>dJBbNc1r6c^{jdcY}8ftf)??p%wufuW&+cFQ?AmA?$U!on;XOhTN399*ozyemp( zEM+y6QWX+Xl`>>qIzxM6!tVnh-7Fw8AaM-xTLXg(0|SeaI-?$osfn4fksOn_9ka2K z7${7cXPF57oxr8+W267?fn8&MfQm{$exu!ke^38TY!G6K;!ufC>2tpGL)+6qMa98W z`^TNTPyeofn7x**f%O4{5+scZi;05cO_h~RSxL>*#9SDZOwCn=&5Xo_S;g2Ir2b6} zV-yt;7X4@c&t6PORFo;~-xNs;#%~XWZG;~(ezRb%6qEWl?;j64uc$1~n>ReNqHKJO zUl^05MO8UH8INmf{<HMt1Z5LYx`Eiu2}-@3jH=v>tc=X6tf0ICa)+{#Iu2*B6fzq9 zi`u*QUlgN}Cu0?3CF60hyEJh-i%Eo0(~hz3Uz6Rx>;IyUA7|!*InxM_D?x5-U<IXZ zc?NX`232SZF|lI>g})Ifqsg%{2(T%r379FcHcYDgGp%wGyQqShTdFOmQ*dirYp@fi zZK|7@f++jH0}uZldiaphuDPPSyTUZJG$r0yL)%na+f-Y_IX<N{mH9bD{viVcHz-fB zgY4yJkY~_muxIdRh-b)WsAuSBn9s1Dfq~W3L`|DfiA|PKM9iAe$V`v`pHa|64V>zs z*?<vEJqDkEdP4T0XC}r5H7Rh(hJ#>XP?P%004n;J8Kl(yFd$U3BI*3sfUJs;nGJDH zKfxJ^&A}<o0d6tlENslbQcPg$|A9yrgp%I~CNr{<e+Y5x2JZR=wwo24iNO^S8*+St zN^5Xk04r`JK?SCwk{XQ9h*lh-%QG|hnEYcf@$oTX0+R?fa|13JCI(P3>SMy#VB+J$ zbOwp@2bqH+!vM~#?4UXZGc7VOf{F`8B{f?{NTDf+#z&W@HXq$SCI$<Qe+M)yEHoG$ zKqP|A)POAW7lnr^hswjJ64^vX1+cXsg7F53)Bq8G5lm(T6G;?_iCqDbVUQjI14dj> zJr;-$RaOQIjX&U!W<H={@f#)dQRR@;kr`GfLBYVtP|3i@*3PmC+#?cUXJltn(r08; zGqGnhGZN=yG&7QCWNVlCtJ5J9Ak*=0nv4vH!KlVG0mNti6abcz>0rzP@nvNG-DH|5 zBh$ga$dLE{9jg$_BnD*$1{D#0Mm8mNPDYT~Y9{8KsOF1_uyZo93V}`jckACRh)IlU z|8Bu-V^o8P{kz4e_AfxDLq-OdEJO#$6i9o90bE`vGiWooFo0uN8<csp89|v%8AO<v zSu>h~2qQ6BMq?v6Mrg~60bGM)X?d|Q2=hJ==5^o|e!we?#6)S2d7I*Dk1;*K&<Qf+ z8B!x{YnC^TMjEo8_!-0*3?P02wT7W(2XXHIdjRBgCI?<&Qd|x8v@o$Q1@*5P{x`6J zI^>!Rrl6J)6B~<yiW-xtiIBOOn79}lJ0GK{h#ZrV9h0evnz|mNxgDdpm=LJUhLqr- zc6Qade^36M`1j;o)xt^Ineqz!T1nY~U3)L=?F!6J(&AT;&(fN-@Na`phL2B%4^zV& zkjkoaj52e!F*@Zc@M&vhDtKM1%-Gu%7}&Kpqw<=ULZ+5BpF-}xeN0||K_$2e6Nm)0 zrC1pt?cW9lL>bMXDk{PTNiL8?qACdCgK8LSMk6tFKFIYT^)Pu1K7$b70X`ux!Po$% zzyvYu1eivlqJLl}qXVCi(5Js(HWP@=So8-(@iBvh7(e|2b67zfNG}u=AK*Sl9s>h| ziJB6dh?o&5L+~@Qv5Sd|iLmoADl6$Tvaz$VgMF>fsHV;i>Vl}LgW9onjOJ?kjCzcq z#AeTEW)2fIHj-yFGdD9g1BHk@qnNn4nX!?$m^i3e&Bw?tCeJ9x$igt~%Cu=$n5GHv z>=YJJ_Tb`_o*>4<*QKK`z{@Usk580Q#!$1Di=U6XPMw{D-$O{6Z#%Dm0QW9FNeyQ% zPN|7vyu7H2`#AY|c^Xx~ilz9s^9nGDfozz@n0t>$j7i2!)hL2Tic7VRGe?}i!$?Mu zcZYyzHYazH85b`Pw`jDak)bq`C@)y8o}OhO4-XfwN<UXNvSO}sV-7xuVgnf_QE=Vy zAJUeEq!DWdXNGieuMr$xuvlkBOC{)hVL?Sf5jjx5)sB%-QC&@4k&T@doYLS87HH{Y ztY{AI--^jIDjJC~F$nR2<J5sqh!F?7;ZFk}KQprfGe6(o1jYjf>|Fm2bFnk$3-Kky zIsG}{6qf)>evGDW{C=SN-H+dm(Ueb!Spg{-@!??qm1ExW$45+6P*9b{tCW+8iF2w0 zpU@wl;L6fq<{e<CEmt)$QC%(s%1=xTk_-%N>8#8Q!r=T5_L`ugAhdmE%E>5Z&d$cJ z46Yf})$|$FK)q`td02TYDkv_;2x__hYxvLbuR%(Uk;$IPp7FjN2QM=($6uenK0G|U z9CjQ`TukQ`A{4%W^U-ZCCMJb{3Q}r}4WNcD;{!$(M#fwJ)R-K-IGNa)9RKd;U}WO- z;*#cI3YU^Pa~KpB|1!3L#sQc?{RMD&CCnfNs<#;B7)8O3h7?D}ibi7M?1GAF>WpfP z5ML+?vhI=5u+aDgYNlu~H)tftv@lk1@%%f^!<hUpLBrxN151lcg2wL#P&<mvLBm2r z#^qm!EDxh4&o3bs1`7?w1>k`XklhX7F$fU`1qK~Rih`Bv){KIX!iPaXk5Pe-Q9zDS z!HhwGiA6z$NkB+NfrYt2h!0XCJOD=m<AO=Q{@wUBY0@u7jbDsK=l;$A7x!=expRz( zjEfi(nIHUvry)>U`1_Ah1EdzLgDD<a>A7>@a>Iy$f!&XlfkBYLnSp`Plv$4v)NNvC z7G(qXn;1ou6^+c)ne`Y!y(4yJHZfyGB~ue~Mo`LCV&i9oC<B!o%Ahc06k`dOU=-oq z#Vf)n!6?M@g-3|#o8DgsULi&iMiJhBA9zI=MHq#6|2pVNF)rj#5n&AG6=CFO6yjaR zE5yjpD8kDaETY1}xKN5ohK11qRG0lbz``RS@Xyjyn3oYWG{F0xfmhhm%#KAwSVou^ zQ~>fF;1!k;{{6-dJle~^*1*QVz|O$Wpvqv&z@P#x3t_Y{O0<iM8QFt!AEOvMs2#(o zW)2#9g0$5|1r?20A)`u+pphjtlVuhfzrc+-#*6J%bF4ZTFKAf&+bt;n&q2sc=%0hU zpr95bgPIg0gOnO0gVr+ecobw*icta4((bUZ=&)cC)Rg__AS}#yKvq+o@c^i2_s;<| zdJHYcB^Xq|Z2%FtyWmMhRM6N+j0u`p>=*^qSdh{SO9I!wgWM9_{|@kTaEKiMXPg6k zLTA7!0F-7XO~ObuObI+Z{|<6;GCBwdi!g%H4d1^7LQF<TDQz!C(!t_ZHf=<e2pJs# zwKN%VyEP8Ug<OpG+!EZ34*Zw!I(3T3zXg0kLVSz~LVP?tjP{(I{|*Q+{>0-{&?qfv z43L3=7o77I^%&Ke6`A=M*%ieVL3KPRFPaLPm<xl_w2_#&uo&}yMjJ+E#w&kqt}rq) zGTOv5Ixr=uN&RY&Qj>hgWh%w&AZ5z+PLj!inTwh6!#@Eg9;O3}{>gzNk@1n8Et7_% zl9J@#8@5Pc#LplN8X;i-#iz28I;b0KZYItsh9ldvEKvCSfL~BRKtVxKo=E|3re|8} zCG_tACx@^qQ-i9oknq0)r}5=_Mo?P_Tpk(2%OZ6(dqy>7B|at*IVNKxP<?L%s@U1t zSm48x#zrjS=4RqzYz%5r{~WXg1?9V@oP;&L%CC5`3-EDwax!w{{yVh>(NvqvD4g9S ztEtY)@XtX?O+#I-s}tJ9%ZTS<;_Tv(<Z77+YSb}WFv^^(%1>>S7ZilIFIgKHR2bYr z?Mrqh21O+mb#^vHc`d@vD8~qKEVyw3%h)DhufW?mwv0jyieR@JiLpLsboiI?@7<(- z@3R|)P1Mw+Ksisi(|t=~+Y2{tEe^2*yuy+o|4FF{cTG776+F%>?8rEaQFs!gNOqI3 zi5lYrR;GVn{%y`nYZQhUp=Ki7>EzK=B$y&D%q$G@s+x&#S0_Y(mz|M^(KkP}QCJOB zcY<c(F#D*Wu`6gV2G(~m5;Fz28*uYM?K@EF1vT10RTxM;KE5#8s1+>8Ky4e4e#Qn! zM*!3X!p3505a#^@E|i(U-3;vP24P;%&@W^p7-g)NF#)U@M0^GjV0#d(zX&Ea)?Z_0 zu%<sCyIFjZ2Z6zPoCP#~#Lghkz`&?z3M%zQLB$a$JV5>f^#vIe7(hKiF-8X_P?MF} z0oLhOVB}ydVB}EHuwZ65kTq>u*1rdT!Sz0qgNDU{9gH0Re(X440ZNw+;BoW@20;dM zaJq!I2GvYW%#6f9twB($T8~Lt2{J@1XaZ_I8yks<iy4ClM8y~#9KeC=;GN~odO%Y8 z`YhYpm~PJl|2_x`NU6z-TD{qsy{k^m$gDm#m{&@TmBB;pHy@}bWcj4#Ve0K&`j=Hw zny*C1L}wDGniSJB1#v#v3M*@2EfXzJ0t3&pfcwVYAQ$p8@i8hx(-9;bK;2;@P($9- zgh@q#g-KLI9#ow}yUL(u5vZ4A%c!KL&!lE*0-c&*Yp@a7Db^VQZiRpe_cA3H*$w}$ z|J(HM`UY7Sr80N0Fqnww6x%6c)AoSTgwco5<Ut!#*Rm;wiow|mpt2j>pW#z*x8aFT zn!?C7XU@N0Q<CC&Y}~=JkOrzkcCe!1lx5QyCC*k=o&EO$JQmNOz|6q%fI%2iZYilV zLff0hii~DPV$2L`Cc^(V|N8|lhuIi?g-z607W_USr6$bit0u(=YG(RE@*pU^D6lku z&C<ng8iNQMC?Y|VP|PNJ%-|^najbSQHiWuy@k^;mC@D#Ru$mM<mm3y~{|U`#mSI(u z7L^s1)N|336qOZ~R%Mk2l?f~i4F7ksHL$uf2s7w1crs*@;wBaWCa6on^E4)E>fp{B zxSxh3XU7Oih(ZEP>YxresM7~lfi2Xq`iL=fRSz$Zw3@nwh*xm1mxzVBniMZ@596wT zmw9=m)YRGK+4WSaySl1X^w{Ou!IGDW4+Zmo=l=b*W>u3?7m?*RTfAej8NaNEx|ABL z^|pT||LUVz)udF!S$J6_rJ@-H7>yVOqNOBRcv-|%q|{iW89?*?4B&YPW(IZ!ZU%k^ zVFqyqX$E-)Wd?l)V{l#-RW=nCRW?-=RW@Z*6a+&M%_yiS$Osh|7F0A<7E~5g6g4&l ziGvg|HZ(LeFgG;(X#jOQK$w{UME+;^+rZM$0FwUK0H*&o{B2-u_zM<dW&mmX!^l|A z2-OFYWoq~b76*+pH~ed00-4P4w}GhvghA;*07QVtFERb0&Y%tTi#3Bi1B0=$ps_Fo z*xugWUO^#FUVg5;{9HS`I(d0}Fq&&`KiA&A4vgaL?f1sTft1<Xvo`!{WUVI)gUV%4 z*~##KD(h?T7=<j-7zMON#HhyzDxN^qkT|0l;{oq1Z|^LYGSz>g>L#YDe@)d)eM}e^ zm^P>}omOSx21$DVb1+r?C!(s#bVjwolyQNHkEz;UGj&i9g8E!j*|VW`nG&*%72*ap zbw)E&6Lm&CMrBZWO~@6D4PeKq=*cl&Qw6!O!Sn$U?lS>9T1KAnnyRUZI@2jNQ;4&f z|9|=4z}C;&z!1Wa0$Lvf>XYz+`dw=3YUU<p=4NW<c1)m&SP%m=q6QX$GnmZn*u>e* zKmo|k2-e5WCJvs{HD@$a7h?r=-Hgoa8O^{GU68IE5}z$yL+syM;bO->slNR(5@KwO zj2w(iJfdvkIvmWbOw2OOqFOAB>?|xQEW-LMj2ui%d}3@Ig1o{ais~|qYP?K8y#mDk zy;E_I{WDvdo106bf_b*A83&^dJCoY)w=6t-ObNV_ETSwte18}4O0r~Nh_EPGdi*JK z2+#I&wqeoZ<B(?K7Ln#s%U0vk;NVtbQz=m5)MMpUW|b;c<51@05Ru~GQB_oz6k}v# z<}C2~Q&#TEFCgtEFU5RYOqpK}R9}Ky3;#f^1#m-y7hH$@pUw)JtC3+~U^Ehki~@j4 zPtXvyvXVL^5t^GBv-F6IDypk13QHO&|8xK6uA&d&i;A;0aPnFx{rawC!ONk*xZ+=g zB8bn*sbs+mo(ck$<qhEamzjZwL4?7Efk6{en1IK96k&sNpeaD`kTs}<V#^5XFoDMc z1R=doQ2QI)(_?I4Zurx{+^|5y0#xFF`;*Irc^^R9E)RHx3;i7|G?*4>B*@H=(QxoD zWMlx9ITjiV{({x2Is8lD6<z=urC1=$%ecV5kVyeFSTRE;LE}F|A*7GO4(T&1GH5a| zFo2d}D5;q+8i|1#10d&ta;7yXrGZkHJR@WU1A_pw=ew0F->qbR0BSP*Y5<WBjD=H8 znHWq{g^mBFBSyZN6IOzhGI>tR`U6(S+>kY`!_eK`u;X_FXrTjS9Rn!ug6EXM;m6Jp zz`(%BY$RrEWUj_&ZpUIS%xKLB>YxdU%Q1qMCoqD>A=yNg)RdK2*iGyijqF%WP4pPm zRoR$CMdX-`L8Fu)Nj7CRrmL$I&sz$sh5tFlB<^Hjtj6<}QNr7lgZZrDBu)M>SrLBW zE`Byf`+p8T|6ZxHG&72Gh;s6>+66KGvy)1du~ze8W@NH@X~m(+9Kd|>pB)R+-#=yk z?A%<!>heq(Ojr2W|0($Wn;EZk*GiX%UzSZxm_>+1fR9mIS%#H~osEl!Ltx<{W+tnD zZzaX#g*Z8c)j5SkIQSsr{*ZA;Q3h>>L<R;`F=GWm6LmcnWhHhIHc=5aIYwr1+tJhn z)U0F|0j)t06#+$uxgCoQqp5(p9*aJsnTjzeq~w@IMfjN6<rqPfGRX5ROxj*fj1`*F zu1@iuR-Q79OpF|CTFyaLNyb(wB~C^G9E^XTF!A@OuyeDqGK#UNnCcm`vLrD+X%>$b zb8D@Mu~5_vu```@)~$5@iWr>@I$8hn_!Suai=1?96a`thOs|-5lzYW8U1OKBF9~tW zw3gvDI%O=KC8hVLAdW?XpGQtrMqkv3mHC=B2QMcp3u7>oFr$=JNUgU?xTTeXgz~Ye zDf81@W!S_(tL6STuz>QXB?E&fxU4fblVVgi)nigOmt!(EvSTy{%`LF=F|)HVvGXy5 zMx@!;l|YLzl+~1#*aX?8tH|&&R%J0t*!l?zE3T`xGDz)}VdazSSLNVg<7ASq6l4+; z;$vhKT*1uCt<5c4BGct!yrV9ZNnJ?UiJi%WiCbBcmz$M2or#l`m6J)`h)b1USYOeK zcgo*~A)HA;q5MKD(mLkMB1}S%I<1bKnYDpInxU3~LDfhMG#v&S?zCnUR8~?0O|{80 zim_=k3NnJ)|7M^lQZy2?W3p#75(6hsHg+|2JtlQMW{@A0*x1>`MTA5}*u=moTog3D zrlPFGrmSYmXvbu3CTPM0>g<8iILN!~d`#?W>Vj++6oo|UM65*WM1&Lr0+2aBFPiZj z*V&+>(yzj($|lDx%EzI_BErJNsxB)j%Phdl$i^egF3TjCY~-iF$;iUW%B8VFg_T*! z=id`Yqf^Grf{{5A!fcF8EX>@~6)Qx9<rJl~_!?BD7D-7hl2T=1fU*8Cu>6;1WnpAw zWaZ^%WGr|PAj`+16T<1|%E-aV%*4pZ!V+j6_jk)efqV}|QEdSYE<S!nCJ`ZHMowu3 zDLyU6&{W1LsijQP;xZyEJQ94o<>^dPLX7p0FlGjiS0pk_Wnd77hNB9LxENX>nyRU* zDJ!Xg0#TmPR0Na-aD<~BlZl!s2-z`$mOm*gu|Y$U(MXO7JXyl5tfa?iVrHr+A|}Ge zsH~*Nq^@RS4q8wo$0))ks%WBSV#gQ=30pVDL`H^kMRDYS<>L}$wUw(2$kF0tWMpE* z8m{b|%#5s{5M$w<uK7g(61J>zJT~SIEK*V|4(2vIy!@=pe;Alq`FYVrSwNz!_0p^? zOpGjy3P?fj>&D2-#>B+J8fZSl#QfMI59~oMP_n*#4Kuqe2fLR?pcyNVG&fIq1~|-r z{a4p9V-~d#Wj51M7gdp0W@1v7R}sZ3$N(901-Drt^CtET;F&d0wE;@1pc(^xoPrRa zok30NCwLVKTZ5DuXt4h`XxWJrD|ld4P3jkz$HoAa1FK|dkWxDUW`PLCG!O}1QiGjI zCwD`ZD>8$+o(zxyL^UZ^sGt6VoybH3ccZUQAjC%vZ#5}IXd{QUn$&Nwi%AY?qQaVx z8`0&_-Hb>t$Y}?eO;YM$V8Am@hdy%*avNmK1TvX}&c~MCk=3KigY+ZkA9Ow=gD@|+ zS&M^UV-V*31(suV;1&Lbq#9KQSrsz-0a!1HU@QiaV9Su0e?G%SSr7`4M3K}YF&RJ$ zP(f2OtSIyF;88jybw)K4$O>FiLjxmp8iaZIIR8E1<YZLf<l_})Z4l=D3GNH9ft~#u zOtOGQkl6?|%nv}zC_vg}K!h+spCNma71W4DDG&V_7@*_+pkaT|s0$~>eoO#)5Iic# z$H}O`x{_2cGM$qFnIOyyS}MZ%@4-J#aHxO?B+p=Hg8Nb6cw_*NwhD@Xdr&YxfjSGI zQeT#l5#(1fb_R7`9%-R}xhu>6I+U+mS<ZBzd?n*#A!#07b(RIc4`>Op3Nub#29sG? zzLas2FsmRa7{Prh@H$U+20jKk20c(nvVj(e8!-whnlg%WGJ=*WLl<qD3Yw^iqfGA^ zi7_=4EGQ^gz*6w5fze?BXvO+ZkRN&3K+!)Lc?Bek07zlM-vj>~4uF+1DhTub1}WoZ zIlwEd@Ef#J(TN4LY7tcD{cm7>&6>@?#vsBV$)L)>plGhnE@~{wXripd&d4SzVr&HJ zc5^Z+3NniDGcuZ+fmTw8F=j`<j&5Ko6XRn4`-okPi=9c1-HdU;p9B9ASYN9y`<Jjx z#mrRgwQBV1=<EjO1!5poTw)+qr~W1UIl#Dp>4B;0GR6f<)zn_8L)u1=_A)zzIO-?| zAEOdzHrv#ML4ko8G}=Aw3ga}ze^UhPJ?#1aO;%*oVO+te!wg+l!I10r=a-_Inj$ls zTkaJ`oqt!r>((2<?JjoEh^wlg5_ozVWpbKf3TSqjc?#MzbOMV5WI~SVBj&szXzZ1N zg@N?|gD3-N?A1hFk6B$!3EZR?6%jKsQw7bFn}Ql!=5~xmV&Zbl;$ln;B8;+PGVCl$ zEbKC3vWz0$S>8+x|E~Ot_;)3ctuQiAhSSKzm_sHnvXCv1u|Y+VQCrbmTtGnFTv3}* zQN`5Td+U{dR~U7!Ol;y@+<h}vPDx2F_Gb5D&U#3h#P)-=fq{*IkHM0`j=_V0fe{j$ z3~KC*Y+~k&!q8=#(4-Ao|H9A6rVbuS5rw8cTSgOmMl&&HaFnw%nuFHYiHR^*l*}ke zU}8`Z{I^I@L69*naAo<Q1E93d>|k%k&&<qY$R{K&23ouk=fv#b6vyenuaUs0@HgS# z1D2SWe-C100%T^$Fea4DD6vRjIsiB4@A-WYQ_5FLvI_|E81k{PK^B3;Io0uUI`9iH zo&ERVZvvwNlS~YwLX3>e44D8>o&twIc#d3~Aqq0i4617&UNZ!*mxnA7Vngy7Xy{m6 zOc=CiPF>BGQCWeVO;`+^>p`pS?bt!HE1)DU&L}3r+5qz+!+&03DPIdNwgS+4eUR^j zWTXUyMc@8w0O$S%|MnJ_>oSXTun2H*iCJnXvx_QQ`{j3S&03(&%OfSs*dWZL{O>Q! zpTfM-tWruWFkfC1=HitQ;NWDu^RGdeRZ#0dbLYPe;@nKUd`jsFEf$6$2?4>5R_bEl z0_I<Xun9Q7Ffg#yvo<j3gI5ir78cNG1x?R_Ry!bh-yTwu2}9NhfZ`dpf)d%g@EGOd zWoAQ-Q!ZXMHj(FlE=f2^{0owh$dhoAU}R@%mvEBElVFPbcL?T1NK|q$!K3mYFQ)?+ zGY8|9KbIsV7}tR{Nc{WB)DAWT6rZ5^Tn2W~T0Cb^=?Gdcpk~Xc2wEfn8rB3?tY+4X zf{LOdY+#N#XtG3>Q4!QZ1y#95phyFCQ58W`SmKQA48s2zgiX}`H8e=6fteseO$xN? z#stI^W&}wyf~7%B5MNEIfw4i&M3|9*X%<)!(dvakMj~tjj{#J%FtE0P_XU}O$Dq_1 z)zslLZICvWsGylS^JQTvDdE3XoGgg-@GP9H#lk#NzZ|4^gqe<Ua{Y}0O$UM6+-g#P zqqsRB=Cgy$2ki+$F&~FDj37m3=4^1=FzsYICM<<vvlR{}FdY--k@{-|c1zX&Dz*mJ zHU>!s2Cy|EY*0r)+e2a?f3gKb{K>%zvRPOdWE(37nm-}737ddqc_7Av{aVCY&)Ubp z&A`CP$OdkIfTEi<<JSdoMMZH|197IrzjC}HQmhB0M0o$o@v4B*6l4qzG!6sm(_yT| z2hDOK$_&t2PBkg;#sKgRfIkh$JXQzLvI$792e}6XnyLi54^qeQqnAVwQxSSm%mKL( zl<uq8*dSpi4)>b4pb2PQ1t{sOnF_M8>w<!g=@=;Jn2rex|Fsg9V&wp(5Y_`yJi>pi zIJlXPff>RkAW0r6rej>-aa^$Zuylf9KFAu-l1R`9DX1wAvI-o&Xf|@NB9bO62X5Or zxS5uL5-P;QOv|`9|5^#d9Rqd?EKi`i1>F&F|03Iq>R&XAK<mK%|7KudV`pV!;AW6! zU=W6^+X3&tK+Lg1hJ*Q-j=|CxD37rogSZ%+!I*SmK`iz68Dt%ln$&*=DQH~J`ag?h z8S66!5e5cMCNa>^7Q8%?XA~1*nf&)Hld!PxGEhuN2@5kl6E+cECd_jA@7up`!Ayt{ z(=)IdNE(RxKZ_*|Y9_`abdaIJf2E*$h5x<<YXq6XH2JR-lq1X}3{e152nq}M`WVpM zAp@hSiJG#aAY?m{sGuTbPm!^rAY@~asi2|}%7Q(X10XMh10UpbP$+;o;6-5$XbmMM z(6$?p45l7NZM3Ena-IZjZ3Mdu<{C^lAa)BeVzm|QC^ZaQz;z^a4VpH1-qb{&(cH|` zL?5(3h@TNO!p0A3-^w$xvw>C)h#4E%gU2@Q8BxQbR(R`HVc{rYX(<pxN?JHd7{ovo zVQfYV5ypA=ltT?*Jcl!E#KCL4K(19{XH-{H0=re55j2IsXvc`OP>z*FC|cM=_+Q2& zVH4qKAtA;rVJT^0CV8PhXf9$_k`am$7XFv{NLV;ZNJd)d-!x&6IxjRgfaV-wWtkO& z8v}zX`W`Y9Jw|0Eb~bsiYs^5+CD2GdJ0Bx#mzt@GnYkT{3X&_C8-x&R${F&Pg@10~ z7jI$b5#TgcR5CH})-bTo1gp?iR8X>#mt<@}bNzw?pcNM&f@xjEw4kdJLMd!KE)o(Z zifVddGNsNcAZcM+VIfgNeJ@)yFG1#pz<mHv-^&W-C+IRFh_eNi5s8o)&C4h&6B&f~ z5@3s26Tqts84vIYA$gDq!|@CFgqRpWE?mGT^zVQWA86?xb03HVGY_J>7m-Kw8R8ij zK$B{qF-U9BC@*vkj4dM{BfBwZ4Gd_tzZ|1Dblr<Aqa7ot2dfQ|hpW|NR0q%6f!Z8) zjOK8)a*X1}Mq(^$b3tWxuEN3`aCXXBsDLiOSga=1uljl+SbpJa)qao$Gyx{ac0Me+ z;l?rQG)Sr8&<?c#R30MIAgJuJW?+D9`T_6!0d4$I2N9r-3AA^@&nPY?VuouCqUR(o zDXz{=E-9`_Tp*eYjei!>$-}-BneilcO>jdb@hwt>oTLCPheROjra_yGK&>LkqzZWd zl9&k21(cKjMS-&SEn(p_VH4rWjG#h3O}Gl5lbJ66ixL)QR1-E4P7?-e0qKP-nuRR7 z#<GMOo<~|4I2nY%`-Dx@K{?!xi4|02f;Pf12tfD8K=*mGDun;#>s*k3a#GkINv6;3 zOQ-yr#Hvtr_TS@wC;mMKEqG#-Wwc<FJ<HU*u<b8@WcZ}hdzd~&Px>=u5u^RTWB(qV ztExK3D932UC<|hN#$z1*o3b&mdNU}%_6;$DD_GDLbI|q<Q2zx~$FhSKJF_u3n*4QO zR8>>+1}#DOTdJzc)D4;s@m5p&cbn;ei6c`(gQ@qwTPis!KB}rrJs?#~U21AxYFTRk zZiAMUF);i$Wjz4357gEI?JWTf;KBDgLN<aK8;LWDu^v$UTdHnitnRI*#;E$&!Nk$g zgz3P)+iGgwY9^*?Ox>zX4rZz#XLze+sWGa0n>LtwGpecNsCcWX{Vi1n`Oox!1DiLi z184_5BdFy7@)*2F0IB#v%hEvuPK;t~-m2bepnY1mz(#>R;;p8})U9l8rV6so6pvd# zZUyBfMh4UWTiLu>8^Cc2@uNCuw>P9S2wS)>DhLf*HgAwl&{~yJH8n5Lq7_CpACm?X zA4WA$_<5@`9WYh>TLKDC&=`-ms_MU6Ob0+4RR20Ks;R1atAqRr*{5^>v`+v$W(ZpE zs;tDvDk>rlp7#Z<QD9PMGBq(5QZyDcF*5@9*ZzSzWDk;N&n!%`Q)Xoq<QL#!=iz6r zH(kVZ@`0L(FcSmwEEC~>44~zz3_S8?p`{B_&0W}(Ir&8dIi-}?8D*CpZ)2PcYKaK{ zLumtvGw4HlmEzE|89?I%M)Hi{><1dT1??$>ZvJCbSA(owVEWAUZ_5N>$U<5*6X6Mr zK3q~<Ma<$L_P;G4HWwG84@d>$0Vy@cw^CsB@CCUb^;|{Fp8p)A)PyJe+rq_F#3cpR zV4?<YOENL={_kb|%v#I<b{{TxfI<+PyTNPTK;}wu6(KtWhr5{^usVckGFE3p(hdUy zWIY-v@q!1B;E5HUL%^#&K#gieBQaLce%k~K(4JV(-V)H}5io~wfrbS$Xy+`3sD;MA z1PiELObo0I%nb~nJ`~t4$ckam7%a%#-{36^EC-+_fz7o5rM2Au4Q#@!4d5L-a*X_p ze2nU#_3)7H3@aOC+m0@y9-}>@9iuoa+`X!1VxUQFc2?F?deTx3Qt5jCzJXKvzi)c! zQVvqmdW>BEzCooJxxiA4Tu`Zh-x!}srR(MCNlVTAcNUcV8I5O3N$ch5rAy741(RVk z2Fd(83zvbelK{6xKz$Tl(1|=OLa?S1sFe=dxB_XC7@08(o2Y{h0AObm6^1m_ne;&$ zWX{2xM@*Z9cn|Q3i0~fZ6=D+N;^Mo*$HgTm!nc!8m=(Pp^85WhK4B5weY_&VjA=}{ zJZu~sY&?G_bMf;tK<BpD7+4(`cp1bP<Qcp`tt3HHMNvUfh|P?~phh#Bh?t6rnz9l< zqp=aF{|w$M0qI0Tm;M+-PChY`2M-p5vzw6^^MZc|RAdgwsQj}yTqmWiVPU~^!$Lz_ zs`iiu;|3wV1PhJd2Q(}ot*ITc&CRjdwhaxo*&r6<4nCnR7K~R89QdbWAt^1*oVrln zBEZ5Tz(RiE0??i!Seg>z1MN0!-qq~8bg6Iiu4W<7*e`f|zkxxN0W^C7aySbcsKF0v zNP||Asu&wFim<aWK*j(WL3;;4Gv?}`m9mgcpP-eqOrS+Ob}XR7AXpjHq}Keq^SDY_ zO-e#kI!>gMk$syKlbVR$zt^{~J($wPKS^9bU)xSrPD@0PiG!Kh&dW}Qi8FlqzFhMy zn>S5W=Ta9@QkPJ-R}f%UGf_)k*)A#}r6w#9CtQ=k$QGaU;NPL#9DP<V2OkG9DOnai zHePmRUo$IV78fpK)8b3>%T<K<nK{)}xzq*4Ib&K%Kz{tszzSOT#Lr;NzyR8#2Z|0* zdl8g#7)8K^uDUpQfRokKL|t56js-NA^b0(J0Ge6*&tT}Ekl=6V%)%Je(-~zB;W;rw zcniRD2Oxq)*smov*ux{*IH7@&Q8T2ZaZM6TB(4c60?Nyv6Qmf}8CXE;%N4<g<fy5O ziHa~NFqoQ{v$2b@D5x-i;(`r4P!3*`%m9i71qRUS1TzK&2648A8Bc8?XTsP%ozcoT zk?{)S#J^i*L~1w7XvkEBi7@Ag^!!u*`{|#0kBCSQ<4q<$#+yA%4sS{`DtCeoo!MEL zQTpcW=g&-*8Zw(}MPy_|!m9pVa#4Qv?=_>?Q)L(Br;K9%UOfekoBv<H4qA`R$soyK z%izoq%D|v%uEz*=st~$6RYC6LhYTQ_nwW!@U6`1gF(?{=ca(z0_=QE-K&Rh`fOe>| zD4Uz9n5(Iq%Q1>GY5RpI**=}IoT(Gx3&wWF%zrUihFn5CRRTKwA0tFWW-=aQ<c*9r z;}T+(Qjt?+7Eqnn#3;eRctAwmZQ8%mdtO%<Gb@Xi+sCiBJlSi1ARFY*fB%^B5Z-*x z&a~$*&)!G@H!dL_Z^s**@;>sf83hCr1$cyogqgVh8FW82V*IAt;-=&fxMp9A(7QdG ziwhh!#e?JS|J(l!?80me4Ezj=pcIAP|HCYkm>I=D+j13^Kr1{ML6aSzE$HCnb%0lx zNr;P=`wllRv{d3{W>8iYv{w4Xpkytms?5wFXyazHa37zrFdv9uY+*dj!_Ljk&iBup zi<g&q!><N=ds!tVS<up5c@-4~(1}e9tUatf3`PtLjACs3jKZMRN}$nhbxuZc5L=rO zwB#SO83;UE#mT4!W{b0$+cB~x=s5T+T)-;Wz|O<M%+L1k<-fnCth@=Fd`$eDd;f4V zF>)nv^06@;Vr2fu!pF?S-M}ZnG;@K^0oDYQ13nA?dI<9+urV_8GXDAZ_mCi80w)vq zpS|n?ygZ4VjHZmtjN%*u0^AL}tn(N6IDl%h|B!urnCqZHtGTVgC%zOjFo-J(DuPyV ztD?~$F%Sle!v}Am<*}lmB3N8eP|+Ms4pjevN&!$S2Q;Sv-dQ9I+D`&y85@Z;Fe?0e zz?i`3@bAFC1?X(12Vn6A5XsB{lKlr}|62gw^8qH99w5XS!KNvI#lZw)gOACt22kzS z5a;CJ6vqgm8cck^Dj5|VKt?k<I4~;wVPI5XJOH5`7#)}t7!^RvUjKnkFZi<-tmNMV zMuh`N!oI)3hoP`CnD``s=428eqz|;ewSb+0^#OwrgE>PX0|O%)yB-UuF#swOtr?9# zttrqVHCsj{K1Mw@bu)807Guzy0jQBL1Zg0HW*(IInAq9a`M|rTp;|#p*UatM;HsHs z+4zdd85?`+JOK6XAN*ov<NS93G+D2ZWf5iKW8`FFC2b8=0@@7?+v*2W@}I%L&qhl^ zK~GlG*)}}3!UbXmnjlOUi+s#hU2_jjS@1B)A3hn7MZ&xX7#W$_`NWm<Y}I48faMSH z332^9$XpInAZKH*XP4^~RS^(otO(YOA_7s)0BT1u{QCz!TMN`Q6<}gfR#InUWn*Vk zQ#VyJQv)s8W;F*LjbO*9Vr<01&hX)1$`?29WB+~`Itog&FtajpG4U|58;EL3$Z^lz z+V_FcXWJLXIm~+hmi)W9nq$2)9|x0|5F?8K3qLa-6Njm|g`S5-BqQ6jrnhTSS0lHJ zlo^b{yLd%K!25?mVGpXwWEn-|n2qe1VSG?)8J5OD@}SlTGM|m%=)Z;kJpL^_3fVNH zZxf`ar59wQ58;9i9|CRJhVWQG+X2DLf<XIgm<}|Y{I_rGRz|0jU@_34WMV8VVxW$Y zl$sh-8bYI*6cQU$eljvdF^IA)V^LrbVPH^YM?O^qG8`?!HW@rL{1$yQ`0P?)VJ7hC z?owe>VWy|T!hfZOL5uzw7#X7eKVVzN{2F8?^7sMt{1Y(|w#lGjUtx^VV5S>?rG-Ie znF=oz7KRK=F9jP4o<C)8U}<1bW$=cbd8Nl}!)Oa$@(J#R8i_N4hW4~UXWGd#ih)k- z0?)mH$BzURmGnXVNYGM!Ic6C~Sw_%Y9V-K9Zyg6WI}6hRDK&mZ2VomwMhAX1sRK+7 z0-OujnHu>29T2e+`F8*$_V)ltOqiGX08EDhuP_T2n;@GA;{wJ7YElw{j16L9{~81( zK#SzK4{$S1lMwvZATG`b7GiARIl#${(DE+<lz5?I84awU#vea}73h2yHt=c-77++7 zEGWXp&I(#q4L_{U)WnX-oLL#9%vjM#jzwG%wCVzUY6tTfFm*;z;`bX~3FaA~v9CW2 zQfdMM(o7rAfOw1y0+M_@EbNRd8>Q4tz$blxwfHa}_{Sij%3Ni`C13zr#xBLJDR0Qi zY_4Xa#w#Q*s>Tj>FJiBo2<H5eEO@M=p(W<GLrhCc45LF#3)6y_7Ul(i!F=WeAW?-D zP}+mUX*g>GgD`^@XxAKc2L*WO1hOrdQB+Zhjh&I*1U!cZ$~R#1*~8`kZP1?W^!tF4 zsXSwV_G~8>2PM;gEB_pbJ7@cEJu4&BVuhF%CJ%Y#e<jB5QgZUjj6KHgQjAs$;ywPA zu(1fTAUTGS!Qnpx(*ZW{+8PGXASEbyfQnb}Y>63UWifQ(mg#_+6nGvMG-C^zNQH8t z)3PkLOhAW)fhS}^v$Q5^ETBztj0~VjS4i2#=)lgvd;qkL2VA~`x{eq##i;Ybe?Uh3 zXAnj)5Hafunly%5FAQ}J=nztHd$EB7G^Yrv(|H*L8AL&GrYH#79Kk56C}<2}2`UOQ zHT-7)VOEA83=OOd5DsYb6lnd<9|jhN-wh3H48Izf8~%chSZ(+X%8iJzUjqgQaP4Jg z&c+T}B`qo<uE(ejI?+%~T~tI&9CYf593z+lt*d7?HBmRiC=?ki99<+GU2S8+t63W# z`O8M@o2Gcmit$Q`X1kP3l#-aTuHZ;dsv)C2qt?puKj3vu%m>O>GS8Fb)bLf~b*c`R z6=p9<G_okNWt3#{F6HB3u@7R5Vvch!pS?0fh*Ou5388BxBrc%iohqQcDd2f;ZAL+3 zb7fFF-`o`B6In)OQDeyY6eecIEDu1-2KF46d#dkJWnbK}_{537Z$Lue6&McXE17~{ zOtG+FJkPmc(&`s~*RCuFxe%1z*+Fw$&^2n}4AKnB4C)Me40hlZM9NA?y$dsFzGqZ4 zRb&uQQ(zMiQvk7<6>S+6*^#%;gGw_o<^@80PH{pqLKYf)pQc@zHtouvX`u5zSsI{c z`~7(c+B?_4#_;Ee!`~XV25-|}45r@RrfdwR-b|ZhgyNh)?Ewu74v^kye-1S;$}`$M z1ZierYWR1ctgE5nH&_EJhy?fHJlH0)g8HfMVAq2jFAfSS&`Kgx6Lm3AKa~x<ew!V< zSp+n22x`Tcnh1e5On^>@GzWEBK_iE9EX)oC3krlawE_yDH1pvkK~8lgZRUhKGJaYb zGJg{{>|K0zAEVKN#b=utlM|TrloXN#dAZmELLx1hH!LV92+-0L2CX>*(f=3(lN6Nn zK$<nQ{A8HsH=kX+fYE5**~NP|{F|G=tgWQZDVW5?<{K2{1d10n28RFq><z3R7}yyE z8KfEN8TK;#hWZP1o)36eGstIxa29CJ0(!=eD4s)pK<lYUJK_gy8svZ<Mp00w3{>ia zLQb7cNgcE#9<+rNbWV^hBWQ~=sHn7K0_~eKGZHtmXEXwZHt6IbK}s|;H-J+S^E96f zAMY%02>Gvpk8?J+sFDRcyLh=UH&?N$1~(78_%3cCMsX$0GIm~Wt_kd1b^_u&Gr0KR zO2sNbN|m&cm2&Wal=9f{i*wK5;$v!<$|GdVQpLpK!zUsl!so-mRK;Q}#4~j&ub?pt zi=72j!dR1yrGmv+kasGn>Y>LN{RcO~O})KYOhFBOQ*ZBo6LxY5GfF6H8aQ)t@vzI4 zvquT@<mgNAbIs%ujb!I&mFDE)^ApoilVB9&hAZXf<l&GjV~-Nz%h5woD&Qk#pd`*D z`1e7N0Kc?kp(G2ldz>f}lW3efGmB)Qq%^-kj{v`{I7os?MIly{iOF4)$qghYF3ZpS zfgD|+^b0D3>%nbdRq(ix0O$Y-b<kN1%Ah{3i5)9wKnOHM06OoMQG|_MjzwIK4U}#{ zo0iqtlodcZR>j<o(bPm8bVSgef4ldGMb*qwF=FNxW@2PyW@2S#V`NnkkQL>s>D$BT z%2>zf%4E}5!zC&!pu)<?2HLC0$jB_hW27>xCMxXT$CFla3mG*^YTLvcr!jZ`d-bMM zAVPzaU4WOFosEr!otd4HO-)o)L&D=ydH0*n&cB@%7d<32R7KU;7}=TGS=iXvnfU}5 z**P^L1X@_4LSjC&`FguwgSWfcKy4)(hFk{tNi&R~1p_8#p!s=tPe{-h)G`7csbgxQ zZpUb%4w6>4V>B0G2W2ZTX47T@1rnku4myVe)N=xzT_-96nzUqu97n^l%+KiGf&_;I zDG60gF>@9*NgWkUbpZthUR7CraRb)N&6NjO<&=d?Mfer88w@$sm~9x>^s2-r?5-{m z`}Y7;;4%uSq*@tDh^uL<8;7*H8EnXy0XeURslnLS>a=xIoK#t>wzvzck%FnRiqPK% zHg<jvK_<`TQgQ;GUJ6F8lD2}3F)EQ>iYmU&qGGAO-3xWKHM~uk8ce+<n!QaWD_gWw z9lJ_nlV?EtmY_3OKxZJ^g3gSFZGvPpQBw!UwV8<;I83w|mDu@MLG_-I94lyxACtHd zD6C8sjm*qJjUiA_flD9Is!`DKTA&#c@U(-u9V2Kl47(^u2^hnJOIv|o#8gOGjx{N~ zq4_eafw;b`DzAcqfV!rNj-(okxtOM^gj9k<0%L-aU&D-y4F<}}Z6U_$N*de}!Uoo< zD*xVr!%RV}q+wrXLC;!78)h|5Ll#iO)I{wcgK`X`psl2<k%E_}fSgolkSCKM2R}R8 z-v%KSWm5$sRu^&Y)-tKMB<s^wzDDUYl4HwUTpd*vlY+xUjeMIWAfcwAqcg9Q)i+g4 z)Y(@>(F?pbYAv$^E2uxtz$nNHDteI*9A<VvKVX>k!LOs32MWXTCG3o3O9lo;6Fp{d zFI`C;#9$T`0riK>p>0gifG5)V$!rbU&IvIY6{#K)LUuwD9;p=>F$vDvyO~^>T=q0P z{X0<z$JxrvYXWOL^#qK4on^$tWSo7C1@t^?0$1$*dx1%R&kE21%R)j}j$Vekmw|yz zft7(l1JssN6%pfOLgWk38dZn@bcw1JlN>X&^=b-l9VtR)$Cw(J7+Lvw|AE)sf=-lz zazUdXj0%h*Y=UfDEX)gp|2_aMc?6#^&UgScWu}n8q97{83t6r%%nRnkIsJ8TieqA7 z=Vmf80clZ_VpM>1gc%j2)P(;&0M7?N+i}d`GpI}%7|e|YmCf}SL2VOI5n#q>3|c{< z#BOY=EXHgsXaYJ1&PWu!3HtW=^KXo9C7$k<jMg4Zp3f&$ba*m7XJ&rR&Tper!gvL_ z*;&Q3?V5>;i;1zT>!0O}eY573raJxYVQf(oQZ}5+RE*rx1eMVY;ImS=LF?&3Cm$<; z!_mkLe8es@ALs}$b!J7-`POE}g3yi~Xg)&FNR07;kc^O!j1bcTHK~8W#!P}djMA(= z|8k_%<|c#cGVqa$CdqS|7JwFa2=V;`ok#X>os`-?Ssp=Y#;0mh)km2aAbq@l3`Zez zji4fwje$WObglt<D9C~x1#uzhfO5#loRJtv9k#hgaN8Fg*-W5SFMOZ~gRHCuA4~#X zq`Kj62^V<kkEv&auo`&LB2xk+g)lpmuLLWEtuh8pjR-LZftEK4gY<!?B0>5<Q<30) zBO9n|BMwTZIMN^|$gSYyYocby1oecPvZ59fsNo3_5@W%Z1R0B0mV-91gVQV{cmu+} z2hcPN6)Rr}>U#Zs0GirGO^S@hpzRj$l*@Dgl5#n~DS0KluMb-H&dcD*z`&?xswgTV zrfRAv!fwZCE-C`4y%<GB#GvbCKz;y^B7uu!&^aQ|K_yTRMG>^7M$t%&@s!tphP^C@ z|1)^??rjL}JzJ<{swQje>|H9v_vZkgP^q`Gt*n}<R^i#+U<(aKg*YcB&@iWhh6Pja zqKgTBE50RMTqL{VT!Z_B5`R`RO(kDrGp}e@P&(psaE<mdGxk-|G-LHInc&`_VF4Mx z1Wkl;fciAx`9XFDJ_a!cIR;e*T?S)@UIqqLHgz@7*;VRd>}+c0X6jI`I1+6pE+#Ib z%w}q03_9aV%^chz)MixD1MRm}w_^eI5!Kb$_!-rd*!7s$*~HmE8_dN)n~{}3=c(v3 zDzV8if;R2TGs-dBGlC}T!5IlYT)^1H!NbeR!NX(3$;lza$!W^U!NttX#U;bW#mUab z#aYF|FUY|!U?U(XAZW#;z#<^Pd~9X;0|7xXE)&b>L`O}3Rb81Zb+y=Iu>z(=vO22% znhuH4mKvO*22PIR!qy@pq5^C@?CfINTwJ_%9?oLojACM94?z7vP`7UfCl5CVCl9wN z4?CL_E4w~BD=RxIGpi;$7dI;#CwD0i8;ckVs{l6>FE<l27l#Bh6Z1w;vBAV4D)>H8 zmrcUVzd5urG`f&eLqbAIid#XKvoJceGPEhcOoC0tnTtzXQ$d4;nUjx?m6gjvTwG0` zmyv}<t%+GooEg&bTnQ^18(0s3&*uZ@ci6dnFd8(%1WIS1d~U1=K1kEd9F(lslojF2 z^%a%W)j-SG#Tms|Ax$ET6Z%$*CfhPH*d~iIt_B~{r}du!w8&CQ?LPzP@G`~&LS{mY z2jn4DID|w#q|d^`!@`0oK?5}N4?5#ZLtT#XfUxjC2RUf{^uK}iKWhVnAwvqNJ_YUJ zHU+i$z*D{8ZTEbPpiyupQBX=?17#ub=5Hf&J4PXM5hlptLdxKs>tKzL=~Bq5Kw~42 zT2avEe>rB*NtyM0+&o+yTwE-i!hRw)FRZoGoh>>Y6Y32m#U#We5+yAkT5e5myjtGS z^JjL=Da%I|5{Z(YsbZ2Uo(*Asvkq0+Jhu||5ef9-Vq#(8WD*c!I;PVtEhnQZB_1uN zD#XZXATA+hX6X6yeWS(#P4RFYSuuGP-Rq1Z-An)N{%x)!E1T~r5h1RzP&5DPxowWt zwtfa&sUhM~;#`7)Tw-h*b3tJO9*YB?!Q&4aK?61VLH%xKP{W=9R93K<g8GSejNtQQ z<(S0fm_S7g=$K&8UUxZWWAO1<a*X1jE!g5>tPLXEqN#B)(#8(*0h~#`4gcQz8z?i& zaSO2<TNp`(OY^Y{DRZkS@H5NuSvp&Cv5PYL9O-0I;*;hSvM{m{;gi*3k+gIZc4K2^ z)Q}FBG_o*e7vh#<RyOcw6m0NK;tY^?FqV#qOBLl7VP<m^cC(aZ(URp8u`#j`;*{o7 zV(L8N!zjwmW$A3mC(F#QpvJ8%#15;k!2X1+jVG`HjU@rGw<qo%Y-bFpnqg&t)iI!* zF$-Y3g34E}1dnS#&M9F7uV+;hWHc9N6gCpab6`os9|p$dk&%qcc_1g1U^%&j;kO#& zw9wFhS*%f<c+W5awGkj|SzQ@ILFrpvk5QiybovCS=?yxrfDt~^ug9pa$EvIZIq{iA zT#P|njum_?AH3Fso@m0#z{KosYRW1j#wBEBA;2!oBgUNEZ_dQa#;$3o$tA+fEFmQ= z&c$tDs^`MW%F8aqWW#8=gv~%mQ&L61a<ZrxBLi}ihcTR+l|x%bmRW?$(TSanm&v?8 znOTfSn4MQsMVp^XOoo+BSI<y^MND+ErGSd0rjP;Kl7Gi-n1tAQSy^55Oqne~#T&e6 zVqgTVxnc`pg<MX<2I`kF@iDSMdZeKFYB6IYbI<|FV&b3<thpGAIOxnbV<U0UIHMU` zh;uxn&+KdeF0J|Z@u9Nz!ws3s<P~MKwF)M?_&NFMR5C^%<JjBQlaQOBni<QIk>tuJ z)AaA}yY0CXS-O~N6Ir>%H<q%fG3)dNM|e-&%%!H%wl_`Gve=#rJT@5rzkzu_8v|$_ z12oORCd;VEtSqP~s4NJXfn(l3H_V1nRsG+;bN?CsUsyYt^~=8>9v*xD-T2GN^qo=T z)~>T)a~S?F0@sm2pghXJ&IY=ffXwQRO<j!vG>WFcBE-h<@AeC6NpkBcDd`vgZbOf- zJ;&7W`(M5<tAx;H@@t(mW+4eyU&e{QFES>Ami)lWC-Av4s-SUaP+t<<byNc_Up5A< z!-C#k0#2^reUoerYElkTYSXSvO8_0813Ac_X#wQC8s-E4!N(9VGGtAgmUX~F<L?2G zBJhcUJ3+_UfR=!P+9crptNaX-;89l4o+C87L_rP!omi+WXk=yzIzC#=*xVF!2AQHL z+XGNP1#(RXuP|GKFfXt0&jw-M1V)Ai#s=1gI48um)COVR2M>6Ke=`X4G9~<7z$*+o zf(&#o9LOO};Ipt4K_}uez{YgNASZ#Vt1+m9(zS`XnKh#ri@2B&D_n+&K?Nbl13tqY zvZ0o#fJs<Lwp~(%N$lV5r;>`If>Nvt7*z_3+L?HnM1*AerBoStHvN12ulBm6vWSor zGb0=0{aw4SF+z6P{yQooBC06)l+jg;Nky_<R!ESyy{Pctokh|jBFd828JihpH}Nv6 zO7_bL3GrUrz3ZPMsF4jiq#HUnCC{J<>Mg+h0-K)_2X(BFN@PYw*wMvEr4iCeuPg%k zPWt*zjQU_|KJtd&-$pER=CVle{rSWv!NRf;64C-k1!K&a`OISkj|wm*g0w<(>VE)r zEroeOjdfwhw~UW?1qFHk*8KzR7ItEEkThb7Gj(z@{kzBrT(*~i$KLfAOu!@kB5cZ_ zmJNd{AETH!AEO+TI3J^$x*m&}Idtv0v7!R#FeYX}23A29wg%8xgpbL;_<yBVPAqC7 zY(j?mYO+h$=&|bxOEYr`R)LZX;{(RcjAu=J8vd32>td{AZt%|X2Hj`E7_BHAm#wbo zXl$)1XJsU<CEjRL7E)*y=X3zH*1*T)j|%gyf0s1>ebNGt+c^AZU<1uXaWhCVI5IG> zn1B|mnJ9t!1dNIdf+l)QN_<SB0^m*>C|#L?x{aXbvXD8bbTk5w!w7-e%FGi4tV0#j zJ^z-miv0U#5H)kx%qRnv13o7I9Hw2F_Rqn@$0#VmR{hmJ4vPQ_j(xAxZ6ks<D1=%I z2zaJ58ZhcGi5TZ3+1n@O82^3q?}~{JDA)OzXvIuk^{IOXBdd(C2q^oB2+REYJ)`^6 zs>v~+^6vkS{}pT;texQgjkp*)8)(HlJDWbJZN>&#v&_y0I-VRv+B1S$Dj?F_3_^ky z;+dO)NO3U;3DPYt#?G41CCA01vB#80URHCL0hcBZySzwyyNs45m%%PgS$Q7QJsLb* za$RVuG-cb{Wi?UNFg2iQV-f>t<JLqNt|fzNv?dpie0R4THy4T;NPiBTuGkq&88Xnv zBf*REK-*71%d0>cA2cM%Xl#T$9tj&`16O|RVxW04&=zM{7sieibigDFsH_xW2Q|qd zO>fp^enx)}$f?Lhx=T1o@M?It%elHMD0u8U8n_oa3d!hg;?poab0v!+cqFoQ?-Fb1 zFr)&PxP+)Qp9GVmGOvb`zP(!QVll?D45YzG5lhoxZD-qV9Z`qCKuOEL4Gs>-gOEO^ znKSGxAtR8k){vnzPGLbAei>#jbI~9>2j#XZ7n>Q-@mg^Bm^0Wj6f-cW8ViEwg+NF9 zfZM0wnJ+me&_pjNeJg^N?u)a5CJaGbBRfX4J_=~<Bk15{QxkJF&^8fpFBp{Sjg3I- z*~I18K-0vm2?`3zjy4*yOw6oI9vXZSjKV@<q8#p#aw>9v4;cCRm@s-nMkiSk!$Xek zW6S{eMwWS-{(E4(WM6&X21Z6(W<{2jnbT)vFqVleu2r+wSJL2Bc4U&^lNOZ_=VDYa z^=@ElkTB9xWM*b#3Um<DV^&vG6SsBN4mPzE@ijK_fe%kgD1-(%IDl<X1D!i*>TT^h zyNA^$O-$6%ZboMM3>%lKHf0C9AW?HKW*L4NL19jBNZ2ue&(DXZEf&!HlZcp+FzC1g zJw_$)JS#h>@CA+3D1lmvp!rrYaWDigpaKteg9e(w+X_tuP4rm7p$-Z)BXLlr3mQNW z69-MinZdes%TS`)#Ml=tH83?eI5dEw{cnS*H<oBmM<k9Y@Nw+SHppqx4@bfcBO-;u zlQX!S1l{om+JkMvU;`T8W;6lSsEVKt4kW*^^RYk@5tA|KyZ}%|4{A?}8JU@j85@}~ zLBo?#giRm3Mv{#kw2~XtK!J?=LN4KBgY=5Q4G2&V$-&_-INCW`u|>L`C1gk%6z2`# zC}&ig4T)<rM^Idwc~!Qf#Wi>U-`bVQA>`OT4`{;WV8M}Wl|f_bEQ!pv;Gq5M0!gZJ z?D&%^G+~3<WQcx-Jm`))&?;_aMRPOg_C0ns5qU;NF(Z3MkccAc9!FNt!XvJ|!oty@ zv-hV(3kgLtW(k=IMGFb-W&9?k#>jB)AIjYb;Juc6A)EdFO#|tQ{x?lX2*lWne;*{+ zZ44%$%acI+2}R^VhmL?&nj0&EohW8x&S;LjYmb#x2xK<IG5@&03thfJoywRM&B%-H zv{W;&>!FST9a{x;C}URiKeSD5Xko@+q7K>T$OsB8P+$o{mN}XVf-g5faTkjahR@-a zG4i3iD$PuYF$)y1|E56$7TGU<3Asz35w!ghzQ7W)8B;`@5$r5R<a0z=S+M#XWGQ17 zrn^!g0Sk&{HK~8-X@KEBn!}*^6VjjMX1u{9fwp&mkC7d8upnr<%}iVkbl0UlBb%DK z2)l_I8~AKKP-j<(k5O5TkBOa+k=;yPjonO5-5A^tW@nRQ6cqz4nE*+#iHVExG4X@6 ztEsE8gD^<79iyq4xgC?Tn7JLJxtScJv6z{<7^u0y&L*zL$EdEysICMu(o9{CksaIu z6ayVd$0o+E$EYp_8e0Ud5H<rZV_}CFB5p1wuEx&BF2=6Mq^<;Fh|4jVi?M?SGC|td z*~HA1*hJXH*~HA*AQNezH7{c9N^HvDF&1+(Q1Q#CZY0OV&ITHeVN?bkw!#QHZv}L^ zCg>UfF>x_-h#aVsD`swH%BF6j$7E(~WCj}aR0o9;o2U|KBGZl;<QmYBF-Qh<bt_nu zQ4D;Skg}MWxR|+#nz<NgMYkN2nK`&(uwzuyXEZTY*JA_)kGYw;k-3r{qp}%DtC%^2 zG6PMI*fW|bg9Oaf)XhM&8nYRwORlDF28sk`Hf44`W^vFU9B4q6UCm5gjgJKsA9{?Y zAisdhU~v&PaS`-gAj~dI{A^6Dtc+{|d}>O9OybPU63k3I+>C6Td`w(iY>Z6&OpMIT ztZW?YjLdAzY)s7D%=`jeY@E#Otc?63%p4}{tc>i8yfQ4zQp~LE>`aVotSrpj!Yu5Z z;%uxcl8S6>>^#g&%$$ro?99sith_9oT*9n;%$z)&tjs+899)co0vwE-tQ;K7GF-ya z?9yzkjNDwjOnhuiyj+aTY^<yt%<KwWEE0mOEG&%7EPTv*25fAs0!&IAtbA<j;v!7! zOf39-90F{UBH3A4n3%aZ*%-BjnV5MQ1sIvx+1XhcnV1E6c@^21n1y&)Sa>*?#2Fcx z8JQ)S8JSqvn56hYtr8{<PBunnE<O<^HUSP!F*a5<CMI4U5oT6t4lW)+R(=_F6=5b; zZgwVCDONT{W)TiPc_CJ2CMFh6CN@S!5hhkKR%Tu%MrI~PPBtcP9$|Jy(6qS{JFhTk zLY{|(3FLT2W@biqZ8m;(Rwh;nW=U3N4rX>%E+%dcb`C}m;AiLJV&oHK5oKd%VdP+E z<YZ@MW#!~yXJeITW@ln%5n~c$W)|Y*5@6=xWEN!N7ZcojZX&ZVvk)62JEs6M6Bi3N z8#^efm>5O*S$R0Q*;ttv+4)$R`8oMmc$t{ln3#l_SeV&`rI}a+1Q;<k`TRS|D9Fgg z!^qCT#>OGcB*w_Z$|}Yvz{|wO&cwpV%qhXl$_+Znm6eN&iII_&k%@_sm5qgwMSzWk zlY@zslZA~_n3;`_m0ggRLx6=tl#Pjnm6?f&Rg7Pfm4lO)my?x|kDr-M92BwqJS_aI z60B^DT%ZjKLhMW|oGdJi;ym1pl8pQue2hH&EKIEIoa`(tj9e^?tSn3{A}p+uES$`Y zEKKYiJS<GiyiEL3j7&_NjC|~@0-P+&Y-~Ji%zPY-i~)V@jEn+oY#iK-GJ-7J>`Z*j ztkR4M>MV>ry3EWP9E?odoNTPhY-}=|OzeChJxn56k}RyEEX*t{jO?NUVoYq(B3v9Q zZ0x*jTue-Y%q*;oOiC=m9E`j|+{|o3Y%HuC5=_jp{ECd69Gq<ILM$8-%$!UdjGRo2 z%(5IT0=zuzjEus}{2a{8Oe`E)0$hrM0!;kOjG!|>8JU=wIoY^*83kFTg_v2Gnb?__ zS^2m$SeTgvx!E~5IXRexggF^mIaq`RIN4ZOxtRr+c(^z?*xA{bI0RT&IT*QFn0UE4 z+1QyF8JW1)SpPJs%w%R}VrOLM0lAignGLi^gqfL9kd={>m5Gg2gqc;6jg6U&n~9T| zMSz)wm6^+kS6)z(UyOxange`uwdj9QwmMeO+5}P1Zbw)vpA*y&1FzIIXOv@P1T9ig zR$>rfFb3V_Ai~ZnDh^)n1e#G)Q!`;&^*0Q(&ofI+jcKL&bf!Dv`mcK-8)~fTbp!<d z-9E@VrJ9pp5Zn+`V|?;AOjR{U#mrQVX=T!M#vXO&w&jq4B}F-ICGM3EvYDgZMZnk1 zGl1qtSwSN??BMe`v>B`!7*rKa6+tWUz!)@q0P1*yTG5I|Vv^wQIH>UmUKoMFXJG&} z{r@$vF#KU)Y5=Xs18qSke1anQn0v;ChCdFlp)V;lHO6PSI1CJopfk-`dsrF3Ydyu- z8DU4oshJ8gg6~=~VyzaG|0k>tIw9^qgYZ9L&?QQ&3|cHVHD&(^|CItC4#yxY#rTZz zt*j>KaCh)svEcKLn89cK>x1w6P(+OHfF?0PldQIk%A$(kbNoS}0P1GIrYM;jm>B*s zut4u70ZnCtE*DSu&%na)lOfKDF~LFuG>pfX;1tKo(D0Yxp8{k^WdW!qx1gbc@xi|a z#s;T2$f4SC;5`7)Ie&N1*(RX5Mo~zdfHu&8cGs}OdOe^41x`j#*HInTuLkYC;ba6& zQG)u5qR=p6W&SspF?oWlraEXJEojba!oRuy=1u?w5NK9PLtSnHWAeYb6NIIBcr-wB zRA4oX$&AThHK3if;8V1iA7j@ir;erzbchy67szC=-Cz}<%YImeK|^m0{~5sNgbOkl zGFUP=G6XY3gV))DhJ*w_i<FFw%-KXmV2Kay7HH7ukcpWQ>^5jd&;YC&Xw463#TRH+ zhzY8KDR5DGTTnp_n|Fn^vlA-|>b22aP62HlZ2?YP&}*arK+d*f4g)O`eaL9XtXL4# zmcA&E)ydhq!kew80la{ase!dR(2p@uOIuu3w)-z1jw_~Fjjl`s4MxdBZ<_u)-!HJ5 zwX|DSRa{$(F$*jS>bEd62>hSGR>1m!L6O0kArmx10zMywU5*9ZZPQ~0EjI=q^kL6v z#t7=qfOdYeK@UtZhb^&T7B^!M0dI<flr!q!F)20B0b}6f0!2mGLH%KQM%E277i2WF z<d_w>h1o4M_$8%y<e3#^&Pi)($V`^`>nL+hMnhe8vW(0HX-#xh%=Mv@gDWb7&jm+B zgjH39TnItqGdgI<T#!*<mgkX@<kzrZ7v@%Ame<mdIWH|WNrvf#hRk^x=}9u`8ZsB8 z<xv&=efS}GQgG<`;EL+7h=`C2A*fu?8YTt?@c1|A#2WDUIs@pC6E#y424f=@kl#Q9 zgmR4R4G-u4KCtuO&%P2SMx8737#XeI60)XgHm+c7nE#NGeP_#UGa3FXj5-_o?51UT z+sj>KU}6aT-@vBN+Q1+VIu$@w44lKvL9-*!ZRnsBCdkUD$f#~As4OVT`rX1c>vuzz zs|DkC@H!tR@c6yMzc>FrFrE1KL8Kufvc5i&S(33IQbzwPbom#|xK>`3vHxG8Dk$FB z|9|`6z|PDHDv<pcVi>X*Dj3=rdJt#kvoeCm7(pXvpdm)k_C82fHwQKRL32f*p+!(M zgWCLRX6B&L4sZ)q478^n9O<9|Ml<kH*6g6}gs~B`9V2L3nVk=O&JO6r5_?8<Q0tbD zkzJmVQJqng9n`>QlxJi#2ieNJ4BQ`Q%wha3!^|qzz$+lg_t!6vgN2WUJt??lVn<jM zH+xc0%cNizPTs02UQU<bNi9K1?5vvFp`8<3f|J-;_*gjdm^SeV3h*|_u`<j2j?ps; zj7jlQhfsQfMtbUADKQX=kuO1!&tHm}kClmq@p=N&gNDBh3pklrS@>9_m=hZQ{@BRG z%>)^Lkos37qM|I|z|O(g?8L%oXyDsx8sZmH?bBx(BG1d|>B-3}A7a|)W1XY!A7awy zYhcL8;>6g@!R{cStRm8-)naU|0wVre8@FhwfC;7rR@^Eg9Qsns0xV3-j4u_K931`y z7A9~ov9JiRNc}tDz&N9enFW0I?0?8PdGZWO45|#qpqm*$!|ITNS`EH(405?4XpF_o zn4M9PlTlF^v_%1wdIdp?%HSL}aQP3K75e)CbfW?z=t>39j(r!KhJRNXwf}<2BaAlx zz`OgI7&Mq~K$t8I78;Ok`HTwCyBip1fNq=ow?pIVzpG5E|6TpJgwcj^!9UPNlMRdv z8VP@Xurxq;pmA*mmj5lRHLNwDIS^IIea4W1N65w_&?0xxB6v{|anMmD;9E`Ld~gW` zKFI=<_!z}lYvz@<r~LU|cxV2+Vy0LwTLE6Kzl;3SvL^X3bJzztgxLSxEu|!@CdoL9 z%T9oY>tC9EQBZ^}lWWTK(s?P&9L00y-z)sPh>J(SmWwIgcUo4a&!6x1Ar3+IOs*1Y zvI^4w(ztj8?6??b*+v8v+5g?01UWwyJP*mt0NUs53b`W#ye<xW{|Y=#lm$VjT!8CE z&`LGX9)HlejMj`sX6XCY#6hjJ24;r849pD;B3%ETa~beMX5|_hEHs!MG%Wr#AkIw& z-C_>C+Y@wk2BU<G2B;y#+`wnZ#VE-o0t#!;F$}*MKrw2e!NkDm0Nz~*+MX-?2RtFj z3cmI8-wT-paGWqe+W??*7~mcNwLL&**&$C|vm~HSJ%h&XK@}`31N44kj1$z+&p1Zs zgKp(RI*1K?RUzh?dj}w!^1zKYY)sGq=KlliptB4>_h-s8s56*@?%z{^*33ds8novC zv_=QK7EIAd3^oggE{^U>M#$VDXm3Tq0@e@6vu(d1QmBH+3NC<8=VhD#rv5Gf#R4yg zV1A4)!iYGXngQH?<_G0_*6$2*3^oit3^5Ej3^fc4tl(S&9(*-5VOO_fGB;IXQwCoI z#V*GvEUE}vkOMl;N?D0r9n?G#0}tjJo1%M?QB={?*u>11QJIZh-P~9ZT^=J4YI6g# zoGcA3WwkS<I1E*U1snyk7=7c7ZJ7Q|W7BtX(wCLgQx27gxAIJJ336quXMF_;2O&Pt zImEvj{%y==Wa7|r@5o|(gDeAK3xiK94he{HiqMsnap17va@G`LWHOx*QOx7T<S<`F z$T-AATSr_{+RED4GT7ZHSkGM2=HEe3Sb}a-6=p6=PS#wc!6T^ZQ~xjLUoBh$EnLB8 zO@ZfA_!&$YQW+Q+LF4zJQWCU>%*4!C6?_euxtXF7WEKE)nFZ+9X*JL+l&A<qP@Gv2 z)B*sn76R3jU<I~}CZKk+sX1gN5a`AS&;hijChBTz;LW~2!K(oo56g%fw6!v_7?nEZ zb8+*r@`UginMPC<xi~vHU3JZ{QhmcXn_W}fK-D9_GoZRCu*Z_01JrL!<Co)SRo2zE zv-WiG_SMx7RAOoXFZu)%4$8WT(OVnpg?Uue0;+9<q?y^6rdmW>TSa&}JKKrq$w>TX zP&ds_H8)h&GY}FL*AU?0;N#6PkW*9DVN&u^<FHg!5fzh`vaxju@stJ6_d>=VlR>ji z!fN`ApmG;9`fp}#WX>)w$_5D#F;Q`0@Ti!v5y-b747$t)93uRT>gLAcV&>pYHQ>Mk ztt%4)oxuwl+X96gXgCqvrBGLcjH82=6^MW@fHF|!VCI#!F=<f>3o4PbkYi-Baj+5Q zWn|=I(^a;Oh|CDL&^8cM5fo+TXJcU%R?<%4V+uLzQz690qO0!7#?Q>b$0o`zrRL?G zojYlHX}OK9n1G-pYnTup;u>;RMJA>QMizEv7DgsM2To2&zA|2Qwx|DI)c9E|>dOcz zs>oPadCu`qnjB{BEUL`N#2m)O%*&+4%Pzsg$j!zt#je3E{IC6Ru8*Fhm8F8Bp1!wF zdB9vo-#wBlznZ}D4I&sAK<i-`!0R|b>#y{|CjrDW<TKPW^fSx{oxK9ueu412AZQ;3 z{M1GxGxV^bHXq$S)b)&zd%i)3uRso6ft`m3T4l_{fXw@c!b6oq<>6C_Y$B+;3to@F z>fjWII2Vwy54=tqMEpZAnc>F{3L%LiF|jK^GK|p=`G!tV^(Os)Hu&6W(5>O1J%`$$ zQ!+Ri)frVp*da%Ffp@jaGpdU7GwL(iGcw|!S(Y)XX8*g*q$Tw0mynszF(DyVHW2;m zbW)O>TvC!8W6hBxHa16&*f8INiu|1iWiams>%D3Q(kpaK$PA=c=-5QCKDnfSf57@| zj{J>-iZIDR8Q`;i9KiQ~g4+KA3=#~!NVDvq^OQlSO~SXf2#WBrs40W0OjAWLsjS2X z>G%nnsM#@t4pjmlF#&4aFg1Xe#Q!_P*f5Wm^DrkXWQjbZ4~H<HB9A&Vs8b5+$vQBr z^C<EObEru%GO}<A^BxnnmtLSI#lj$^1~$NlsezG!^Drmx-*w>4)GP=7Fz}1>aWXS9 zg4RobFe4)~C!aXKlp3Q0hnbkZv=Z+zVJXlB)F^EjF9rtC42`mqI%rx1bkQzon-1sz zOFm}M9$LsG1ZWE&bg8Pc66kt5P-X*da}Z}{69=7nAf%$e!Umd&yO^JCEzGGal4V=D zFQfcXU*@*@Xzc)BISwWsCN@Fiiz}zE?98_H;^R;iH#4#elS~$5Irk5`B#b!_Jfou! z>#np>-Lmt;w4xJrRtdFj&KdI*cof(T*u+I_qo&_n(!A<jxUF(&q`Z++QK+Zkzc{z- zXvUhC;5A^#V>CYCx(YHt1M{5_<Z>;j=Rl%ncs&Oi^8k&uLH6MO)eaTs)Dg|J+4|J2 zdRtb;*4ij-e_viv7A{scL8J4_r!H^LvH^Kc%+$~}R3b@2a64#SHh8asL;1?82&MJv z7L4kTLgrR_S|(JtI;G7~VCCY|5fm4;i<owGQR9j?;WkR8;qr!#g~1+%|B_N>K^888 zmUe;Gn1S2U;tZ+`!3?0XkO4FXqol_K+M91|BreC!3~KFwmMxlr#%b&s6_r4X8$fjs zXqp~0X#!fJ16qM=YNE$%Vh3vYs52UyDw`^cDvKJ68Y70+APrh(+tNTye-9m_z+i0= zZYC`*6<$eBPA?~G(*R`$8`D7LtcZW#LuaHn#)*mYYOD{^w^X(9^HsB{%yQDOveJ;( z(UI3RVk~QDaA;_7U~E8c9W&bbcnYhz=;*m9^D{BZv&-_!iODkw+W3d&nAnCz6`XT$ zXbF$4W|o!IG2$_njWE`B)sf?ox6N=g3^dW!)zMVb^VGBPH~!}UGJ63NT4S4qLE(P` zn;#nkg8_ppLjpq%0|V%Q4A3rB7Vs`b&;W&*Dk!kbA#?Ab89`%3c4g3oQhdznpouX^ zY5|{!CC4mm1X^692f7bH36y~3m>7*kK}|_zQ)5$Oruz=jQ4R(k|6a{+d1|Q|>DA0A zs30$@CpP7@hrRFR0>(vM&0ao+u5N~t)B>bTmF%+|v;rmdMYL@r&8)Jc&H4D%MJxrJ znFSO~GxCGY+zM-%v#(ywymBRz>4}P~b3lV%RB%;saDt6{V3%Hykd}j{iXqFvDM7Q$ zoE#$Td!jsw-K`z$6s0ZGtlDaW)D^8$_0rRWO#V!lGKsU3G*HnO*W)o@V&YS=h_!ah zww7hi$+>+y=O(C+1|GX%VBlepVbB5hmK8zQqq2*efi^U$i10Bf=`oquF&W7*G72iG zfl4`LK_f9yMH4ghT9285v7w=8imw(gXzW$Xw{BXUuNH)2(#o3lyJ1>Z)-;xeX|L3z zeu773*g;o4H6$<|=nPO5`S;*i&x9I3znTdU>Yo-914zR^Fv;wIxR*!`oX;5@SQwZa z7<eHk7lKdT0H<0O2H}4Wpi@B|gw>>&8>E<{Oh5v{j0c2GVCP9NGO#c(gU)heV1Tq` zO&}W$KnI<GZgT=F7G^xa2wqPD;tBtA0QEB%85|fIm_R2HfG(O8L_TaEH2Q(Ch{XZf z9Pow2ptbW2Ob#qaZUzqy8;LVAIe>J626TiO4}iA%{DV4P4QemA9S&{}u`%$1&dfJf z1g{}g6;uSBO^qHC3z!oAHVCuk{%v4N;1xz`6R<S=Ucf7?z>@I0L73$%Vqs|<xD9)N z1=KI(1)UEL+2^Fr2pMM+LJKFbdqD&^jMdbnkiE-z3n|F4gdxNK11uox2*w?XL6Gog zU<TbQLPXp#qsJY1O$B)0vJ~jl6GUMrCe9)*$7Ia}ULT-p20EgQft`;<n@I_@{S>q| z7CNuM&JgGH%fTs5$C5Ft-O|0xn32)A%-wPoqlcw-lIOpU7%oR`TQhM+MsYJ+ZAY%? zf2)-2@`8O?4>-m%Tm5+knqOd+GF1DPtfg;gsIOIhPn|K$e}eJ9-wy2hvMNGCDzf_Q z4sRv2CfoaE#DT^O{%>GoV9j9w?J)$cDF)qQECxPu33OP87-)<Nd{7)ao2a0okbpj; zqNp<H_Bt`f*nis?;~CRKn1WK$m!+`u|JxoIW*;ib{ck%HBO{|HlZcjky8Y@4%>929 zneQ_ic_t-!dL<_Qx%>A7lTc>4tFfH%-|LM1j2{dPCMXzK$UlaLJ#_5D1l(=_ZTnVH zS2F`0l`19<ZapxWfER_agBD?e#tuvcO+Zs2W}q{X#Ml_B&i#8bXU)G;x$KM_om~6^ z?4DQ3Gxl}`26pYuNZR7oi8Slcl+7qSc@Cq@IcAxEC;mM-S2eMPOOm6DlZh)nBd}}l zg}q&Y?oM6cxeLYvpgEDo)cmS*42%pK|3%qev)%xmZKVhqbq9}vfyPXg)aBSf2OhA3 zN6t)5>{vh}vvREBpfhdFjKuZWOij$~SV1RUfyMz?KpieUR&_DZ)jpu!9HSW9Yt?Mf zp|Ag@s%igcsN>V%V-jT%VBuhvVV35W5|ZN8kolJ(!^tVeEypaU#w8%gCCDbi#K*@N zgH0*p3@l3P7#Xxd_Y-HUnyTigsxpFR549N?>iGDWMA!tm1O>R%<e25S#W*=-K%<Gg zQbJPP(#$f<94rDXqD*`mAiFS?{>zZjz*JiIpFvyo-&A!_OBZq`Er<m=*-jHY`{Ru` zl>*-26*kjjWMgLrZG4hrG&46-gUzJERKQjZG75mF!_?ITVYkaOg4QQ{XEAbvuYG3x zp2{X|q{p6W6DJ@NFsn;MK!+&_Ec5p?m|}ve>+Tg+{?(=|+zUE2i!q1M=R+SOSb;Ya z^or>DjCE4Fe9}_?npk~pe7iIPd~J&Ovb;gp2b~5}rC{>kfq%d6$;#ekWZMQZr0>JO zEueG_Di;{Q<$@Tf{$o&J0WI_a9evMk208U!#Y{jAbjmsO&@WH}0`=4{Pz#vF=U>LZ zxflDJ!lfnjW>jliy4s#$Oul%LF%ao2FjjsEjKjb_FwS9o!8nJdq5Dl|!D%m}gy=x~ z95ptM?l+7=Z;m4l2on{=az5BPM)lRu^T8lzGKer(fp)7Qd;#}^iJFQ6ix{5M8W{1P z(;zCs#vJ+Y+`n&gvl0@Om1J~G{k&%~a?PFlcOK|`hCKvMabUF~>hy*_mWGT?X+bkA zEJ8$t<+=DWHl5k@qVo-bBOQMKAbgrbb;U&n#{Yl*GcdQaHh^Z67{%B@v;XRPjON0i zo%iZ$uuTJ^BJ9knX2wR$r9#|)pYY1Ea0v>s9Q~KY!Xd;f#CnoNLV(djSc-KuV-E+5 zF!L!9iQm<dOsp~j%o?eT-24*EmV82zf*f4`43n6^Z542TvH`ry3Te#Pnh~@C1T+T$ zsa!$pK5>YFS~jMz?ua5pi#DUEB4{+u*hq|>!9wF7cxOt&KL+rqHCCRF2@^z?5qw&3 z0u$(jKn)AzEs+Nfz)S+ELF1YD9I(&;i9^&J@G&`H0a-T;x(oXNgD`_XLnLJ14R~KU zXk&mFXcerP5o9D5)U^clLqH`fXl@L&T^=;Y1)53&Z82j6UD66^kDHq@fNBlUv>BtQ zni4y>#$#@nabbp<iJD)EpQ0VJqA)Kvk70zBONBPOC=0is5I2h`yLNd;IhZRX2<BF} zSVb7}aPtZ?>N5Oi4Bgkm$opWaBI92MEgda26E&tIfA?g}n2`aR^f&VJGh%Y#R^t`s z($n*@;Zk7}6l7E3vhhM@>*;X`^RhB+XB6xRnEbeliRn@j6H}6uni{Ar4H|=H1Klbq z!640G&cMK`2sx=h5n}*K5x!sC7WMKKG0+SLGXpbt9_U{K=oZMo;5iAV1H8hF42;_U zt}-z|t_258NLgsGIA~ai@`LJv2GDc|;{rwnuzC>jH<wZSU+7<OidbNw0h-FN(D=85 zm;YY|csc{z#(>-{C%~Y=5CiHZv4Nrvbj7X-xEm=B-Tff~+P^6#ZVc)tnVXr5fR-+T z26dsBO&NR_9Y`-|PY4);*4%?Sr$%y2Ob>*mgmX+lb1O#4-V0pw+q>HHU0t{|xf*z% z@HTL1a=A35>ss5e=u1lK^4jZ(1jGf1=-Kn?N=oXp*jVePM^4<nZ~MeZX7E6@o{_MW zu!4_?M~%O(u78b3sz0|5_soeCXL9Rs`=`z>H1sJpk}*@2mR2>96_?O6(lIg7G18L| zmo)*2naLOx`xq9^PF`K;=vcTK)DVT9aVrJhs{@)k1D%crZ6%n4Msmf#=fDYohOoff zbrhk)-;jNI;N#hOe=QK^<>C2vkdu?q0d#~VYXYw@=p0HuUg2L0Kt5+p5aI)!amko) zfLHhcuP_&*11B#ZNVPEU0bwRZ*rAl*`78L*lOXqj`)CaelHgOkLATVv7u<rkGl(;S zRwtW*@|dC$_PKXf1|hx&V1pm<3Ue|haLRBp#&a>jX5@RyKr`}l7@4iz<Flq|HZ5mL z;1gm@0J$1;s3{-kzXhC}jPX2I!1MG?cg*E@uQ2MYn_xFB%g0V0G*1s&ztq4AccVIJ z4?XA#88K@{_*!LS=;;$U-3YQqhV$P-E+og|apM9$kWV=OE#%?h6Z!`ZW5xvGe{XR( z61GN|735BKh6siP#My_CumevAnX}0<f(K3@2OyZ5n2RZxi^(#AhMPex1CX#fxHysp zdl1T3Q#S#vQ<Y<ZFMfechqI_ns{AvpauT<yRfdb0m0Q7r0(VQv7Dl%g$*gG#76BFt zJ{dk>+SQtok%f!HCBsUU``-cRQkPqxUZGlTWmi|FOWm~MXnqry(;_Lh0R;sCwkaZ~ z?c_5u<n0`$Wkt$rfwo3z$wq=s=s@sX%9Xer<xRAN`J;=c)iK|IE_#9NasCgvlb#(k z#tCb`nTxQo3yQEPsMs><F@mZjV<U0!)R+jUlok{bQ!q0X1eMXC@&UY)1AK}dyC_5k zG^Ao?1mD`>Zu#%$zrKGzm)ud4V&f9DQ3ma6Q<UGs$gxLW5yV!u5#(Z%QoFMRBxLDc zu%Lh$vM|HJE=lxX>HLQe=eLO5m;hSF!6c{Ro#id`FAqGzIZ4Pn%UeZ`33LzHgc~9) zV8L$DB)fou0&rOjISYrG0o0oX?FLmeRb&NShX?i(sQYXT?bgXMf@Yb)#}SEvMlSv_ z{96D%J(6X?ABG0VGBGBGmKX<zm==}>(BX6~G0YAzEx#F98NjOp7CiWKAf|<tp@o47 zbgm<GFP$;kPC8H}4;~^`R8ljwV=*<sxqFV;fyfPWL~W1*j~%c(utM7QO5ip<*t3j^ zASWrQF$l0}!zMH#fn&thP!QnY5b*N@JHxcB-wavP*c~3ucW8+LovNuO#nLdJ*<eAz zzlOgDvZhUA;rw^#p#tcfO{NE+Tfo5WY4Dlrx(rT`)&M*FVgyK%0ykj5EdvuXR5m0g zK&u*&T02Y)?v_5FTQ)4+A!!3nGBbe1AMgtAX#rhq!Fu3tgKdh)pRb@yz|1X@V#@@c z1OJx*s^A&HYx|JdKf!l%Ffj=8GAp#~Q3KD7L-s%kGe|K&&e{!TU|@u7$%l4n!KWaK zvkNM!sWYlELTh+IMo=5g2y|^Jc#V=ND}oK4LPwuDW!(c>3j$r8(4dhZ)52K6#q;kt z4`VWDS;AiiMg}21*zq=eLQLQ}(Z8VSF(gqTK9&}l1dZPfpuEopUa8>nuS1rH(URwv z5DNonZNo1HX7J4cV4VxVlb>MXKLeNo6QCXE@N@Fz8PMn3)-&v9IL~mO;XT8DMt(+l zMqNf*2Jq?yq=TcyOyTz_f$mW<5(AyJk1UUVpEfAP;gd&KkItvJenR%4`xkUFIb`2H zsJ)IDZGt2d#s=^~;AjM>wFhdq@jCE=&Upn<U=_>^U<yq9CxT52^`K0G&26Y|W^DM~ z0P-7X9Svx`G2)i_2QbaTpW!UH2a&}7BBb%NsHN~9Hfs<r`!yMKxGCtkbzas4q~+6~ zk!L)4W;?@ehOhL`CFG=1aDx}rpjAYqS4l=tGZWP0QHEak23wJ3%V-R}^91=EePhs~ zInX4hs32(5Fx68xv8nGrs3+{8Vey{<mI}d{2FX1TCL(PzI#_5h9?-A=tq!MB8YPgT z{!C_RPyiL!3cnk`>5BOPD7y&rCO{h8;64tRt&7M$j9?xA9;h*}GJxi%A#GUD{Im^2 zGU^O98|bK5SaVJo9DQH{9Gf5lw0961hqjEMMme~8hO|w<B;=rPK@&5`{55C}6nx+} zc-ZaVX~u?md>n__nOGUX0;h%e9)Qoz2Uk&WCL@EI)B)I>Hn<j+5<VvEAO)JrZje#~ zYxM?AWizoK=HdFg7Cc7BtZ;x&2-O^r=}dZ{=^s!N4}{fB)EE~?IS3yUmIB3^8f4uk zq`e0^<=BwH9()!6*w<hJ<ZERRf#G$cT7}@=6BaN2Z2;{t_}2h#{jePPeP98iwWy#F z)4~W^fq}(0@9;JvA#?PgJ|9a1c&37lmyunW(bz~#giV{-)L2lNU0EG8>u9QOY7Uyc zH8nRDHx^VjwPpe<VPrHGXJru=V{c&m_we6>2M+&kyMmfO2@4z?792=WP-r-Cpg}<) z;Q)vaZWy^TsycvfyI_@KWO7h&P;mISfRm3?fpNhDg#!v45)Bd@3I`M(FfLHw1oZ?R z6s(k)L3fBcFhJJmurWx0+IgVsQjI|?<v>STm<p<!E1D~cvx5)%_BLf{_}$RZF#n;0 z0^<V(<^u{2pgk%78BD$ZIUG1};Ng5m&_wP5g+C8K{axrh1E~GQpbGEnA}(kJ#Uf~2 z31lN^l_+}c3fec^Af@&Xa_1uWT1HTYZvgEWMxKQ}zzj~8{|<nY5qJ(uO$v1NhLoBb z^DeaYo1k_rWQ`ZtU63IigySHo%NXV)@SU;P-1QH1n!A+RKhSCnDMkmd<3QG<9()Ae z$P5xzlS0?PWQFQ5CI(#wU*^v&#tb41nxGynKlBE3(3~dtK0r=J7SL3P5@<3HNsy_S z%ZN*g>z^JM7vm)^DJ~-}u7Bl>os3;rh1Y@=fE6-c;({nC|5pythan8^U-B~eGGB(d zivcuvqNLBLW@63>xi`>AoRI~aAX6~NO%Urk|CK}RV!XuIg;kiz7vcqwR~S1PK{r`~ zJfa8n8M-hi-TE^0vKX@jql6de;s~(g!1quHLBb1Fkj0pguTcWyErt)cxc=!emSGhJ zhnFwIS{7rLVu-sS;RT8^&|R3Ivs;bi8NoNOfa4KKki{4hFrbJ;_b!%DU|I_aFmRlK zf~uUclZ(p;<S>v4Xu_cJYh4CkrebhBGBAj+b3$&N1iJ!~nwW~g2?r8U2s4;LSN>s1 zBH;3km%*1Q7;YwPWf&r5;7A0xVjFCxFC#CDF*7J$8NfSkl+=lfK*n5Lal**p%c#p@ z%nXVXkl&#>i-^Ey*2Nmi;CKejwL$JA1MO=A9jJkHnh|6!UqlYnk^^@*P3#!K2kt;? zVRi;#-k;zm0-FPPZvXEC1qIL`h?JUw!e8)FQf#2}YZaKm&FnuQrOdvdWqPWCw!ENv zfX^mCEzXGrbkZmTc)c5B><+Rn9lTzT5!3;PbX34As6az_pxt(+P`84bfZ$%PEu%53 zk%=~=l87<m0?_<6*i@(A3xs)Dz}Ejhz$?s}uprI}biCC9<^lnM1p)$$3~^3O;8lvC zgIk#s5Ch!8e}ch-)d>j-3Lv+E?@9xoW6RDU&Y+HH=YVPjWsFcmI2*JYLru+uahWhL zI0Se>q0xYR7GD~8VC?~9MEMWMvCL;dp#%>Z@E$~F(2-OiyFtBT2H0FDy6sHhAh2dc zZ4n!ZF<#II9UsN;UzqnF186XniGf%604N9+FdF!n`~x2m51NIE2PxD4zyyjcUT|<Q z`zk0X`~fRq0g<3`3%2)wn?am`fkA<fQ9zDS!Hy9!IjNw+BmkO+WS;Wx#;-|}AUE1F z7NMQ@z_I}8a@@V(C3nyTc<0VR(k8S{2km)dK&rp&m_X-lgAVEiZO;H5i~-_<hHJoy zRL}&w0%nGSfPW1E1)wQ@@O~_ZtZ5b+4+0998*oT4Ie^p`1TY-{Ee!xykJGXgG%O&> zv514x3FM4kP@5R$ZayZY!38s0NOuOj-Uif5VHFg?uYj2W!^H&wj13@n<B(uE@Yey| z#UKp@0XW1#?&e@{`0oH7FXUtp1fL!U%750-{TQGjFwkyFP@5cy2Cw^51C5-)_GF;b z5EY=|O(QWTK5tVKAMY$CTX2i}Z#S4?`Rik13YsDRV-wdB7uUk_0WAFYH0V}~1x!sX zF`(NeV_FVpd4m-Gdk$`$GeIWO|Mr0l^!8@{2+|t&cQHf~vTfsE5kx2W&K*Yhx<zjA znh_RQDh00>MNWRu^`A(I5v-S;ffamDE~5xD=-3HJh?tt0n&^Sfk4IjAB`RpFAS}kt zP|wWI!_FhXFUZQOY?o9xb9NHwa@>Cm!op183v`)IE;40Yu<YMsb|ooJK@omVWi}V{ z)CHxXX7W6sP0nCtAOduf?7!SL$XGHP=)NRSzB6Qq0IfLVV^q>(Gy&h{CxT#$gO=lf zZnc8!!;)jRW;C*678YUWV^LPpV*xET1<#Bbfyd23!|LGaGo}Vf+Ynnx5WzGPM1q++ zyUH|Yxvz1bp<UMHkTj_+Xhl%lq$Gz2wrcH@4^E5mYgpdZk)>$YA#I$qBzy9rDJ_{x zvW=xX7&8JwTwFp>iJFQPqTJk~D=H$Iy><EcbiJDyInLMk7T73rvI%S2r8rh!csoBR zq9n~fL|GxoFRdgzZ~-WNBJ!0u=;Tajxd%E=5_D!5=%6R?-UCRTg(!W&vt?`y78-xS z6U~sxXwc=f7#B4?U;<BDgO!0c*;z2X0F5!X#2_w90@nfTrL3U)GSwMeLHlq)B|kf8 z@&!~WnKPQHf=^b2Ov*tW#%RaLDgwXZ30il8-6ad^Nr{WGeKq}kKqFe}-z_0i76*+O zNk%oH-`&h0M}wUNax^1@&IDFVy?-~gCprH<02<;3UofQ*({jKpN{pW=R#{vA-&6?! zWgU6OY_Toi$pDB~Rx?_gx-Pb}`Zv|o72%nf1%`UydW{vHFGLt*7*rTcKqrecf~QbH z`$a*^sf<7~t#XX8tPMN-kU>C?Nr8_^K#obljuCz}u8IN+OP=bff2UMAB%~zuIV9Ux zv`car7)ku&0_STcP*(TOV)Ra1{r2CVx2x0AR=;IrdAs@<TJ^wqwsOjpN=bbV4hgA% z<m3P;2?2e^^Wf|aHplz#Kae(%cBnB-4#>F}REc2sn;7`GLq;Xg^gn3D1t{x~;5QBl zBLk?f^d+SvI6!{=XAX7~(S9?Q)E9txi-SX7vU184CQfqw#?2tiAkCl+n&oGJOrwC? zOT>GrK~3r}xcAA_AoUM28bY*BAd`ZOTS;;}xIM$(z{0?w%mAuooEaEEeOPS>0qVYD z9U+0O=YkC=sR%GAE2%59L5|5#G-7rT;yWP3*T5$P+FgQRGC6=_hY^<Y{$06pVA7pQ z2d@0P!l-kFx#0@q0SrALlhVPSg0Aqo@-O1wm4*gJ9mW-mIt-u|D!8r6(!c;Ji<KGl z89;R<Xgz#3Lpeh;cz4iZhRqBNjG`jij7qkQCf1Bb=16RHBsQa{h_WI`jj^JUDv~&w z8n`*Q#F6bnX0sxh$tnnUk15Da!l1RBNNa&WjS|KNfdm181c3&D2Lb{Q1fV<?27x~d z1O%891pY!rpcFzmSQm^7qyI5LOk+gQ4+I1XK<58!U}x|){Ruu}6m-%kV*%KN4@l%+ zWDbP=4?;mmC<jV0LIfce3jA9D^2G-M&>r1C4a^OHz!ousNKl=^3?9D(-4Q3opv4dd z8aV>ZEQ8htu?vFMoG^jUQ~+HZ1Rj?JRV%PrWzex1pv6OwbE?5BG{M{9%)!fEVS5P0 z#n>8Fb_Us}tcY9t?CT!$#AI`G86C@t-?_@N;Q20DW$!F+)&t61?6;;zxXC!U6<DSH z`x?(LBp{$5uN>aH#IxW~ftqpE9x+aNd3nayOc~J%hUWEuR~GWCN=oyIF&8RZ3I65- zU1P@bNze*3sa^V)Rb7acr9_!eQBEepijzZFmFbzXh^V%$nw`0D0S~KykO*jh6lm-g z<absEZU!v|BL+8yB2YeLV;40OHU*K4rflk_YU+BN%1Z2_#-L+p#6`u7jf71>fg~zM zQLr#OY(0H;^O`HynP0x1Dk98k!D}R}C#9pTBPK2-oVGPvSVYUPV(rRKUBxNC*N_!f zOcDnKQg<dWZaB(Owm1Ku#f}o)2W*_oGHep;!ff0uEX?<;OgY*12r{wnjpjI_#rTfA zfMf#AzOXfb#}8B(7~tJ}#Q1@j2&@AQo_z%kUwi%o4GI}?aWNu|Dsi#s3i15`PmVGl z;1gof1dU%{j-ve21uFp&kTk6Ozn?vr<s*X#g9?Ks^e$7-*cPLi5p>K=OoWq>4|JkB zBj~UJ(5(?zoyn95vJGS_%E$|o>%VRmaUMHfUKYku2!p8?s|PwkJ_3#3p$^NjDE|7& z%gZ9jBF@Xo4PpGv09gaF4t1am+P7q9U_HYi3OaWPd>0&e{S#<ogt(Y2BO{xLIHL$3 zGbr<^tC<UdR_}p!(;z7l6=V??V`>1O@&jpZ%WA6sD;5@J<5ki&m0{x$VPlqL(w^#Y zbs?%6#@TyTG9GgSodN`Eq6;%IfEI$g{wo6Q;_$VaUR!IyBgn`h#W-Q9yFc%5G<E-e z$sAk@iW8>)KmV^~YiE7Hz{Q}!z`&@>sL#kOD9*~P&dDeYKIc{yw8~S>T$oYK%v@C% zw4_^@RgRHm5hLTjIZkr(tr_iXco@I_n;OO{CN3!c&;FmixS+TgYuLXj3PQS!-yVv{ z%7{K>{H80!<owHo%ZAbEkFER)#$+c((|_~+@hGbDym`Z;s>t|-F-gIk-IMXSrsh9O zPj++A*wp{O{~K7FSs56_z^PSPNgcEjLQx5HC?05m8R!Ct%D)YQ8mwGm(ti(#DRT*l zurlxpNDJ|^vn>A2pv=UoEXL#@t)s!k)W9yxrwLhi2^oK9Vqj&k0G*H|$jPV(O7_|i z0z9V&Dn7w$)<Dzp;Jax-3lkL0&5XoBE89W$jxy;o1^;be3jVv6r2#bC0@@b(X93DQ z40G@|E-5Zf&hHQSgcuo^g8$xP3jUjbG*`o%fHXhyos*MGitF2-wL*~brT>sMhM@BX z#6kDz!p2dApeLfj+8Cg<N8o#<8D&9BE<pWW&_*pmXz?!!TAE~LZpUg06<`Fdo3aS7 z03)UyU}}bm4$}jd_J&{`lY#{WCOS~cEXCZ>M@wB0%#{FZVc7wuJiugvNu=bzhxKaO z8g{Nyl948$1y&}JlFTLu_CJ0pc|l24EgOHRAZVp0!~X_0&{!THgA{`rgCj#MLncEh zLo+Ovp<4^YM8rXxg}~zvMq+A64MtYbNHaJWse?`+vu6aK<6#cE*oBduQ4M;ckT@ed zXt9YY<j^2-Mllv7BS51xpjb8mt-At^P{J)`-2R_|i<gI+larAF6nzUI_c}d5+A++^ z1UV?^-zHJf_l$zlLDG|DWd6MqQWj+l2>Cnx{lE9nLx&iJgp@`9ZGfID#ONo=)Q4ou z-%k*u8K?he;Ff?}$jJGh0h|^X!IUx5rsxOYE2b7yfX)_T^cPhY`u9$n5po0(qwsrC z(SIAlnBs&Og`me0{d@O8RFp9wtPHH--$v0)uzn^6BqNuiSOzW=7~&WhnE!y!+^_++ z3c=fFKve>0_zGO2f!6xLMZuR6f)6hMm2~=ydW_~mil7Co2P6bO2uOelMjLr`cO7+2 za|wYD{Gv^M)<&_mj@rr|yh1#@OL$p17BCtFENTj3lz?fFVDd1Fv$l~I6AzITlvfqj z4W6tlZKbc}AS)Rqz){O3$IHlNmoXhS{>B6v$C3lx+XY(l0vcX}xEHi|4a5Sq6-7b$ zmKi>C5AJ)2F*QKOfz_lOz+-Ko+qxa3)EYn|8K8k*&<d#o;64XvCaeKGwx%Za_kbEp z8hADeM1bmoL<R;XdDaH-IVGT$G<2vJVu>&_A0x<3>db23g;1c0HPE<;niR-*IT=QE zss9X8>Wngss-W3fRYrveAiF^X3)^4tzCUIV$p9*~7+C+YW-};(#=BHSl|iQ<D1(k~ zS2Q&iW>z*;1Roz^Y-Z1-D5}gX%qXe|8bJXqorA;>Xxp+eXpuP|3%ju?bK{Ts5**CT zoLu~~|NUz?y0eo}q?<{UgPEC`L$ZgFv3AE9rdNOeF|(NXMfsUnYZ~kEiDgQu2507V z7<xzem@~gvzWk3CCy%Iz#INOy%8UXlp0KEK@^JEKJz4SZ>%SXJ%g;&62svaq+w0jW zsu`+tOUJ0nI+iC}#93Qu+b9M=(i`i41~vxfCI%%2H_+-2LVjY!?I&g;{q*MVKNe<G zKLzCEb+{&{c(D-h(#><yx{R1Ua>{hJa#06)i0S_y1_t&PR#0st&cL7wIw?tv4YX}S z5p<2E8EA2|qLCPL17pBnhJPE_zVdTR{%KIN`pckZFTl?&$=sl3#mt~)4?cg8#Z<{# z<`098rjnAk3=4yfCTMPn;r|_Q`I!M;d#(&VRa{g=j9pZTosS7T+y~ls3ms2mf;Kro z7u6`KE13$)F+tk=psl));ZD#2F5pAB&CEqXBZi<eNI+Yjjg7?E8Y2BQJ#}4F^As4x zxRvTN^lU?vHI;J$L(1e-<@8ho;-_({a`G}VF)_)jGEa*SP}P%Dl`9Jk$Whi*4zYE3 zq0h+5$|#|%qbp`<7@!>#&A2TPBvqq6L!Fh8S&+-rQq@J*Q`0{(I!HUf&{9lSM_Gc2 zg^7ugk%a+GE7T>HrgCVuf$|^2{{|LNouUppJAqMDgn=Ej(*sfBo2oH@$^lS4F2bMy zWrJz~1#ktUAjZ=0@8(TVc7%;FFf!cycN4U1f}OF5kzLJ1?LWhwe?Rts*4#2XG~E5S zQ=$d3rm{tX(fux@h=81H31Ty*{bOj^v!{g#L^3cl@cwULEoNh2;AU_J)#i-spaDTM zuyZ&;Ee~ZSb#^ghBdEh<8L@akot+Ib7YuDLt1^Oy=#0b|`BOpLGFUSIP2baEZkCXk zvlHxI4FA;T{o|723gY5o0X2Ptxc*iBoxG<dZ7Gv~YI;7%(NYbjOmhFGH?-^#PB3O< z-w6>z_A0N-KQ68yE-8=^AiC=BWRMTbAm#A?23Al%jg3JG)I(JiG&2Wnc;;gT4e#o) zLD$KOu{iv5D35!6z&W|Iq|Q`;M}|khw63Hx*%`D-R!WV@fvMqlzrEKE<_&)t!d5od z1bIrav$3&Dc?Q)quMC3}gwQq;12`Xm&dpE;m51Vrf{LK=R?u_{Z0!{$ACf3Qt^pr2 z0jku%2l1OhSjI+T4Xh2n8W@p|zF|gM_{rGdWAdv3v{<$w&dC9EIS80)F!5<%VK~63 z0P5lX1214fV*C9DO-Pxrf_4vq=KK;M_w)IH!tMWW@S5@m4D1XbKD2$O3hK8jE2)Dv z+$)NrE~Yg%RaS!bEA$vaHwS~xI0F^x?20C4=Ad0z;$ln;;MB>yjE94Vh54TYH{XAT z{E3jtt~Oc0y1?C5ghfz8fLC0QhgI0ZG1Edat|g9-QIC(C@c=Um4+jq`*Z{SJe+L9O z*%=d<gt*hhHx&N?)k;##3Rx@V^7XB~6giaHd5k2u6ucc>g|u`)ep8g^7Gg?ZWak9s zONsvq;62#v47%V|)Jkli`?^IyEmmeWc2>x_j^@IQa2Ck@=4L92Mq;cBz>QNziRqgH zi$s|C{xz_3@^CxwvWEV9{_hPl8y}~GAkPCX0mkZtfIW;MjI4YjERa?zW5dsXQ#S`B z{A(59dceZzz$e5g!YCQa$mt*~!q~vaBvKT(yH6O@#{gA8Y|kKl3`S-}VKa3#Z4j-< ztSHQ^2tN0l?c$Pun>O*vNL#Et^Ka9ce~&=qOqM^X8?9}$n126dWp=PoQ2gW0yc2{O z-2**6_k)Z@tbG9$I1H-hW+v*K;1m1Rl-R+2Lop-JQ6jME9p>INVc~yg8I6U7(?GpA zD`8>AW5Om(ZD`}oy&zdeV@6|P6Jd}JD~MvI>;K~Z%|C~j3_`b`(aZ$2!-OAXH7E2? zd}RBX&N3bo7XAk^E=^dN(fHq4utS*L(Cr7g3gk41Gtd4z3w8)0`x!z0hwN|>kq2$Q z;bcVhKMUCZAnX5Gfo&Fsc#;u402m=5fbLjE^Z)?mEu=XE1yEgV20C(7iJcRC1V5;M zj_L+xT~HW+0{9=yUm%~FFrg3nzXb;ZDEN^hjHw(;95{gY&Ip2fv5e-5!iu0He3XS* zjZIaB71bFPnORj?vIPG0=rg5=9X-OkUW_q|g)!aeZw>!H3)Y5)zx)0kVqU%e@2e-K zrak{&r7$KlDQsoD`YUPCB5?ZU`R~B?g%#B9WMEX}WD-_nXH^we6jn4>WE5t7`0v}F zJAd8W88u}YmoYwb`R!rFvQzE12W!Kx)BnCQax<n(Ubv7km{AjyU_t3c0DOKhJ80J> zZ0s6(G_gJ-8;gR9I;e#Y9z6uLW5vbz8RZzoVQp+{Mpz#c)ae9`!$GFL1??EkVTbrK z9{?9B%xNMVEWBK?<^Kx*nfxm(kLBcJ;SdqxV@wd^;NVYj{yG)Zu9iAr<u>igG&d^< zXX;ny6n+j4F~$TwA(m(0r3il({97Q#!NeKczkGRrEGH90QbbrFCAwCGsU6%}U#wK> z23i5>R;siZEbzBdq&7N5Kv+Zwat<rF-Jpzg_6?+CXw4{S!l1waU7~LaDwahBS-?w5 z!Lx1}3XG7J0rV;~#55TAjARG!U1vK%?Rb#w{|<o41jIZKq+btit-$6#7zET5*aXBB z7z7xg7}vBF<Y-?;G3b6L#>9W%L4WX&|C%)X(^X8bz^C>8OJuZr2-43K0-7%XYt{K% zM{uSJ)T#w_LmHStX%4)?1Jry$S~!5QiveSme}jbvc)IX_h6QL}CN?&+0!$R47KsH4 zOYj^g=&m<#p9{1q2pUzOb{?oI2OTho>@IXZBa%Ci%!a#-5#a{L8*t|!F=6+%g4#Un z4AKmypqW<KIE|_rgSr|UXwe5~7pNTQ3U)J9H6}eq6?HXsh`1PwkT_TZa;q+=hX`tw zfcmOTkY&P*t9bwIc)=$k$UEx}H=_`51Fr~UJ!{&=m;WBl;^X8J;yuF{bCDe^!Ntue zkGxJ3vWs8o1)~QqqX=&UuMi{momsqsBD}L0<zH@0V`b#x0*kU={I}!`uMig}^I7yY zlAv)Kkl(n$XPYRnz^6_jRSD<_4H0l(0^|0GO`v5}@`?%y0s?~k7&i+1oi5}h#ONR_ zB&_<kK~<Q8lYyDR?7u17Y1UH=pthVo0|O^3q_%=pl#pRyGZQr>c6G>5jXWc$C1EZu zCc?tNX!G~Tzaxy9Oj*Lh;5%9VP7@Yp%n~wV?*3D%nyp%AQLw<GR#la`TQys?7R0Gj zWwH5p<S*z9T97UikZPg7(?C_}G$E$`KP9TFbruT>Eb3IVRhhd~Rck?<TGecnIt6sj z9(X<wG`9|lY0%U<s84|$lc06Apo3l@hrVE0u?jAe)KFKbg3~s*-T>JFP1_(-L1`P5 zK7^sG%0R7Lkge#e2|$CApi8BN_?R8|gisc7fzFfy-vbW1YnAB%Xn39vMEo-XUAGEd z?#0}MeC;X&<Nx0b3@kjX^$aqglg+iEo&+66X=V&M;0=E5F!L`VjRQh_e;q_QICvIt z3NShx&=3-oVssF)6Jm6bW?rfa8YLAH;XlC5)S#*=&)6U)_OAgn!O!^r*Z&3<9##fW zY7+)+00NEIfDXV@2OWuT4caxP4`L~RmV6!1P?7$3K*&z$-vKE>A&mq74)Ad=;N|3G zWf123v(QW7UxSz!V}rb!DpLdZ0X`97P+Jt1o<Z{u465*^82kbrF(atIz+FO6Ff*-X zN`tgT{^?!@H*<s;(}Yc!(~xu8TP9G00n`@Iy$n@6OPIM0IX5B7eKrOG22ln`xhc-B zY^rPuK2iZ3ew@sLpjHy(ejto>aZ_fPSR^oB;uHLLSCE%akWpFi-)|;`e-HjXU~Y(! zk(nVAAQQv10NG)TYi5`vSTOG51!>{q1!?)~z@)&a@b|&L2TTbuG66C(WMpE{&H)3p z10ZX*B|&SWL8l8VD=M+G$%7^|z%4iMaod<>7AU3vQve+-GvV(mNI)=&O%Rgi;Z;XV z_6dv+q}0?kWkKq|jaVkJ3Bs&`Oj^ichH!@}Xb(52>8#EOE;^O?SRq3c=4R?l=60Z! zm7rn>J@S~}GA0NM|63rZu2FudInhFqYdIG`JDV7@PL|$^9t|EIDJC_P;M&ZXAZ#Mc zm;jneS)gtopHP)*v-Lg?Gp7V&Qn`u#0xdySrUS@MWMF}}FPRwF7=#$)z;h^!f{cO; z0(y+l)rMv$t?ULy2GB;Ee+<kDNXrT_79BDkXlP*c|NH1a1C!jpyNnv3<%!@$icIln zZA|c9Rq#1?pi{1N85qC`3bfSN9MnidFDcMNiKS9V{NDj#C*gkw#DxSkm>M)@2=jv1 zcJhMOd7{P~bF8xbKL=@P#sl)o%6}C=3ZRNnYY$8}fyP6@iQGt>QH-#g1U3FPXb1|4 zGdc)62{Sr~mqM+<;wHw$%F4>}j0dEp|2fG2yG6X4z^lc<jahRuaYlk}asZjH46*Ar z^86=i5HT%83Q9px*#3P3nk9wmU_OVOfI#P)F))8)Z2;}7R}~jy<7eb!S5{&G-I{32 z2%3FT18od}FwGdiH-wAvL#9YsK?i?;&JYIOlc2~Z4q<`@n!)EvvDh=3iHk8`P-f=g zW@X_OmXKCdQWt*pZ;^dGXjQEf6SFgDq$0_gG4VlK3^ykmvo^CBFAEF5h@`YUU)>2K z#w!AxT+9-z(*GownHf*>b8#|DFbQ%0t2H=XFQg(bBPzhc%FE01bUu$L3nLTgN+wno zCPvn~!n}pN!j=X?d_{ahmlzqunR&Q*=YytX8JSs_nVA|2czF1Vq*Psac=!vr`Aa*Q zSy)+F7@1hv*}-F*;JJqe(E07KlnU`ZQZK^<Gz}@o2->p6rVc(m3%W=RG_nKUj|Xc0 zG5-<b`{TkVB+Q!_5AtdJ_x(GkaWZkFbMo?Xv1%pghGsAtf`a1TdB%A{e2e&m82kTC z1gV_HE6i9g%-hT-bbs}|S`JCBdTvH0PF5L}IG^i6e9gSV|5~^53PZ*ZRR1$DUt(im zNCJ<=f-Wb7G&w;l7wtiZJ&7BDM&yl+K<h7=)%7?)lXLJXML8BwABv5gO<j)#d@O|= zi?|#c^QGhSh4|Weg`KJcTqIcq`P112_&J#hn^aW;tL0P!Ow81E{q&tQ^&|z4%oXNs z=M%EbcD4~>6XXfx;OFCI7B{yG*NU$Y)Kc}<(>Jw9Fn3jzVvL`8S86>dG}d$K=o(9~ ziHfvyF)?v7B};LH`O6q7X^M*q2q{bJXj)o(X?9(Z+rld>#J7P>Nl{CHO-N)CKO-|2 zvyif^c$kZnj=Hq6u#kwjzM7q51f&ne+{D_zU<aEm;$vhN16}x_&8Vc#pbj4C1Z_Do zR|L(jf~G{&Ab|v8f`>rav>C<3jg7>Zn}qmQh+kQ?oKc03i$nCV0O!AR2RMa!3tAS6 z{R;)f4dYzP%M(FP1GQ^}_+IJ@uI3YB(MsbJny^J=)4y2)LP9)@`DZwJ>v@I4f`s_e z_=F0Dd0RnR)A)pJgM~on88I-hu(LLRTI-6S;d0P+bWkEQRs?Mt0I{qYK@AOSMkCP4 z({_yJ!l1E1aWQt#GDuLTR#_1=x(s0nim)+7ui+K`2i}*+r~sj_{oBvM!6kG^nCrT* zDwihveh$(7f?S*&|Bhb=r@4EKN)TFDh>y`rh%cR2I8=x)gIAczNkBkA=wG;6xI}~? z;}T&3KEc0xg?TghghGXR)A@w{ZQ~UN?e_w0-~->yWC0#mQwAMs$RNOm>@s+N2r-up zXMu)}6^&Sgo3cPVxw07Z|DO1_hVdsToc^&3^Dc+YWP=AX9|-X=NuOX&KT-3~fpOu# zx-Vtui`UA8_@?p-GnMiQfzAT}9h<<~z`()4!yv#Q$so&+$H2fStSl@hB5q<PY_2G- zXsoUb5)cuC3PAdZ%xs_(!>kOZ)zq2cu0@oG%xa+9xQ)bx6(Ml~qs7>njbTZN-PlNs zi79ZtHzOlsiSoZY3XBW8mE9QU`z;D&WMs@&{C8ambguc;CF~OOCD@l;T+S{rpIeY= z!3B`-*DLmcsN6_aE-ryiDb^^)^h9=vItlh9#@tv|sZIedF4pLLkdlc?oB4zoLm9RI zU14Ma-F&vDp`qdL6-J$ZR~cCu8Ce+DHZ&+W@Cp5$AtAw(@ppy<9~V;wcr6uVWSKF7 zpO;7C-wehK2?)u<%l~f$Q~{`;ZSkLh<tu9ggE4~#_?#gzb~#3NJ{ERSWm6?}QDs3T zHEl+7V<U4xV>M+#HEl*yaU*k6V^K3>Q)5v%W@ZyT79}>&!J|fYY#<IFBZy<i#?mh| zwX}qn-Po_BK4?~e)+`|p;S=)tMjQfcT)aN{R~!^)1!>Ikugb8!D5v9Y6Jg}f!C|H5 zV(6%6C@1VLsbXW~sqM(lYOUm?W38ql#N4pWM`l{LdybpF7|Z|PjDHyZGj2C#oW#f| z@3MrE@y~aruYcI(trP#wRk2W!<Y8m_w~mpSl}A8INssY|qOqbl7aJqvzq5>t%p82; z@_L}O4Vn*R1Fif5?~w$}>x;9Bh=KMAf|?P~);SA<7$4&dKEA&zEHs!DEHt3ULMX5> zFy7$f`<KBdrl4W*`vGXvFzA#A(54h5b2S(&7(762C2>VTF>z)^K~UWR8TbL&BL><7 zjNGk5KfWBD&$@??@1KSkp9`{6EKY!WLZGyQIFthUfC>nkMTJic<mA6c5UvHCQ}q{= zc)-a)h!NaF0~1J0(D;MYe+IT%HqhzsDhy5xK@1Fx#-J;cl-Wht*cm}P1;OhiKzT+G z)SLjF9AXSQXhPAH(afF^bhQKMAQNR%MNvjJenwG{LQ`ST%?;|x?8YEk*jSil`9=>O z&=r9!e?M^jJIKY$!~O37Xe90cc>T%&J|Sk8zdINUc{o9r$?*uis9-Yx*U!e!&BrPF z<I=we-uj>Qz5hLQd$#BqOU5mI0TvNPC7$1Mu!Eljghg1v$8G#tAk_LYib+t2larZ| zx%g@1-*+5B+)PYN<;;y)SraB?Wid_rn*|#CVPQb_w+YDKstA9B7O{g?{xO2f3S@tS zcG?;v`HUHK5gN{LAj02sQG6$iGZf(7euT}}|NbDn$5M|G1YFF_jO7fhAU}i0XF>fk zO9oHSxpAs^q8O5*LDd<kD~rDHfe@eR0rse7Q4r!oj4Xh<`VHU&4qBKj#P<(0lEBA! zfKTXv5Z`|WkPIUOpHKoeUn36HXZ!?N2hArWgq;bBbA<o-88jK7{s+|?$m1fo!vi!* ziL6o>Z6OFcp9RGO{}ix?2GasGKmSDz4MaF8z&%)mEhrd^;PN;F0G#Go&q4FLGiVjC zDroNvn+WKlY}{#HRfLaOSxH?@9dxy<v5}d%G9M$T)dOlpi-9tLu^{-C7Irr9Wg3F4 zP7&57cAhRqZhz<D@bo(=i-1yBJ3R>@b$$U=wUAT+Cec8hthNcc)l205X)kAFV&@RD z3p!AJ-#*K$$j2-Uo1e|?%5#GZ1vuCX*;#l?!^LI#Q!^*+WzsJyV%)$k!79MRD`XY6 z^KTI-?os`24)QxA!teOYIW+GH;|mTV{C)x1e~0k|1Pj#jzgJ=N{U3C1vKnIz4^TS* zG;Za<3R=G}4QdBKVjZ$z1AW|&RfJtkRE%8=bnh`c8$0McW=3`J#lwOopv^Jn;QNH_ zm>{S4ii+?tf(|7F9Y4aLCMB(^DlMh9Kuzi&c#fA*K}wBffjK|3o}eJVI;WLGtBQ}H z)0}YMYGo-k6-kK<Ll;FMDNasyZW$3_DLqepMSf03VPPR=J`NT}QNJSatc|p)Dw8yP z(}tRwRG7Vvf{(3*t)*&#s}GaBw3Id@qpB2BqogVmQ;|csqL7WMmb#9Oh_I-<k%o<& zgqn|z5}SkwA2=N_Gl1@s2c63W8k2^cy$Das=skE<F;Q@Dm`PlYNmPUnbc8YJQe-A@ zc!1ZEnt<*zuw$}j784g^2V-^-&=DNi0wU9#vC!||YZeYZW+5RFMoxZ3eNR0pVG$W_ zc1}(yAw?I%3<*gUH7Vt4-|#t3f<7v(4pyA%{DOjd%*?Qm`1=%cv=%r#*4sw-74eBk zu&HYJs!7P%Xc)<h3X9n2sB5X(2q}g;6frTWN-{M{sWLKZOG(Q!`M4ISTH0FJ`Y3=- zo(H7~2G#}!P6mDkaRzM$TZR~h6oz_+9)@`gn-~r;FsPcEfL6nUt}-w-HBk~(6;&2g z7F0H66;uW<i&rxhG!}#m-wU!r*9eI!3xb-DpnHixB9O^GTSgP`!dF>FWl<4hBXbio z6VP2xpiLk~j3%H(&1#AY;1fwjML<&>VhZM<JN+1imD$xnH)@NCiyEtft|$WC<|E4p zvC<55_=X^;l2$VnRED|(*5QXuf-p~)6%-H<l-=Rv^!I3hmmlLsXLVIYPBte-Mm`ZS zMtgQ1O=U%AX9X2a9`@f%%skSjCbFU;vT4$ytx6JXjQ<)P9GFCfxtz2+{=ND4wnN8} zOGJdrQM;2#ty9~POXM$al((^|ABO_FGPf6_qNuE)v9zeDw6USA=vHTE&_Z8EXEtsH z6-~zP$isv$=Nbt-5Lm5bZ2ZFQUnJvlx4M55HFRYJ)EJfieUf0}muHm7pJXDcrK!UB zcA<ur=r&GSJ~1H;HEHWcYiTt#87m)0V<|=+QEq07ImX6wO#U)&4A!w`<>zO$)(Ky` zAw=5-#J156VYX(}IDA+<Mm*j8WJQyeteTpv6_}E?VJ!OhR9=8df>Ge#ZB-#@T}BS% zQ6<nSBkBJPtWVh(kkUsqLo!1xLnp&*hV|fny0VfwXzK{8sIsYvk*YE1TwOt9MPor_ z^k{)ao~g2+u_-7$nW>s8i+~b`Eu%3;#F~R{5>k?76fpwd49w1^08S#HW5OBD%@n{X zgwdE;P+3q-T}|Cs7?$=xqXeK*NnA`7OA2K^tu8JmCa%sH6czQyD*NAw%oIk2$VfS9 zA!f!%4jw%NGsd-?f@VhAk&(IvW`dlILD5X?ih7%+)tz0`Wn|S|Jye94nf@*a3u8Jj z#TQ|<<FC{Xt4LlcDZU8n?M%<W>_1Xzl_`Assxn#bjN4>XU7girWYnBpRb?3cqfL$U zcsZgOnT4d~7*#Gii!thox#;P+OpA;Adz|szzcwvVW(CHaf0c$3s<v@QJ*6znZvM?Q zFgKSD<~8P0aSc!RS2Z?P^<V3+YHTVk&B=V|lB??_x4+@9N~{CeL`B&GtP9?O*z6)A z>;cvVEPVe8|9xcS_v%Uy`S;UpeW0qbv0A|T0FWU;|9H*qR3(fVyZ%j7WD?V6tYu(e z0<R%zWBtY;4BGL}$Oh>_n+qGM!#d2MQDITopbVoKBWOf}DU|EGwAy=75w5?Cj0<_V zImO>=NHL${=KlMEF@T$kOYFUt#J{ydOpKE1AH|qch5mWzDS@tdU=$bQ=htOS5fJ?o z#rSuoh#<c%Q=S5IA83gW<a}K4cr?f@=AgZ&phY#{83a*gHgPe~_A*A$2oO7?7$cZx zrp{=}Xa-vD4QipmvOm+>I#Kx@LLBTIwMRHPIRtjf3p1Ou3+|Q^{+G(g$SR_+Lx`P& z^WPuFnH;x~Gbl4N<6R|g9>E)o|CaIb@v1Nf@+kjRXZok8%)`sic!!bcvOouFb^-M{ z!DAMn-E#V%@f7e(gD9+AQUTYKjL@_Uy4!;hT*iS@vm7HUgWNv`c_l?f0e%raCI%)s zCVqZ_EcbhV>h8H`3-IwXLHW#0P=2(RAftnbkdWHn1~nlLE=GrG2XdA=dZutlN^+!l zIxfvY<${KK9R4@39boMO&yR{TNHfSYFmSSnGK#9Rn=+b;Gn$H<i*oWXPGWrbZ`D6B zR-J!hjEw)pCo_gIGBSq$4P*@aC-iR}s~%&}Kk<Jn8N(T0{#*A?h}rhv`G1cY?f*T= z`F9(1)jXqWP6DG0=q9*-PgrjJd;ISLBj3MI|33aZ$SBKP_wV4pPmBf(?4UZBwGMnk zI6s3h_^xSr24&F7T~<>@L3U9^b!9<gK}A7cMs`(UR(4fkMs`jnc1BfUc4p=Ue{Gq! zF#evR%vj01;Li=F1H6CjgP2yU{|!CGl<50+KI2x#zM6l9Oiq<kE8C|tPG^k%>#WSk z$n@avG^VTw$7zm?m$pyZ&iMY{j3&km#<PF7hcbD*{Oc~ov=eDA1~R{9&%mH6s4NC* z<0ykp&ox&T1dSmWnK8gyj)-lXkkgUOQAPob#8`vcMH=oj9sT!0q*qyrMORYg-;=Ek z^;@^rH!xn*kX<LM0VdX!1pe*{EGY?ODGMygW9qPXsk>Uk$bZ1a{%?hpvNGf5AM4lu zSkE+hsf?zk%u-nmjkgHpB}n-NRFlhNtV1z|t;B(?EP!0C1WCb+vuZZf)NEkd0H$E~ zCPD5%`m+KgRRfl(fwdz+Z3ZR=PVl|s!iucMoQ%fiipUdG%nT?0<uRGX{WJY%8kfPu z#rPX-{TK73f9D=BZT{=KfYI<D>XI|?7>hq^BkKtUE(Xv}MQ4U|&=?DwI%v<1nH;0I z9wX?sUO7<q5!Pc;S7GI2Vh1fqHn(FE=3{0DZ+K=_S5voV6jLylV`LL%1D|1_s-~{T zqOQlR4!VEBT!mFkT#k`hpQF@NT~<a-#nU{W?^u$(H#5uRnCPk}A|5)1|L*>KtF7lC zBo||D^W=`bX-pUgKd+8T*!iRBdhS6EB9aPhLid@>ABeIEY?TUS)zMb`^KaIVN&KR` ztn5sj%A!)7%(6-rDsr`Z7^@jIXWIxcGA*_DQ4kCY5)|UG7R)Zvk*RczZs6dU!Bi!! z%*ml|$j+rCC8NyAE-S;qq5MZkD%IIj#6X`}kV8btR5{^@0Oyn`Y)Tf)JC^^GkTa1H ztW%RN;E~moHsLfnQN6}PN>@&fpIc8zHC)d}#11ru3O&z@16-n8F+@Uc(^dmteQah9 z-Wm?x_AU%sv8}Ghqz-D-i_0+yo0zGovni<aGlK6-1O==a=n6zuHc(4nj!9gOSzJt< z#oUg`TnMAV6%eGN&8V#&;>8islEutquItvnO~hGUXZA`RHD^&?JtetgmlRcuEVx<u z7yipw#KS7ZuRr(aW+gfPc1}U<f*b!nw#2Dv8?$hTsjx9}unF;IZf0cODj_e=V!)_@ zTt+j^($*6b$rKVdvvtbjiE%cJ5RngJv=WtKV-*o$W0w>WmSAU9R$^tB{L9R)F3FOW z#l|zsB2Zc{S=cd)>A0zwxuU%^j}pI#ft*XvDHT=|5hd;b5t(RS5j9apZbl<W?qEJp zzH%j~|H#PT^1qG+6s$@N465Rwn>h5CO$C)r?O4q17(q)5L=^=^<e1FOm^TE7Z-~rT zTi~a-!lTH=K!lZ%o#hLo@4rpF3eE<8=ie&ZF)~@iR8&|oDO{HdkIfI)Wo7>t@#pU^ zITKSkMkeHS2H;tKRdqIHHa#X&K}A#0LJ4+0W_D3yuw8bH=;6;&V5eiPVj{`K$oQXO z4+kTwq-m;4lXm#*WY>1aMabdjy<Ln^TticwvF{M08<$R4MwsN%e{q&2S&mGM1}yr> z-e>&(`@aJ-D;op&1RUu74d_E-OkV|f|1IL;<>UG{mzRT61bQMNBZHd2zXmQY#s&dl zVHWUQz;DP}jo<$nm|0m5fXrlM1Fr`GP3f3|X6Zm196+<YOn>3#hzjsB#(_*{Oy*?~ z7XA%hB+c?bO@Oh1i|b#503?na7=E)eu&{#71dq;$im*X%qA>$)s8j^q+91UDTLH~c zOb<Yt>JWA$@qv8+ULVQ8@SE)b)J)J=8E7^NJ`H7RVkXWg#&!VY1T<GMHS=-(n+Gw7 z4{H3sMW8!2nLu;?tc7e03~JyVglwReF!&yFHf1GdCQ}ngD;9KFDR{mXd>NV;qX^_a zQg%?6Q;tzwM2xjiJ*2V0Fgnc9HZah5#?;A$1#3JqGn90b(%j4AOicWh9lQQLl$EnL zGgEbD_V(Jq$jr#d=vZ5OL_tAOiIJI+_0y9{6XfKSlpIwYoQ>lOYmTv0*?N21n+b8V zP0h*HWENm%;Q@^igZj*%{ZY&e><rut;9Hng1sTD+=^-@Js=r|%%+~Oy6trZDN$78B z9Fs27^S`-Frhm)-ysKrJ%AEJ-8Pi<wy}=BiGhA6)7(i<nWf;sEd>Nt{7#NH|tFzcd zSfDg3Xs8*y8&S{%d?mFuXao*40jLa$TO~D9bx_Y;5VUC#v}zr+LR21fkes<0Xrc{N z6GMmNjl>x5Du|0Kh%xR_5ED}n|MOeR#yZT#hQ;4O*V`t{rprcK%ZAZQ&w*)OcEg|K zh8%Zx9$t2j_$%=q?7TeejMG5!Hd@*?EVAMtbHu^qc^j>NLE1Jp+KlV8Y=r-&={Y<G z@g74+2R)`)j8n~zmX;nhZ{}rZ<7v^-YT;pH=lwesrc2w}nt_vn@!wz8Uu=vF91Q#n zN{sA`B8)1GhK%lv?->{v`52W!*CQE;v#GJ0iHk9+fyy0rHgPdCb30}mMm0tgbvtG? z6VRXpqdI8#fsLIFbfpKlrc*Nm4ckB}PBC^iF>^B$Q$1#NHgOSUJw`TlGc|QJHg+~S zM$mP*?BI<>;znYi8*o8GI*i~_-rSDa+)P}K5p;eCDD|nUfu^F(?O4UcMfh0R`ItcU z0y`UM`wzHC6k}%tiI|)5GqQpDX>yEU&2mhlX6kyNg*M`1AlpDURe`D@P%j@;1sU5h ziZO!RBPu3t#Li}H#0v5e3rLBWnYxJ{Bgo6*V&Wq9j3#=F>T1e-jAHD3OyXi71B}cV z<(NQ@0W}OjH9TnB5<4F=sM83VLpL)w1GOFOKrIGSumjoI#O0XTMcBkajR0{uCUZL` zkg1?mmFl3YHo?9&S5pT&%?zXnY`+|%xELsCm_aQGH9kg=FF+9iG8h!-jArI?tW49n zIayeRSz}oExg<E4|IKD$VP$4!XJ=y(WMO1tVq{_tHD_UGW@ch%<YeUXQkGB*SL9Zg z=V#>R6cys-W#m(m6k}l#;a2CjX5(NJlT?-A;uaF+WfhbZ6UY`~<kXa8W>k`qmStk( z6lCXOW8r2OWMmYP5ENl#6yxMjXXIt&;uGVN7SlIp(vntS<>Y2%=HwCa<kXRpG~;4q z6p+*sR8vxv7UN}NVq@cG=Vg}hHxm=p5@TkRljRi>_vc_@WaAK3U}0ioVP#R#W7S|0 zS-~m5EHB5Q#iysv!pp|UEW)K%(W)cP&BMef#>pniEY8Fv$Rx(E!szVxcOf%38z&Pp z7c(<AGvi_=PC+(SPF6N1W<D(;PVOySJj{ITOiX+%92Ts+%>103tjtV|Tudx19DE#% z0(?y7B4SMJ65^^-Y8-0uGJ<JpLgHLXayntcJ|a5qD#kLhOB{q9RJ0{nxs(_gxwsg) z_`(F`Bt%UWjFmWfg_w9)Ss0a=nUzEul_gRf#kIAWg+#b24P11&S(q6ah2+>dRK?Up z^7wdIm`noH9Zj=TEL~Yym6ejsBl$Vlgt)n+rOlLtq=h*7n8ehC1Vn_nETS~5Z9Pp5 zxYZRD6`A=M`S_&-q*+oKg&Em+nE4p_nYnq{{sl2|2(q$ra4|6oa4~a$qMPa8EFlSg zNofIDE+uwtR)ahd5&K0Y8cZy@ReI_+@<Kd}c0qC~Vxo>p9L#czj7BDm%ubTR{Ol|a zta2KnoXi|`{G7}z?3PZ9jF$5JI`T}++?<TE!eVlaS}H93d_3Zed{V3&;{4o<OoEI& zoPwNuY|Pxe%xv;3!Yr)pOe`$?;*5+u0>b>9ESyZNtSoHI?2LRiQas#t@|?`<lJ*8J zvTQ3Xh0-`AMCI*eWP}-69aDJ}Sj5{o`SmoI`K=B0BwRQIIG9*D*-ZraJ=8eZ^dz0d zWf_G_6ht#4rG!)!xS6#CrI?sFSsD374sozEvoLe9u`@CWn6oenJ>VAPU}R)tWMq+M zW_`oN#=*qT$ji&d!pq9W%*Mma$nxt1kEFPmn4k!+5R0&vv;eyhr>vMDBdB(gQIKS0 zwBcppX6F&)77ynZFi=(D<YD0wQd06%6k%oN<=0}9;1T2Ici|J{WRv7zQ{ZD}(=l;W z7u;v!rNk*AASSD4AS9Y*<|5K>QgAG)T3eJ+R$6PmOMH1@ruBtzLw5}(CM8ulMn(={ z9$8jZz7TV_T1R(QMMGstAyoxQZf-Ak9(iLqX>NYlK66lihmS#lL7hR5!HB_*Aq=!q zM^%kk88nfuE@o`RtftPQ2)d(09CG!rx|%v4BfA2t8oQXd9V4R>yBRBJ=d75x9gDD< zI!KoosBE-jG?HTxHxpoDf$iU6VbDrqViGW$QrDr(zvESlt*FAklmDhMMg$m5?y6Q( zWf4lRsOdVOz^KQ3=hE?T&HO2UJ~A>gGWqZP;p5+2>{{h+!~cYN5+kRGvv;klq%adF zvx={qi;bza99I=uA4~<LlTFk&yw8_=8q;J$yI6L<nun2*v*TR&co|u*U0v$<Y5IE` z`S;JfpEBn%GEQ6~yy}XStC@}HKcyF&7<nWeEInmRwb;a2Sy`A_+1Oc`PM~+?Kw~1% zK8PJ?M>wO29<x3p=$>X{BROWsdL~9?B|aum5joK5GoTyT*_4&^n8E9q#6bH;K^Md* zsk137serCL2A$$&W^5#GW^BYFCL}7tF2*ud-73P@Fhfp8ONf7hwu^>}j+DM-!I}h@ zhJ0r=uP~cQQDO=Kj>dt8T1K))#$Q%?w&go9W<Q+Yl;P{y|L^zSe1QNchmjS;VZ3P+ zY^Ec@Ey2z%ARr~^E1{?);h<|CsV8rr?`a!tqspfu#wVhoZmgiIt6-xW)2!-NI${39 z0D=6yjI8~hz8Osr&cELv4*2dHo&U8g57|KHKiM<5FfcHhn?Vmt6ESB5^&E^q?K!X* zXaEzm;L^;Tjf)X<dL3xdEF&Kyc!eQILX4f+Op1~Dg(|Cz=wAzQc{WC6aXH2JVsgw9 zye#sf|89Xscp0OFl%DbX+Oe>)iAftN{`<(w$?-2v%#+95Cy2Qs-a%|0i=8iv-yv}& zC6V8o+1VHqr1)j|n`}kZ)MT|}Ri)o~{;U0WTu@9@M@)o^^PjXNJExcrYm<3=R@R?a zf{d1o&7ih6XdVT!#uvK2Tor9SIds)8&eQ6c4hZr61GnNCAMgo*XF=h-1!_{i8bJGA zSR16&4zPeHf&YL=#y%$S>?nASl$j5q2z<vZs9nv#%E0;ne2*gJre<|!Wl>=<@H!^= zxkjK?qlvk&sWLO@MjcboX)DHxp#BDI9}O#mg@&>0W8LqZYElQB^cLtj9gtGv{I2_0 z)>y+rfRVv7ov|U^laWE-UqbV)=H^|D4>T;a8ADtCrSc0&sr~z)=j5cvD4-@K#Lqap z<=<*;3k_Kb#)j<de+?4M2_Oy4;Jg94Q}qFZDrjFLs2>MvtSUnftU#wB>)c@OV_~oe zuyAmSaROtD0E>bEriOrme-FT}VRisrWn!VhnDD0n?2-%r3_vvVgntV_Ygrf<1QZl7 zo<+C=5|5&w+xb)(?HJY6!Ocw2X(>$Xe2ik^DoAA%Gb>}9fS|0tMwqRHijB33gl(9n zo~)n%O9Wa0^NR7Nm{)?l6r+-ihK7t1qm+DtmslT`GD7`71KUm3{|x+~)8iQ+7oUm9 zf$oJ>Wn*Ur?O|0{We4qBW@Q6q1XVTAo&iu>-&|GD#N14r)!fWTo>A3ITufAuRSdKm zQe2GnK=kaZuddFHhER<8ECT=T@bdHhyR(H$fosdZJAC}S|LzE|uyStM!pX`az^KB@ z&&Q~;g;R-h3!@4jKQE&SRFa7sVN7)NY*T*Lgn#D*xVYHje(>`Ch-2g85@0k+VC5I& z`SF8SfS)yi(Fh{T!vm51cP@dIUx4?=4<2xwH?SULZDbH)Fl1m*1(j={-X0sc1T;2M zQ3c=b3M%S^%v8X=7|<~ppvAc0RyfN$GmCBiPHo9J`9E#-+olPO%#3Pr|5_i+0bSKv ze3VgWrjDSHVp#N~UsKBRH0Al&Uvh3?G~0Gysm;H2*PGt1POCnA`g7GeMwvM?8O6`k zvN36D%KM!!p7Lvwv5-8U1_Lwbj4-wX(0O8Q&?q*zr~(gqf>J2**gE>WF^dDzffr0^ z$T`?SP3jlu@Chk41}QbBW#D~xj0}Ikr)7X=HW`=w2g`#u&x6K46#g$@OJF^~-~?J> z#UR3_%_zbyE+zs_27D}_X-FkKCVfV5zgdsbo>2{SO(SS^lAt>1h*o(<&`CR>`8Pph zBSu9NGX*iW1U0D#&KHD*h0KJGv5Gi2B^fjrr+QlR@oyKAkq{PU7CdDIp0j?iR#?qM zcrCNfT4574;k6H>{<-~a*v-hbn<>gfZFTuYVH06t;iIeqnhH|P4SyP>)zx|V&Wj2N znTk9vS^(PYuLjWwG3MVbCWhACyBQc5|NsC0hkXi*Cqo-(JQLKJVh43VjOCfc#O0Xy z7?oMs)bttknA!PQ#6`fDNq`1@Kq5@)YTy%SROJ}u89_}4c}6*ABXc_zb<l|nYT&G3 z2I|W&i-3{~8)$@%5j2)(ZpUcPXvZY3Y9=PmUMs#<Leq~&P+rgh)Mn^4VrFOO&{F%) zAmJb)A{SukD8bAnA<WOn&cY(3T<kurFjhj6OF1W_*M^Omg<p$Nh)0Z-Re(dpgkM0` zOj|>Smx)b?lZ%y!kDX1@hF3^X)O1&nsfaWmI}<Y#Bby)}hmew%ovMvK3lA#`6PpMZ zqk_5-8}ko`X9}h%@|qf=wv3ES%~7oUYI2e+tRg%-qG7K39E_|I%C6e{l5DKP%q*IY z&Jq$_8hr~G*?I-USlNV`m^fLOxkZh#Wn^t43}sjuIaI7NJT;tnd6YPr#Duw}m>79j z1?3g3Od{2|?UeN8Ihk0bw4?1ZD!KTXnHiax8JSr5IYHAj4F6ZL3$Ug#a4~>NJ$;5y zhD?Tf1_o779~9gt2Hmj>?jDPanThi;Le9<<mt$1bV^m>hV-c5QWHC2WQ5E3>wcbGI zA_<wBsen3!a-c<Vpi`dM`9M2c<(Qa2D=xtXn5nU|K{}PHU@<*VQ$QWmxdru4&BT}% zi;5^K`H6}NxdfJQaPsoWvJ1-b$!*nrl%E}_uYWNsKc11BbHTs=lkWe!&BwWbk#W*} zMpZ^NuL%eL{r&gs-<PXR-3==lBfT7TS=jja+1R?T>FMe+vGQ^8SjM=Ngh&c=Xp4)B zv5Q35OK7pMN=eu-hK3ufa~hdRamc9H*{uneG2oGxss8jw$&H^+N>RyGL3%c?G%G7N zuRI?scU)S6iqg*b*cfTqtu_f$-1x-bPJ&Q<F8$3JcFyJ7bBY;R8dkP>IZWi^VPa-t zvbMD^=H=sNVG***WQvcgwh$L%=g=0nPvB*hl9143<@HbaTP!UlWF#H5#l_WBh)v!? zpG^vM0Wy3}qlkf%K^S!RI%s>px*emr9B9mwi5+you?nLAyBd?Jpcsn~OYZ8UM^<+o zR#HCvZ}#6aTbDDcu$XQ=^LI0&%5tT+xbPnnCj4Nv{U`nBUt;ogMv2{wuGju*{d;je znQ{If#;0=E{_Td0_5EjHtzu(f$OetQFoT+_Yz*v5Y9?mJW-8`<OrYrlMmZ*NGZ33q z-HuU?Ri4qzRFBonT#kj0iJwtSgdH?C!UxLAY#=6Ul|n>ZMsl3Ljeua`zxfx0rKE({ zGHR!(c*I2{g#{}XooFwzmo$}P7jt)s4+?Y8Wpk@f3bQp<6k}!K;gEK>FyT`(_RO_W zVPz8$;$UZFWaiU1i->P@VN$pC3k~tH78DdWVw3O=C@<+_+!#<|tH8`BC&|V2<lj$5 zDK$yPt9$r_ICyou>Vow}l>K~kninuKGcgOwT6h(^$p{K-THD(j@(WaXvWd8Q6%_Wm zNO}fDMFhK<@$<7rOR<aFn_9^;iTl+D*~$qqGBYzz?qC<U)>C6LWME+s{m;PiniaH? zM1VmAyl)BI%3>4*4~{a5Dhh(IswnujPDLXzme<9BmjC|zeIHoNa_zSk3>OD7`vn#= zN;`#?|NG3yTOR7f==PuCKcmNghW|az&LQRH@U+mtAjzN#syV^?Zoo^s!FGWfN2Z{~ zXyS}wI5thOG(ax}g<V()xfFCIz714NeOT@WU5#%e6}Y_*TUP^hD`?D88Gf@VxUFdf zx!6<)r(1=2|1AJH5OJ+3=vL4LcpduybiFB`5Er98=$26jPGQ~y!vFr`buC64o)J7| zst!3((bz}~y$uhR2VJBHS^F=>!k{K4A_&>eB`6}L2D+6D=f<xCpfyW8jF9bEJZgWA z5wXvTok5sE9(3|I8z>VR2|@S6*`b}j&jQ)bt_9xS_6zK1jO}pHUF(d<d*(2Y;s>|U z7}#Q2A25hAm@zOgii4YEOrU!s#X+?zgRzkvqpCQ#G-3uF$Hc4#+CK<7I)zPLSW#3_ zT+v8enE8L2)xQh7=luIV`{F9Ws!5FOJL|5NGD%zgXW$jk5PbhnLqe4~fr*1J%*-h+ z!$p;G`M*p7#^V}-PZ(p*Y`!;}k#o*gMlHK$v-_<(|NU&bD^=9MuFQB>QG%IUK+4!Y z&dD{A{onnD2IYU2DEo;acjTC<t1+7y8?l2{X@Z7h*}=oNpl&m0+yQi~sStYWjg^OM z_47a-wNP%B9%XHHUIn=(>rCk!X%ioAOCx?8ewT!~kM8_Jo<Cx4y1~Zr@3U}%<(-vg zC-?HO$4VqfIGb!XziqymQH@cWu^xE}39`ore5Zs9XrB`k3uLkf+=2u3d+ixbk=dZO z94MQpnt|?iWM>tHF$B#(SM7p!XR$Qw{kLcT0zRSZ%xqkoyy7omv=H9{J|V_(ekt*P z<xpx5BMVrR>A?Pfd-e+PF(o@OvT+GCh;z8d!dbsSYmK*-u!?}hD`R1df0De6BK!D+ zgh1sG0|RRVYXkI-O6VzV@O~w{FoG`_S2V)dsfZr(pncY$-0lFnOc&$=#su(+eb5;d z1a@8jTY#osi0|J5A$+^AA#*tm9H4Xc)xkGT20(UWgWAugCgysKCT8GK7HdXRV<T}z z(D*$Qbm@w@m<YQ#XivQ&8@m!4KO-X_qc$V6u@SSfFzCQsMmZK^Rz)?YoV<Ar4!pwb zR=&Pg?83Yb4fFC?BDER?BCB+Dt0Dy&wb)Ee16^ExhcbV^`QEZXTISyasYu;~SlPLA zWn&ZcBBU4<SorjfJXIJ^{NXHNT;SlKuP7nOBq$-sBq^b&@8G~L#>{W5qoQNX&n(9N zN2NeT&R~kcziVn*1`-mWWv7f67#}cR04+gf;Z>9r4R8SGX~=nzLEv@2pv=n82pw)x z(`RHwFhOY$bQF?3Blyr&2orSvotd$bm^`B@f(e?V1C1;2GYXrVF{(1Nvc9(qj$LEH z9%8NU%WwYglsQL;jlK`R`Ak_++dy-jIhk{$#B74hb>^BvB+MAi%s4_picJ@ZirIwP z=*-PrBJt-Bqgm#^Q%pYsZ4(u(my1eShneXv%~~QM4q_}e<qWXZ_u)5Xv^3)g1Q~BS zUqaj_)J%6l<^qrsbDf3eZ2s1|p8RJ2j#zN~`<2OP4LWiFly;$GaiF#Do|tPy7zM$l z1e>xYqY`-Pgi#&3+66YSBLeDsh|94V*|D0d+A*>`C|?OL5FW@YDjhXVa&k)2+po`~ z#bu$v?4V&`uKDMHhJ~%F{#JEn89o_d2~iPI31JyN8D>UqWqZ`MCchsrZc!Eyt5b1x zRj5?pP~-ULqhVpel&WcEp`q$8sZb=vB+Mzu$;Hab#VN=s%(PD2A2bfd23ku5-qXO! zV9(&r5Xg|oP{_a_Y+}x+#sofTl9>^-Y*~#TGOhvYLkYu$l+={XKo{PNgNGdD*u=$H zg~h}{i%J>AL`9g`h0RP&7!+8<ganvChu5ev2?&`nD5#hT2{5UtD6p_G2?&YRJ2U1V zdB@7Z%FiLq;`8s7o|Z75u<%*$dLBVGW`3T4iWUD}K*iV<xH1`ok4<Le&g3%pVqxK7 z6Ji%*w*SZWmXW2du^^MVI{w1?*Vca)G3GG(eCX@@@Ndh%DgU;BSd5{JQH-`vJ35~J zJN$3izr!FFQ^VqEe}v;1OBgwX)oo;=c>gmnTQRdTDatZ(F>*5U2nq8sa{SxzkAv9( zCc0pERzjdTkA$!^zZ{PWYxd>8m29j!3M@hE4qyB?KaFYG%4{tr6BLVmz>fL3z2hmP zEt(r(bq_fFg+Qk+FbcA&sep2gin%Boi>L^TxFDmjs=1oFDT_FZ-M<e{{`Fit$ryX{ z=D(MWrmvXSs{Z{vxqKm`=o!#;pA8~Q{!Z%ozC>z`+JpWX&*WGG{@MSlDhhU!U87h7 zZCf$0gU;yVVNhc*0G;+KstnnqVybM)s0dy&23j`;#-Qp0)b_My1YZgaVj43aU_Q{G zDf5d<MzevDfsvsBhOA{Ye>P~!ShHEnX#Qx>lwo7|*8m=YZ1~Ucmw_1xLyq|bT_@K7 zyLY*P6EsJ_3vMq6i-8l0xiG7kkvX`Xs-&(8+RZ8|!Y(Yv4&I)qW-hD-n&dZEg&ag8 z&dByoh-J;cYyXz~yS9c!h{;aOM2sas?Dql|9+tl)+7@i~R#r@0ocss)Ik}jutQ@(+ z|7{i%V@Y7)VPQ#N+Vk&-YniKSnJc5sR(5tK0X>d?3m6&CDa}q*@pM)D=g-H@&CSin zxKYj3Q|)|p28SL8V*(@NzXc4847vXsSSPbFfKS^K22D~3t1&Qv<}}RZ7=^^`n9V_p zbqzrW#W6?o+G%S#@M`?~zaiGjNZZA}_n?;Q#Hb2=GgAvI83$!Qu1QSJe{H$BnGU-$ z9%a<%=I76U`|pUW?aRq$!}<8sldakWe}LAI<^OMBnaBn@qr-q9k%2+gM2`)$_JNOC zR78#$H0aN40^X4gnpOr0n3<a~E3zwtuI7TM0WB<NQ3g#|gLXojfsVH`F^7!gf^s_Z zRX%=o5laDQW&uUh^!#8meedK{W2@|F^HL?dEC;PXDLoNw+ej1DKuOaA#)X|N-adwI zu7(a#(GG_0|6VU>d1|E+>DA0As30$@CpP7@hrQ30qml+H`r>*#224zRDi*QU7BSYE zf>I`N%rmT8YlGAktyA^V(}PSDr7f5|BJ6vjJc`||9h6jDodX*DqJyf6gA=Sh0=x8r zgftyBHFQ}HP6?W2=Hvh>zd+}DFo5%q0D~lh5`!OjrbG<1P*e@PXdbi*#7G6a48p|B zh!w;zF*6b~2OVUirY<ZlA_iJ6p$t0JhMk#>9W?nZDk3J%CMv>WY@}jpqHf2if>e5` zD6ojJxC;o_{d;F8AiyTXW>8sS$R_mfvWb_esTbpZQ!f(}FVo*{DJo4{?N5LNRn4UC z3bVOxX;d~ba#NLOW0W|0j8TGJPK7ZIOF6+<D8O%L$1lLfW@yNE#mmG*Rm~(y6=bGK zkfEDO6dR+ouBwTtm#L8<tLVQI>`|(2hRRm_(z1Q0PW35B@>}kPmw1qZr?2k=ESws^ zYl8V1BpH;!<vi$|3N|Is_?MBmn31`ekt!&3OhLf|4ks|n9JE%GT}|CwTn=>WDwwCP zh89$y{ZHVaLhs=)ujb`7ePhbY%PPRCbxw;_;NL$zJ3U<oUB(~?eceV|OTKWH*=j~z zdC;7Yf#_aA7Mof5ayr^J3R0{eR<8QMCMnNo46i8<l&@r*&dY0R%FD~frlrL;O<qqA ztP@JRYuU*Av3yon(9w0!)z)Ga`uBy+SHVV0&WKl1ylU;*DoF`mL&hh_jcY_dPL9EV z0d(TBxhdqZF;IBef_7biJqYTxfl5VIQ|JO3TSj(uQBVRxS-zPRRkEN&MooHpaZq5f zw1}`YW9Kvw6=hShsF*PjZJeKJr?j1aLB9XLry|nQA{A9ZMTG&362dYv!e;lY>O`bv zgsY`wssoCO7}uf?{)6Ug7PB|7#xj81%>Y_Us|1=a0_SBx(4C$}X5gjVAV;&af_K=0 zCP~E21woEBWl^&UvH7!c({Dx(n-H77>o@#4%-GN9@q5$8Kh1}2LTs2V%Cu~3wEoUn z|Ks;2My`Lqw5_eRnQ~Tt`m(0OYT>_cn|}Y?z{q23_3x9GwY3&#+!@w)2c3h$pem>+ z2)^u2QBcvy487gXdf>0aKZV$4rUQ%*Vw)Y1<97k$1EvGbvHukQIyAG$BF7YXPMJZ9 zgMsB411ke3126dgF<Ayx@Hsi4YD-a)QCW~t&{&XJ)Yw#55wzydR8dt>S&$K#?Q!Ps z8%B?6#+hf&o(*CW{rj5H<KGUDz$_+_zi$}b|LtUSuV#7nN0Vvi-`9+V|N5Ck|GG2n zWRyE|=HH_~L5qWyKm_4T@VZ+_{sN7+DKi*=?nVOLv7-du<AKBy0M!$qWkQ1HpuHSS zV7@YhgPwg@#C%M(rDe2C|9yornCdpviU^CFhu2&-cB);zvDV9Z*JX3tT4r(N5M**` zh~j4y6=V!-hz8Mr4H<d%G5cA?v;A$+JSWVQ$;h)$<<AbybHa>2P{WstLGwQ+`&l*y zh9-tR45t{*G2CHz%<!DyCBs_=(26QEIc9M=CUHI{c0E>Q&<a;Mc6mlIJ|=cGP^%AA zE!#1vtAV@D;59*@iUw58sH&ORF++O#ppG=S<<G<h&Q>ORph+Bc&=K;Wi&R*}&H0$c z&Gp#T^_a96m6h1-Sk2{_>={MH&CKmM>>+EZK#P_cMMaqH7(sL4kQS%8I6J7-$;ZsD zZpUQI$gU2O6gC!TXEYV%XS8QxIp*D&obITt7;WQfP&r3M$3|LRFWHlejfIm<hh3gk zh?$L%k&&H4kXgA!L0yrFnaSFmQ9@W{x~*htfef4IKRI~;2|+%_XB^z3!qTiP;%xj< z?29=CB?bAnF)}U{)1RPkuFvJ7%^GB<W3DA4$|b>L#H^vK%xKFh$j-;c#m>pX&MzgT z&sP^Mpy6UK>(0TWpdiL0_Ps_%M^jRXPnlbrgPlp!|IZda3mrjb?eFS4%{ZlH#U+_4 zt8E?r{WQq+WL(IsY-w!4!Y=CXDD%%XfsIR-NBFWlmnL&1BNGV5GwZvRCwf?9ncK>l z+Y6}9S-WRyA`=TMC#x#EERUR|s+gjby`~R8qbQevyq6fSrL8EFlxb|;Oc55T0x<!8 zapo*OF<vefRwhPX1wmCYL4Gl24FRd`3k+41m_;N6goJfGr4$61`FK_29b_amG?=*g zud#}9@UwBTvNAEVFlx&wO6f@lb8_m+Ff#fu#>b1QsEg|gS_=E{bDD-NJ*Lgf$;Byb z#?JjGL`qxUOwWQ<mz!CIXQRQt3;c}i{M;PujM_}R>`Wyhf{Z+WYl3;$3>g{0CPVt( zLTn7I?-;}x%ot)p_Z6^0k{YN11X<P&-dzb^ZVlS(2AU!=Gq+<mHUjm;8O_ZY!EGbZ zvOv&G5olc;s8+LstjPwoe#}LnJrz?EJ63aWk~N3++gSQph2@I88XZ_UxcS)`Ih3-K zj5Ncw*?Dw?MZ`_@C1eey_&5c{nfclHI0g8Gxuuo4Ik;H4#2KTw#C7Eq8=6$4J^dpJ z%!`*WG5N?kyID>vt5T5ib95I`)>n{`HLbbu@Abb6|DIiKP`3{94$>Fq^HR2zQ_<mQ zwA5LnEvgdg9Bi&`B+MtKWXQt9Cc>p4!_3U0D9z5(qR+?A#iJu3!oe=W#LL3P!p6+R z&&Myw#=^s>FQ%(26CA>*VP&Pk$T&N-z(hpQ(bs{I(bm(Bky%Mkv*O&6f6w>l6dz}l zSrECrrqJ6#mWxAGL_<O*GH|w<te-TmgsVqc-D>E0&yX@sj=_c@ilKsmfsvnyk5Qcu zx}Div&CH%roSjWXT+GOxnOU4&T}_EiM4p*lpGl9=95l@X8U_$I1KkG%YJh@<`OU>a z4KRIXb9vBAj~pYj2pc=-6ee|Z&}vqGW_5ceJ4Vo@gGOR3dJCq@Ij#*ADDVueh;$Xx zbL5%Mt*WY;p(;0h;Xa-jJgOO9s<JZ{OkX%%&P7MsEvh2ar<f;XHFJ7Js8<nR*lri@ z>0mW-GZxHPFhkZsU(_d+Da}Vp&zWaBkE&OODoA4C3|Z$LVcf-jp%skh7tD}z&=Ylw zstolg5C~i6$TNdmHA77mq>xDnWTRIm$i^89X2?134CgQK46RJ^64C!XHMBC$T}H<R ztOQ~%$f&iU+{G;7z9rnD+nqsD8D1chz`Av%ywfVd^&9kz3|EE-hG>R(hIEE3hE9gX zpm8QO&|L$1jOw7;gO5=ioL=o1&DGdJI}pIjn?b{spjjR>b2DSmicKcad=+@nD`@Ca zj*%I(FPTkQ4YV0u4s<w@xe=?lI-{x}E2B8GI<vUBI3uedqc}Ur3eX56bi4+fdq6wa z?U>9N1;Nwo>L%)-)5Xor%mrDEbQq0|L<O1p7{x_IbhO!BSe%^$C0OK{*?dGB`2<~< zIMO)O<(QZlS*64!gt%B3*;Ki$^i!C)oVYn9Sy-5uC1sc;O&oY?Sy_0`Gqdxk$;nBH z^RX~8D~cGX2n#apv+w@>gK67eFP58WTT^bN>0bV)$7K8O*E}<grb$+cA^sojIk-4j zWE5FE*Sg0~2<4Yo<zk%r=NI2!J$7DJ&_ZqgENvz|CPrIEYZej4Q_SofoFcNUrcCL6 z@%&6IOe_%++oa_>IT@9hxH&*;0=Zb(*;xeH1ew^F1q76tlv$X$7#Vp)nT#x1jRIxZ zOqduA86WWTiu3a@i}On{GqbSp@i0w#to3*13l@%-f6e5XCd&VPA)n{SY`ufA=9eJv z0;ga}9zQ*HP7ZE<AtqHrSrv9cQ8t!_-zUGZedc9kVlm@nWCK;G4af4bMgPSy@W97q z_!-n0%o*Gn!Wq&T${E@jrZX&O*v@bOJ^}@bCU7f{74?X6(2*0M`<p~T?LyFb?4a{8 zL5Dzr4o<<xr?q-v&=v(-MnyqJ1<+yT4IqN`ftA~|tUn8!;w&_n7HA~M%#hLes~`lr zpbsa($beG{EI~*<VS$Fl-v*Y3I48sn%8QlCT>mm;O^b74W6-eBkeMNqpz*r_yk-hS zFd`g;#QcX<loSPweT)ni8Vmk0Fo=NSofR}j16dbl&*0Ax&ydeh556UEJ;Q#6^9=VH z-ZT7X<Y$y;)MvDZrvv!n5=K$TUOMRY!EAyg@|jIdKzl>MC*%^7UWiFg=m+`WOMk?e zM~QxP^I5?QX?{ai&>R3y9uPr5PLLu(Awmfg1Jd0?LI`pEEKo8ApXovZ!N#B_^%Fe) z#?~OE_U{2)>%UKgn491Vkj^<G$ovi3p#wgPNQeo1ND`PJsO=9}8JHlb7D)kk+|=Q} z0LuZ^1O`y=kAV}^a{~2kVGI8lk=HSShks1Wj98ZZy8~VI_wSC3MS#o`#)2m@0T%xj zKo<Vp`FH2f3D8nM#)f|lAez~NQAH-eLgvX68H<3YkQINRy}+P;E@&Q$pFx(vn8BGL z5Hu$TY6XGXIG}Ea93%KPYY-RIr(t9@Vi5xE@=#U+4KOJynVQ%!sVae_A*w}1_!w0| z^C}=i)J#q67@2w0B5ZwXY}6ubeXDK$tqSq=X?6n>j9q1nLOYb~owQxv+dKXB+Fr2y z0;7j*gqlsYFNmyROz{nIYxV&VEE+c1e#LV<LFDYemjlZ3=XeE_=g-wY{O@J4o~<l* zROF<v%j?Q6`(@jB%`W!Kw(*=(oKYU&H7CC;z-w+k10#dOe+H%lYz*N2sv>Oc!eXE? zST%EDh~tgq7?}<f#p^PuNF9(;VbYB+3Z1rUS}5~}iAPocoCd8yWj0kkI<evN+_|4Y z<4~Zn7Rdc?puJG?3=FJ{f~@MgjJ%)-gd8=j#|Wy<%t1Sm808q58<-mYHaIZt`s?=B zjrEs`{9gwdCz-zv@+x|2Ob5ht#F!4K>BTa}GS$2+{P*u4(_aQ<8^M1K0s@Q;f;P&` z3>r>+j0_wc{~7q4K=y<8PIG|DSCIXny;z|A(@qQwtg2vlu!7n`>bi`q>M*{b2<Vm! zC3RIbbtnVsKvmFzE~;im;^2yxRgRGfd|{9S<CK3n|8iKbfD#duqXS{@{OA79o%N@h z;y(vT2g!d9tV~R-P^O}qwld=;ZDqy-;%4HE2b8rLH>qeP9ALCsQm}UI+P}RpR>e|A zt|bL~_wM~``!7MoPT&C_-vcHlCMFOqV5h>kK+Qp57vlsq2Y~}zTn7Xk)czIh5^w;W z<i_y-9|r>~69Y2?CxbkL8iO8#BLf4YqNpOX5*xds8ncm^xiOQX5|gP31E{+sD#ETP zBBrWnWNM<UXsQT0JyTgx6?ChZs0ce`Fj-lV-Qpi3<NrTV1#FBngqGQt3EoZlxAWRx zM%Hs(XH%K}<`w@oW7If%{NE);Nx$fQ|Ni`Y%@h>gQEI=YsKhY1sKM>;T$Z&p|1M=l z9saxB!TjG@Mvm(j7==6TbqdPmR~jwfvd`0Z!gU$vy6CMz3d<_Jt3#}$Kv(I4_Wwc0 zGUXUl8FUyN8QdAXF>6B5_z%e8ps@u#CT3+*V<S-!D8;IzW~yjr3L4J@?L9Cy0-egl zY$UF1$H=TGs)#&0cllp0V_oTj{%m!x5Z?`p%M*9*tzqJF@nD?IIJL21$-K6+c3s?_ zhK1b!SlqH0?f)G_otgVL@z2}h!g*RI1(yC=g8vTfh>H8S@n&I$f{!bgNXy1GP3=qe zD`_z1RarPOa{0pgS?r)W5zv|T>Y$TYVJnxxJLlQO!Ry~Zvy7nLE94v|QSc#D<{}Kr zpj~fDYWj?Vtf0mIjG#kn8QAptPxbeo`rA7xLs~k+*HK=6hL32Fh(eir2J?l@b@iJ! z*Vk>H_V4SSf8IQYS}J!*K4Wb4kK+|%lwo4z-o1yBn?)X^zyJ5X3zOKi<fr@iI>>V< za@cq>->=)exvqZGrux1AzWqDcxM@a74CC6l22708cQbPQ`wGf)h%=fw7^E4T89;sn zkFSb|8G#4J)IfXhKuZSoLAOeRN&--0#ul{s4b<sS1;rt#++=44jh%t=9jI~33>uvU zEn5;}xmC2FuyDaYfs!DLI7t&dn+iz@W7{Axks#(jkYTYkB9r4YW^pk_PP=@0+LTL7 z4>^Us?fzYdY}5bVccQm9CAF7Xb3tK|e?Z~C6U&ON3`9gEjBRZyBotYhav@`6GhJgU zdeZ+~o;vOF#VP;xF{+j`UMXL>^524#-rf^^y$oy&0{_F<zOXSf@G{6T=rY(ac!N%h zVq|7l1@CXOV=@<$W>n{6=4WKqW3*>9GgoH>?Sf)tV;5%@78f%!XJlhmRTs8n6qjRV z6c%G+=VN78V^&o+XI3=_Ev92N6O(5YV|L+Z`WK^OC&10l&#A=Zr?X|UeWHOpGs`|f zCUy>G{~or6Jv@fOLhe&Io?T{N^~mzCy8f+yhlL-C1ZYSYDjP@`FipQA#4X0Fp<=7( z#;x?6(XyuR&cE2{N<pqRf`W`w<;{4w)fw~uO%Ri1wp5k2@KT9k=V7w?*Baw7F*8I| zlrdGxMo`GUHtg@Ke=}v3nOWFbmoVltW~~(v6Jy?F|F35^4`YhF3=5Npn2w~`zoY-A zs`@F5D2a)22{C&x<{W+-{I6RiEOJ(?GcPYAvot@yEo5xRfdi7}1sNn6oWZN7!FLr2 zD>CbWF7IPwhn>R!8cT+6W(BPc18-^tRsW!MFT!?=pyVMAT2{gMAg(1YuBD0jM<kO3 z=U)a+2_{x%u+TptzJ!7W1%DU{78E4#2{p&cWQs3JVrEEMB%Ub~+ss%8(ig}0fH9Rr zSeWClB!tWGuYpgfA)ufjpaDV(@i8{UHZv}ctFMpy7uyUz1A~DBw9nm`!J5Gpl-3y` z`*86(*qRZv08bG#P!C!RA`IKh%ZTthXqrliO@v(`wi&C_8-&28{xyI+@beeMxhY8g zW>Ex-F*P*Df;`~>@`M9~M0f(c!TbTpEB_S0!Nk}E34lMl!CVGL28I6&tPj{2K)1Z9 zfF_SYbphm1P!ltAMJ3RbtTGa52HF@R!lup0C<Z23AE-(FGh*aYk^FZ+QiY50pOKWB zFyo}BVDc!4Yycer-yp0eb(C?Eu$t6U#z|2oYJ$CLlFG`GYQ2JLCc=!9;Y5S5@V^FO z6SaT2U;-TekTEJz25klx2GIH(6LnCr0WIZ0Wg=+U+1x~34YWT9TyC1187qJeus0Jn zQCCw@R$>P&RRhi4g0@P5B<vUkKr5A*1cX!+SXk2K4*qMMr6n!Ks?d`EXtgk(uuOvT z+kYo#PBT!JWS6UIWE8(B!6&Jlqfz&7(}pt(#N{>Rxn*0|&1ck27ZsM(K8rR7#OS6V zT&%>YEh5Vyoz5-&Mnkk$i`Q6EnM1LLSD8^zU)<AMpIuc>UW-H3#g<1i8f_wo5mX<7 z&sGoy&FO>gU}I-yR}^GaR}@q<7dBU9Vfc4Zf>Hb*t4^QXzsrpJ68~N@{?_S}W7K82 z_;;85zeKrz@8uZvncU?V=gTn)$}uo72r@7*^l&n;lrZoysDf{-w_)&L2w_NKNM<Nx zsAuS9=x3PAu$o~%!(|2rRdY}dRRZm01yx9@=FBGQYD(;EqU_8f;;@SXOhF@qO8SiE zW=7`Xpmjo~>gFcKMvTnj>>|owabqKS@RkIK1ca>y;+Pp5aWV?Ci-7Mc16_eEW{%E- zNP%kuMnh(hET{?;2F+!P!+Ca$Mq<M3hM;;wpGnvhG)QJ7E+!6Ysw;vUb)ZE_4B+_* zW&r^KMqVyXK0ZE1UQRJaEp8rO4gn5cMlNnPPCjl<&fjlDM40%P1O=J+BBZ34I5@?{ zIXM`m_DD){b1{jEGI4RoiHkGw@QRA^@+63gGV!r-iimKs@i8|3yDuur#V)`kB*Y}Z z&J`yt%*`RhBp|>f#KD~;B*Y{l%p@Sd%fZRR*m;bfpI?NJk&lmGgg=>&Pe4q7k%xy- zK#cz?pOBOgBO4nJ6Bj2p2Rk1VOWLy1Kks;jWI_`TGs+2?T9z(b@{x&~i;s`%@7Ir9 zye5~KyaYH{SvdsQ{_bUb&B(>h&B@NonA1?l$ywLH>304!C)cU-od1j%Uw?he&HeT( z59^;Vyu4rj@XEjXCcw%5?G+p6KQX4<e=XnGxrM$l)(CO?|I_)x!7coS@rp3F!auf8 zqN1M|e{u5i{uN|;^^fU27e62Od&Ym<e0*~MMBZ=<2ynk)e8VFk@Q>p;uaFRLQ7Kam zGe0LgD~HhEDWyx9gm{^o#krLJ{X8JH4Ay2~U;~w-ybRLd(?%H>6jaPbMZn8LY#GJy z^H@O39-&H2%$S53Z!yj(Klg9mzl4AD&XqIHA;90sxPUR~98CQ=W`?kkRgg6zt3v*) zLgFxLA#qr=T+3V=AnF=i%NRI7V>w_y2s21AC^N({Br}vUG%$29Fo4cn04)|qS_~}C zE~p5)E*ZQ4+!S;+gqS$EuwoZsV;2R@>8i7_Gl6mnXv+#{=f1d@C}{5^Xdi?%lM!h5 z1iP3lBOALIqnSA$BO{x*nYoEMcs-(;shYY7JF}TNcutOuosCsZ8C1NPu<nu3fFIo4 zpphWc!dSt@^Y1thV=`zH++PN!e~QM|R+Hrf_?Q^k91Ys+@2;L1$<Hgn$jZgS85hdO z$z)>gq9Vb|%PlX;D9$6q3EHF2WByOtB-GfGv5}vbk&PX+F`1Evv8H`0lNhUyv9yI8 zQ@KQmj{zSGOAB~>4YaEcbV9U-jLW|cSsq49o?k*N3>F%U3w|*$1xm@W8;Z#>GBGl$ zX(&oq|NF(x!^pxVrID`7$<M?TTF_A!G}}mnUsRusiJ4Wd+I7i4X^A$C2<9rSD0Wq5 z4Hg#g!CGQ`jEsLX&7>IxS)Fsk@-4U}WEdGC?G8vfgTxW2CyzOfiV-)$qQ=6;!e-`X zrpBOwbzx&+@bP`jZ2XMMpmsU4GPq%<tgfccY-~y}lr!Cy%x_?4W@2GxWMyuczr^j| zm8fJ^CJ>*EX+qHiCRRok7A7Xv<R~ISjJYBEZ#Lso5h(!<31%hEf6`1-v$OwsiAafx zvMO*gDgM3BDbFS<DkZ|WEgM{4BKtp>xU{J%s%WZgZpUN|+EB$L&!`OIGeZJ_osW^9 z5j4f1&j=0_VP=B<XVhhs^iF5xVr67vWMN`uXU_IvRCYOV*!kZ}uXGk3W+o;^7B=oI zpMUpU_8uZ42wr7nEo2wwU}0ln=VV!!mBlE?D3zT(pIw-RnT3s;XMT3}zYqVOg31~2 z`XQt|Y5{6_5|cZ@Az*531i5=#T}@e0)EIQX59q`hQ4w}F!hTj@bdT-y(Q@|pvNs6& zHz9_RwY<Va-oj3vI1eu87jFm(tdJJY{(F^Cf{{l^F(^`=ADf@F7>tOERYpNYQ*&`f z7Vu^PF%g1ZU}^ZnZ~!#u5wM`3U_k*9?q)pj@4x|&mWBe57SQRKptEs6<veUWMwvm2 z!JNShbfP$;sj?`msj@7T79|`n%A(4qih_*b9m`6f)d*(7rpBO)5SgIOXQl?wnne(1 zw!vHUH8lKVVCv20n0Rj@hiGzxznIdVEN|~DZ<Yomz(}b4YH0Yyz;yB7Vrj|X+}vPE zX?sTBh6bsBQs6rnL2(6Me~Xm<EE#;jE7*uAgBZm`LA!fFH3E1q52){BZpLV2ZYBWQ z6$d(CMSz`6Ok7Oe2z2wO9wSIZ1S~=@W*Ogzh;Xp*a4&1-6B6QUUM9e}MP9hEQNT<@ zlvOY#MUYigXs@(Lc({<68k4Yzi7=C}2obT*tj8ht_W|g-$mQU%;^q8*-6iHT&X_OC zCMaksTK(@(wWz58{}hqfKe570DyAZqQ!GVHg+Ogl^n3~$btSGAh4j8a0}7yFMPpW2 zsDV$sG&Uj_6if}En}+{^N#-0-u<&vI`_9P8NmTX4+~8vZ(aYFi;={xt_V)nD|BPHw zj9i=yka0QW^4FZfn<1LW+-k=Nn%@Jh#0TwnRRbL~swl?J%*UwD2pV2cS2MF`G!qkN z)MGRkhNuNesuT1vV*-a1w=p*}$F^-8%-qJ@QXG%?_*hu@_#UB)|10C=XX;`S<F$v< z#3X_SZe|WO4k_->pSh(t)Hs;A8Fht)g@ylJMi>9f#w5ne3^JOFNsRZ;L0*0)21W+; z|5>az*%-j9g+<wv*_hbCm-lcnsw;{~F^Y+snS(ZfgBBWyim>xBD(NwThW|jrN8qj= z>&?_e$CHcn1A=56GgFEa!lfCdr6MY;{8yIsExNE}(>^P9NoQ+EA$cn!Q-@27?3j)o z6Yu!<X`z&^fuLzo|3gN0#=P^l{!Rb){#e4ww;qfdI}d!ld|-Y(BMXnZLV93$RC4sL z>(F_8@VZoH1~vvR20jKM22ln{&{+k-jDo7H=IWe`s-S^y&_FXMqqrceDx)B)pa^6L z9CX13WB^?322=FEP5-tYJjiU!6#eh>zfHc30{=ez`_Rqk_jf7F*@OSKGV=ai%51Fk z=d7rX=%2GnO3cQhI-<<RN{spc@)*<at28$Lxx+YV%l)=(+qT8tXH5T>_wRipBa_M& z#!3HXYX7~bDgO5!FE5jlxF(a5rZ|%lFYn)b;-IpL2}E!(uvRcAGekksB&Z9frmU#V z1RDJZH!VR;RPY`EAyE-FM$jN6sF4Y3u7XB1jO19s2bF+2;Bri$_AF@Sm$H%``0gx@ z{LVMaS@@ZMyE8Jeu6mOf!?UC`-q)K^ee*I#iN%b+&a9~EOc$`{arQO$^)=NAbaeC# zEOe|~zM{H6iBDdQ%gM(iz{^tG-_gl4DBr$n71JNR<5f#uGIBj%nzzeLUAuUZ)vP@W z|GinvCh_k>RbR4*C!eFUnW>AGOHh!DR)2YAU!s7D4v&MAv85|StQX{EaG4B_JAMXn z26+b1P9Jjy2K0>#Dhll4W=7)XjOJ=4=IU$$3<~DzY)b0vLJDT!dt_O~%>>lh#YC7+ zfp-9)Y)4=^@ULa{p`cYkhkk!NBqMVuiphzw1|o0@dMzw-%Au&JLo#d(SXK%1MS(Q^ z{s=Z<^}m+C`@jN>Y7ZfrIS#Fc7zf%n_Md^Bf%Q9sB4~~ZzPL$9#axh$0d#VVf*okc zUmdgym>tQkQ;hM~@BX`+w)!pjM%sUO?_Ot&KgHCr4Z5GgXWKo-#-H;4{^<T&@C<Y~ zLfY!LP0tt;bQxLXfBvfng(D*a?|%lik8BJK$qWp_W<ushh9c~IEa1f?;H~wHpbhw- zflYJJwh}WneMWO}P~#CK31)y!&yZsTaqXD&So9gyjKvJ)IK+jRSincx2y@&x%F4*0 z;b5W2>gi#W;cF)#pf1BN&CAE7sjJ1uo1yL}BFv~RDzb2aqB=8+n7@onx=xU=u)LCp zzG7scyO^krrv!_FmZ2seFCROXhOWP%i?)G`FeCH5e|i6R{@e1pm1){d#;Qg}CJy7Y z@)=W?xf`hq$O{S>Hy5SI$x0e3O0lsO3%W^38{{j<Z{Mm{sHCXsE+|;c=OHU=F?*+j zuDpn%pnz#jc}+oju&tmVFSD$YlTm<IT1J!mzrX)do=y3|7{tH{>L-HJ8xMmtg9bwY zLo7oMLnT8e!%PMSR#7z-b#pOsb1`vtF-CSVadtHUb8$9y&<b@%aW)oqQ!{gQGjnk> zW_Hj9Gd9rD9dR}#b#pa!(5h`v(gewxtD6~#vxAIb6a{GpDN{F7VGv+f2kAF80ckJ? zX#wj}Hx*-H5I}6wVS#Mg0r#jun|MIW;F+^7{F|3$C9C5&<&L1^-$%h>(w0d{mU6;D z%B&n#S^wr;uy7Q-GsRJ->LnlF3wh_AmQe;KF(w94mOGv0U-0q0RCL;D9bur8qhk<Z zz0>KRmZJqoxtg+N7Gna7K$4}jSg?w6kg%Mkn5D8B$Px?3i;M}3yzNi^9r?HH-;pQn z?N1nO7^4_%o@~aFNz$Cy&aY82G_qWw6UM_NC}U%yxP@`n7DWpSnUsRue=n5QoM&@l z<O$PRVQIt^9iSDa6%gaQ$XVzk7uQE2=S99TV4+x_MJ_@gxVSzDxh(QwQgdSB4%1p` zp=F`C=KSB)|I)T7n%Kys=N6>MSXd~kDOzY*tkeqQW^!UX|Ca&mvUX(GGR?=fIv+GA z2^q6wXAoepWN>B3WGDu$Zd4Tk%@i9OF+*uFb5k~DXiX+A$|foTCghlmjZ95IXBC2v zcsDgsHxo7n*C5KEwhk-kvH@F0V<RzRQ)Lr#Wiik-0-);ASX3FZWrPtn8Dpl3HYUO3 z7Mq=vrsC!6tD?5d&(g>ytjt<RO|wwL#Yg)=f}gaZp>GtIs(U9BQztXyFF7?+6HaB$ zOy(XI8x=-o0Tw1!A$bcmhkqvwJPeK844G0OlQEE4mnTm44vbSnL!yjTYh`7N!i+Nb znFU=;C74yybe)w2_BcE6vC2#6aPa5(OUQ8kOO!TeY}OMOH~3d!#91jC^pL4ENJK(j zzm%Dg>87fgwVDLeEfsS!RTWdSV90b0{Onma2ABT~Y<t*1CsznCfW|R%7|KCAXOxvh zMU0J@L34m01}JBMsweR1uN<qWfT9w3X|gG(BVh`z@r;ecjTn_dtLoK_K}+pbK?5_O zgKUjWK{Na8rl8~ajoCzvML}1C35pm)C%C|MAye?ud26Oy+gR7slr!?GXbViL(NNcQ z4-0eG{WsOMD$jA7v%N?BzMh1jB*ty`SXl0{FvYs3+eI14axk$=u!*WAusvp5&2PyU z8gBddgP)~UfWNhsSV~4JbBt}!#CFEBr+B!uHS0HvbEv7yYl@4?=>}W=yC7+q?X}c~ zMKd&4hDBm!VE0b_Kl^kenG)la6r=ynj@)=eUBf0J!kRIjg^6vSkD0P&%|4cYlbc!i zO2WgftRui{EkNrXKyx#oJ3kmW8I_sY*wvYp83m1Db9LaRwW5(2vnC@~!CVOut=Scf z?5RxGkt3W*gz@vg69zglj28cd|LtM!LXIXT2Fw2pEXUax7-Yfc7=aoZpz$uyEEs61 zsG1!!WGKtbh(!QY{6miv0UvV)IrIoL&<r}h8nk?Z$=Ha6*{jIk#@NpEyDp=&D65DZ z6Q8J>n~R36yFlRr#&>i6eV*swEGo{*sv>G^nYgLJ$ERV_p-l}wCS1H~np_UCb8eK) zW8`HKSx~6#?EkO#pM;nqle9?P=lxroY@)oCwE_zD{vG-EWey*!s;G!K3olf=Ps66f zq6`rY5kBGSzVaJ$V&*U~G6?-=V0*{L06sw)w7bt-&CJ|H2sGL(F2^PhTD8t5Dk8@y z3Ykk$0v)@l%+AIRT4)a*5eE<3=|L9S>M?`X)7vqc8=0G#f{(BPO;@mk1Ibi?k&i=+ zmr;;!XKnY+)>gwH8zUuo5gtZ!A!ZieaCH?<Q9)5|0Y*k9R%=g@U~>*87FLIMrp18{ z{2Y7^9GYu`lwHa~97W{0twmV4n3xPIcv)FEggiAFSy-6GnQjRyidYGV+3|EUYTG!O zi<(*axg`f!u?9QyneZ^OvN9H(%+W657f}$EXJTZT<tn18r^O<{mMA19%*w>V$f&Eq z%r9l8s-Z5+B*w_Z#Kg?K*N$04)0u^n(M*pKbe$(?AmG0p2LtON@cHG647v=Sp#Bhe z-WxK5gFM~M1j@RY!i;LlN-RvGBA|T%dd%wV<|=|FLZE%BpoPcm;*bOJ1i-CUF(wxy zO>HM9ZB1rLV-0CtU1<&DH--=qrZpz&AQ5$wf8XTQSN?mlSX^0A%D_%Ki1V+<zk7!n zeUENnw7kre-&tyYe3}bL!D2?4l?xeVR<m#g85wJ+8~=-!(b1Kb(bZvmk1nu^W!Ar+ zbNsxRnYma5nd)zyW|UvaD6_cb<zM^KtKnO7ReL`%%6;nX{mj7l|KEQGcF_6Jpxcc> z=SPF4Pt;XG$FG5J(cxqSo$3WX^_lI7BHMokR%t##Zr*>^pM>OjIfccU6MkR*SE|a) zq{P<1FDSzLRYKzzgRB4t>&|~S#aY-DMHpjQl>a0z;?vX+W<CJwmNGE?{|mO0he3)# z0es>TBjlK6RYuT8572B0)J{fWMpjNnWPAU9{C7=AmXA|d?4O1zGqW;VgYv)AcYmcZ z1~A9}Q$pB&{ohVeu<b_<@@cAzFdq>8#mB1s=V&KW{h!Au<&FusOaN`eQ&v)e^lObl ztMWnH9l<O5+1NqD-_TCJxtTm8Byw4y^%>|2Hfu)cu>x!iRp<UanX~5Ksa$qOj!rIq z0d~(T<r#as0t37DW+ZKK>jYgt{m(&4O+#I-DVtGv@*GB)bANxq7VkX(uh(Oi`F8?z zZrH>YE=i6qPA0DSjKHqF7xs1qx;u5rscWc7F&+Tj#NC*hUv+NAKiH}|(6IzUD1PGy z?fYd=;A0YyV^XkV63}Br*-h5;@6X%SX|QH^+G@s$Xp@Jm3~8(1A}jj09b<mb?tcT@ zA=U<lRt5%EP(20do`KG|G6hZ5fo~TVWfl>a1K&x9rb1oN#7vJxU5^nopayO@7=cJp z5zwl0QDM+^LW-cWNZ3RjR9%APjL}qp&1IXUvr$)PgN}rhl8%*tA|oTO>fcy3UPeY$ z0S6-uNeTU(dfKbB#3ki5&G;1=L1h#NA1A+!o{EHo-cCKOm0FULO4=6u%8ZP>QcSxg zc^Mg%g#wKwC3QCFXs^+hlvLKW;#X!=60p%%k!WCN*OZi(W8vZwEoW>O<zivs68+cP zC&tCbC@U|e!_KZHAt%Sm#U);0$*jw)CvBvpF2TmdA_JDwk&=^UV&f9+{&zr>o0*wg zl+mGEl$%*x4Wv;=N=}B6l}o(qPhhzy7dw-zoRkju>?4W)4J`jy8yIvLAm>^rfzBus zg&%GKT9^n~stsCv4{A}EnVV@c8i}#|Q<X4ckz!+3k<5`)=~tG@ky4(VROjRn5mA}X zXvBD5QiavoQ`UizO_JO6cY~ygiX_XS-*zCH@dJ;(Rb^@4vWhZIRTXeQ0@RKK?Ggs9 zYLjLFoquo7;LP9-x*J5%6tuz+nj^p!HlwJbsj#TBDTro98z+OVT7YILGh@&#MWAab z85903U;<yK1wC_a!Jh>W9<VX|RRACV1`%WiuRVpZnH(NG__F{sXo_^eof>09Ljw~- zL&G12h6a`fWSM^q$ULYra6cC0w+04P@H#I6HU&@^s)ACo0B8(C6;!V(hzWp7Csr{L zc2+Z%1FgGv|NFL^>EDc)y4KyhTkB#NGnha}(Sex%W-u`^X2dWtfRyZR<q_Kw29gTf zBE|#J7Pdu9LTpPIN?uiEFlAs+0aZHe>SiYDpzYnDT`HiKIC$qUc=!X<GZQmHZyB*N z)JBBZeq>_$Xd4nyTf3o->7!k6L~U(Eu-!+dx($rA$W5ic8|tho1o#9htm-z@)<&=k zR9Mz-sI{yRV2`L}et_I=0`(mr`=13F^cn0Jd>A4aQW%OE7#P48eSk-M!IKo`W{l#X zGXVKPtqtfffPfIFm=p&e04WTfL01FaG$zj|CL#_xF%r%*11;SE%?emE8mWtd=FdST zs*xCY9v^bNo{_ki2$QRbfn?4y9WD_`UT!TRrN$6R<{f%pT!e)kBJ=nD`~B|`=*U>` zQLoz;ItZHzyZq+j;pK|v<m8g#isHJ%Ex{ed#l<Pj8O^C6#0S2SG=XoOkc^O!jL`IG zkWwzLC@v{3PUcxgB3wGlawHA7ST#Z#mADz#>V0+*HWhYQxD9+PEyxZ=InbH3kq*Mb zE{r-*jhxY(((gGzBqvy8H`we2P^*N5Tw(Tea!G;D{D6cl3xfzK<{4F4nH8DP&a+@N z18oBq7FSajXH_+4V>cHDZ3-4QXBB1_Gcs2fR%J?LlxLLB{Wq5ta~y~zcWT-P`?hKC zP5(Xo_t5nHw064>X;bAG-MULkzm=ABGrBQdxNza$29^da9o*j@r++g?K45g_Ip<R| ze}0Y6Ii7!eA4D?$KHZ}6@0zQ+x+|lW1_S7XG4P^E)&>UHo&rzsZ6=@*hD8jU81{fl z2S^Nqq7`&F5U3sil~yo5=oBtwKDxXrXayE%C6+QFm4xLLO-)!?WEmArP3%}y6j<a~ z1i=TRfouRxaTtk#_@HvhmXQ&1|1Eej0g1`v02TogNWy;)$*3_gsYx^a2g`s7BxxMF z7#sfn``7fZ>F+;5<AC1HjJ%9?j67R<1B?a127n1Q>3<E<YM@Inz+54u+eH5rAubk0 zFej-=H#SPE{Ut#QV;3)11`}f{7q6g+kGHRts;ZT*w~xucaD@3GjnZmr(v6_8H}HH3 zcuWa&x*TW)k0k>GxJ-gq0K#U*ilAi%Z~@Q)I?y@3@FV9~;Vh;DYEo)a{}`myezHq2 zz4*@nI=T$Rl~Q9|A;JFV=D!6(e2fa9gNR`)mIHqoq}2X`s|qFt=1lRw4onCBG=Maz zNijL7Nij2sGnzkutT+Ra;4&VP-((mV7{o-_K`Vw>)ESjc8P$aB8O0gRjKG47W^CKM zRR85qTd??__0E6OwlZeb=r3L{jd6lnmY3?kf>(?a)mRd|vef<+Ok1#6zXq&gC*x6& zl8LHb*{c8YUolQlWnf`o`S*tH5BQEgQ3fmUO-Z1#&D6xqNDO>*HmFW9HbOdsN{-dY z%ouc7sF=8!xRD%_9jiGTyAY_RS64G<Hq~QP2ko!}?ZOjQQ&%$stql+a9j^zfT+PkI zm^14))z@#TXZ%(d6<J>&8CCbt!T<M)U~BDY_h{otnNTJdX*L!qW%hhldvO;vcVkam zuVa<JL$aMpGyK9>7&#Q#8Ck;pGfEvZgMU{_YN;~|FvmHwymXEeRo7yc2`(=W4k;@O zfztneFwGA4bcy*JFRmoU&(6rgD8t4qDHRPm&7YZ#TR>c1Vru%o$6E@O74(e@8QmC} zI2iw}D>BkoP$}BND4jl4)kK<!i<xPgM_QW4UoU=X6VQ5zl>ZHEbJ##_4AAW(lAu(j zET|}`EGTRa+VC%G&M3&J$PSu@6=rUj$Rs~;;@{t4jBYoXW&Zj7+jaBizoJ|gzkhy= zn?U$4$3JH2-_LK}WLfox`=8&<n=EaNijedh`0oen1~wiBF$Qf0dj>y-R8T3!1PW?! z1IirS0|qUXWmIS5XJi2_I8ax!V-z<M7XwX;F@knIs;e=BZ=nF4?#d`G2D*Gt9dz-I ziny4#m=LQNI~yw-yE*7oQFHKSN^pcRvof;ssGI#)=4D}IWwDvgXw7dZDIq<L*|6f@ zTR~-E9##$^EoI)lZn`1jlFXLuD~(m9_*Uuju?i|1FqWP6<B<6q#cFM3@vn_TT9eV& zN`sSGjcGQsEdRe_&Jv8`dVF$nj9#@yoHD8g)7Wm-|GUGhz`+@(#V^Xk$K|!zO_-aL zOYMm{zj_3dlBAK(Ru?8;Ss^7(?SFgBu8Hu8axsefiW-S(3o@!ZNwbSF1*VAzMlgjb zOKZpSb14h`J$OQ0gv*DYgNaQ<OkaaBb+r?lu%P%|&^dRYyK@-8Yiwb2?T}WYGJ_8I z9vwwNMQ{rbR49P1<wnM!D?-JL%s^*4h_Is^=b&iH!tk$wv7zBFc&7#{!#@TlB>ab= zLCr*st>G5~H|uFBwT6O#pA7*8j0_-6{}~z@m>IzO7~u2rpt<>mKMu?XAO{??IQ%}K zD6htH>o<6<DvLt{0}F!|126kE@ZGEO43?nXH!9%131|b2xso2E5_A`hIcUM3IA}-@ zd?uH&66hXgP_xlYMS%q@F07;uI*1C?pGFa95z&}b8&sRY<Wt{N@69YUoy+gdvp0TR z(;5DA^K`tJ5xTlQ#fnLA8dnQr1!DtaMGM!of85-g|JDDq_*cJ~n_F-?*KQ^jCMhPC z-CWaoCyOZP=qQNP7#SHEO%vkf@{Ne_<>D2Z#wfs%nXF@Hr!!56hpT1Mq!un7p=pf# zoO9>TpUVkSxa-WBT_A-F47{K@0yfaT6;Q52%u3lacryeuBr{|)R5LKJfCh3!#Eev+ zG;F;zu{7wsO7ICHV&FUaz^ku8VxZl7qR`XK1fXVv)?kAwVQ@zRbbWDyH)wqX<7qJU z4?;16R!n$jL3vOLRgl@+C&R}l!{;ANznT<eD;_I@lp5Hq(>^A@z_ahH4JJOOAWI;o zdNZB|bN)dnC=W`Z3jS>X&Avlt;+g(~wJ{z5AD1l!?xp-&3KnB#_{Cu2<72`GA{m$% z*#0xHF|si*s57{N$3U1Al|e`MF|+eAf?7kM^8w7P8Nqk*fC~`NVhiv-Y<3Z4btQH- zX7Ivj(Cj;SMY<d#>w6)w@PA4=l4`6h=1i>WlD|bIm^qb&R5)4Hnp@M?7o?d=a5FNq zu=vl^3%FO<9Tk-##1zcP{qLrjEb|LiU0J3urFw(xLguQFihnMOQo{e1@k=SniCR1; zxNo7#B(9zrKi$oqjhT_zdUJN;%ODLVM#cn=zu&kN#aQ>ts!0iJE`gQdQ`kVOeDxS? zz<U(rnAq6CoqRh+aWPdn7EtL4I>8=%IS&)K5Ct7*%Eqpy4mw={e6yXf9J3JUq6J2X zLNg&VJxFnDY$V1MB`m?ErY#zioNUEnr|!~b*TuM!Ti8rqM8w<0INVIfQbNN<OTa*m zU0&B-NmD<VF<j7GP)|}$+PNr+lTGR`r>vE>B)`9>ScI{<va_+Al>@hsvX(fDlCGnw zj$tVCR@>Tn3mgMyr1`5bDz((8D+M2v)SBOS^U%Wt4|$C)tI#`}w|Vi~x5^6|{WV`O zy}5YZ?oCUgDpj>NGaVFkT(#@p=YOC7ZJlReE+F6KT*t_M<MOn6Q#Qw5B@ts#{R8S( zLCz)PVBlwvV31+3V*s_985ot#>>2GC&Ba-n)sz+4SyaInB?%idG8+pkgDxsz16_{< zYUP3!=CF$yi<y~&?q~+h0GP=$swyk7GaH*5i-{Yf=OFg&U3@0YEIiCSznZML9sYe` zVl-#uUnD41=Fz^MkyUkB#xkZEt^w6^7#SxSsM)B8xrvE;<u}b`>M_(Y)N?cAXFSm0 zDE4ig@)cJ8Sq(lWKR}7tgoDAvhe=7bkCRJ*%e;b7-Hg{i=AT!jTe<8%CZ@)}bxchH z(q(aJ9^xvZateyv6O<S$QnFkml|;o986`PpoBiFAAm+t<=r`CfRuIV`09tPjKC_LT zL5M+$L50DP!Ji?Ap^0HC!(xV=3|ASRFnnf|Wz=P0V1!Jun5i0@n(479E3v}(Cg2kT zjg8DyjhU6r*_GAVm4%JPRY93Y8Fm<%v5~lm9V7S_ZOD~wpguO}a4s=X5p^YX6HxaX zH1VZoYGQ08Zp^L>x(dbE$Q)FftAkd)8jFjtD}xT10Skd*z(~xTja`k6UD@2s+?d^t z(HvwXWB?hg2GZaYM|Xx9k|PlMML-6CoX-Zn5d$;|0XjcfS&3atTp6@mP}$5}O<9SL zQ2?|m-ds)HSWMi^+?b6WwEqCy7DrnC%QT-?Uqn!hvB!>)k&&5=lU;^MgvS6R;vgq1 zAtNIBD>_`qLcv{~MafhrkcrWRMSxMCQAAB#)<mC=laWzHR*qdw)@u%jn6Nabphmco z1iP%50;iyMh+K{gyDSqYt1t%#hp4bN69==H`BC<KW+_QI8BRIrcyldf&2C;!F(Cm9 zW-)eSW<K#VoHAna8q$)Y(p)lPx~A?HQb$>MS@al1)Wv0t_4zrNRAl8i)MPz-`Pjt; z1ud9`xlCC2#phaRn=*^b%Bz~I%8OM`{5@ss<a!+=ouVQgBc1xmTc`Y<2o|f*HPXw< z(lgSn0EscSpd{321u;1rW)@aXb~Y9-1u;1zO$~W1jkW)NojiHs1S8vG3pSNh9x*8e zDRpf|W>ywP5iS-TZWcpkK@JXfVNDN4HYR-zVRlXq5p@q16G44BW&tLBc6}Zlk-AKA zSurs_Gmdz3cP({sbtaQEz9v^iQ9)HpK67n3C0=U|TNAg)LLmu%C8+uAY+%!wCDfRV zGWas$xy3{Ub^iSl7B|o^^^-jXIwm=<WW}`f^l2+f@*rnR=jG4rijVJ_nV&a_g%3H) zfX{P)lqXyag5cYOofyIyk{GfW3K?n{x)^4GR%d{YHw2v<E2b)<4LU%U)kIC3QP9}P z9DG?jD|C(*l+Hlu3Y2U??O5<-e(K;v1)l4LreRaiL@{VUicye{k%x&@5mBeBf^UWw zHa9j^HicqFWAG{|kaeaQvwDn{DzY|$g0?a$Y#$tiMeKhDr})Rmd+FN9IXW^rXqwB4 zN{h-$C}~>i*r@2KatO<a8Hj7?xEnh#im7TE+S}`Ct7&L>rKfpmv3z%&|L@4ZmH$Nk z{bN&<Qv0(uYg$&;G)ATg?opBMeHV6=7Z;cBU~CV_^s%!@bmU}I^fmv%Veac|&i=#P zm+8B)qSPH}d0vy$BCptgo7IdX8GT=9=!kF$@d=1Z>!_M*C~FGvvhj$CNb6`g*lPN! zIvN=`tNDtgPD=f|orzx~Vp3y|ff~~hkfm81jA0KR{9DCo5oO_J`EPTNfS<m}zs;>o zD!+Lw{QN9fzF7GAf$9PwczMUfz|FwNAj%-apv<7gV8!6i5Y2Fo;Ss}6Mpi~nMioYT z#v}#?VPkbhb9H4=(EPfpxT&~_HlwJqkt&2@gix%;>Yz*3*_G8rmDQC&WuLI1vA8*- z2p@}*nzE>}I=iBvqPV%Sk*cV&AjlvP23IQJBE#6+SlrlD+}K=H(bU`sG*%+VWCjxy zR2EeSAtiQGWl>Na1?I8C`=QDp2_<$@MNu_vMi6EP?-LR?2CZfm1(D$M)y+YU7GYzT zW0Yl71|JCla*7dn3Jok~Vy4He%_yoYC~hPMqCidrVMfqtYmfvCIz|sXZ*I*f3M%=< z%;Xr&McKfK+tfr2bSo=pNCzw@$H*)Q3l1ey6Kh6MB{e=4@YxmS#-PwKEsxY?a`bXr z+}Fowo4i*eBv_MCQ7b4=``;@N$#^<a=Z~0EoMl{#WV@tWNkU#$s4vqDZb2CdbqP(* zx`5#S42&!RLFaS--Mx8p#*`_nS0HICU(#IimT;j6lPnh(qqw+(W+<nmh2&$UZCfOF zivM)gSR-Nhw?|w1nAl1`NHVN2mfL79{_lvq#YJ(KS7t{47BhyMn_L#PmS4xg!NMeH zDZj$zudalcq>!V8lB?q^1FL_pB}JtK9T^!}dBla>9A+9?F$vzdF@4IEe{Y?bzNgjI zDJdBmDVb<Am8&Ql8Y;h+aHy?SlvLGLl{D38EK{-apAu8mBGo48-Pmf+uEj6UBgiJL zA{&#Kn_R>kmh-pG-`~*O%rEbzjiRfDtS#dwSsS$+{eK^?T)A?^#)gsq-+xBN9XtMB z5s?$&WoKfHj*4RBkBt0d!N_lEXm0lR;!|^fe{-f~wzhhD`ufR?d|~1|Jd8}XwpLb* zRXRF4I$~mCVu^`5I-42WK`Q@7fdoL<%IaU6wRI$KS~3eqxP-)SaScvRC0R3FMbTtN zemTY!5*nPGigKo$%KTzn>`9FLjIw`AEExGM49(4$R{s0Q$p5z_%t}&#i(O4cUCUBZ zfRm9;l`mD<N|Kj{k(FCj4kReT!p7wE@6+kiHa4wY)=Z4dT!ON~Y8qGnGcYpj*#pX- z-0=L#%^=R8%wWY3%#g>>$}pc{9m7tBlc16nUPFtiim)lOo10lP8p$ytkMXF2%339M zW;QWvMk9MhJ0>GgEzK%y209A`(Mm8gXA>2%W;9{|E9Yla2T6k`??J=<){I8xj6|Cx z0x?S1)I^(6iJh4pd~Az3X!|zAfnpeKgqOyuvdTuPGOEmiIywr1Ox!|ZQWA{u#wxNZ zAkkkdeC-wpGdVJHu=$8E2{G~r35YR=B{7<6f<*Y3rCmHyU9Dtngjjf8g&7ZVu=;Yd zXX&sCdb4t<>oNxM`f{@~{AaB5wVN*jHYA9L1=A2ISCApHHi95S?(%wZgOxf7GyU{r z)lyd!Wa1XqP+>1Zsn*L>4HaZmjTI}j<QTKLSwvT=7=ihH)~3S$GT69;^EkMenGzo{ zva)e0YUFrYyGe-fa0)Pra&dCanI^!=%2d?CQozB>#aLhg)xukXsfAI1MSyV)BOmv_ z1SVEaVMbwPF~)3eamM>7RWSn>JiTx+@G}@Ocrb)BL^I?tlrVHN%m$?va0AlR%-D!k z8AL$qU1KA0P_@eru6N}aMMXeME<n|;xf!FmvME2aF=z#fu@PvImXa+aE4Tt?S63D^ z7Bn+95;hi8W`*oTRaX`SAN^=<2J4tJf+g6X`a$ax)Ya6DG0x0nvlSIq6c>_}v1Htq z$7W>w^No{>ih`PzlaO<eubzRUv%0*2Y>>Q=M?#>1F{8S0LZgtLpq-AIr-Hr$j}~Jm zKd*v57gzH%DGLGpY15eUbT!-^OgUPnsVD>++y2whbJEjuV%}h26qk^1Z=RKEEnw-c zEh5hPg9)`aQR%9x%=thrEa|1Sqa?2wpOj*Of||OUm7@foxPZK*P@$%(CZlqGyJ!(d z`t1-EIqoucqob1D%nEWA|1=qm<o~T_yne6B(!@glZ?)ufZVN}oBOsgg|Gh4>cW5bU zurb$2mlqb+=VRK45^>B7eE%8PKd~_|fbu!$<Rc+*&<<qKn5{aikqNjJt|TfV#wf<d z&ImeO4zvPZ&D4$sbo~UVS!5(83Oc+(9JDN+P0aSKkI6rWX;-E)GBOAVScfX4vlw$Q za{buACCw4S!N|2s*eEE%R{hmJ4vPQ_j+%X@jElIWIhfY`n{&d%Cu`c&tn~_^)&c^a z>1+;M(wsk6aWHWua7lA4R8Z22nY`*#_Y6i>8DSC7<~9*wp~hIoYz`*y5F87VKg1Z+ z82msZH*m)rb292du5}auZ%hUI&RkKA*<6TGoCuGxK)mAl_d9d0*4Eb8nNbET2VfqZ z%Jg-aZN4p|Gsu7VJ-PwvImXvaKO#!)lX8szHT-jcc)W2pqd?-nIV>v@i1j$AoCeKF zG=T4afXqXggI4x{?mg6Igp4|YPMadcXH-;IQ&(hTX9Z6R!RIcZJ7A0zL1&CAg6<kn zG!g?HxCCE#!2n*i0Va@-RQmgX@qht4*T2JD?9BN>d<k(*e-1dsfhPnRP2KqYG#DK; z{P^7%P5FctFoCC9{(_Cf!DfC}%E`pUIn{wr=#NiuWoa<;4zQKWRZUD(mxJ%X_z#)K z)&Z|X1g#a|V^UUPfE>HREXydO&8TFHyvPYQ2gihKjR;GfXK|(F*?(^t1x_mkrw3UG zlnFF@^laST=hDN;R?f!t2YGo&8kRLAjOTKV{Itaw#m=8*6yTKB^w7-}5OC8r+&*dg zQ3EYEc1})aZ9=O|kk9|+1Ksfo_5-L(4qBtf$O>96qQs`G1is!CoZ5vzOGU&%qbb&m zpzW*7ppw<tj>S}fK~V|39tPC)0Udb(zJUe2<QqI?t-!#1COgi)D#<oGF=0U{lZjV# zk2jkzd%V63tI7Phg&SKQwT5@7F>y0;vX-%OurgJ!N-D@$MK~G!Tk`J?Y_a;2joeZk znjDNwTxq{s!FK?H@AhMiU|hlUGpEWnXIWxFRqJuV{546&OpK<AMotm?*Ue?*n(gi& zY{ACE&C30EmV|`56eFj)ZJ8gV3S$f`h$e6{aU1gR@Nx!6fsACdV3avm^$)a^l7R^{ zjticbQ)U3o&58+t_V0-BGlJ&Z8QHWMS=EI>H)^Vb@2oSDXEZnCWK?GqWpmjR_b`Kt z>k^j~SLWZPs-~y^GdMJ;GDT-X#4_&3{yECzaNzF&HikX_zQ^9r;F99H#06H{;K0am z+7zr7ESB*w?w12t?E#2;*#5CGFbIIpPzINf44?`SG#<`q#t2%OFUFv(q{n0mI!)f( zj)l$NEmQa3me$0|x~(xxb=H4&ska9+vi$pcy?S4<6}yXt9ls`@q@!0_1{*`Hn|;LJ z?&|2B^$j6R&St;A`Q(VXU;XzbcF~zKRwH#KRi{{M70{+dP}u;P`_pE~VW?r~VVJ`J zK0(^Z4m1R5Bqk18<_uypfey$3-){-Z>R<_BQ6)8XJtojl3p*$?;oyL}F=p0`pjj#? z1`TO~R+_4T=9*0rlYVwA=p1&2pA5PIYBF-#Zkh_RDgk=B0V;B$;_4F0+Hx{#0a0Kn zWhF32R~f8CS1&+CR!mF-qy$q3SXNG3xgfv+bdv%EI|LN`X7I2u^%j;<k`Y#mV#3L3 z08P2bNJ~hIiAhUJ$;e7d3JdUwNlQq}Km{eFWf&a}fF)(5Ad+b6q$H)q4g?f19{A?~ z!v)L&zQNw6vN{q9@>Xh7d~kBW>81fZm&D4z&A^~23c5XllTlHSlaYhr2SWoJ10%!F z2F3$S4h?J!zZzH={xmQ-Fgg4^0KJEzfemz~7&n6egBSw?CnMyRC;=fAV_`)RCU#*( zK_eC+W(Fputbb4EUi>%z+&RX?i@TXwD{_|nWw^+gc#f&<@4cLgbBu|Mix?Bn{biW@ z?`am(B4&nj|K_8(O&;bpP+MA`5t7Z+89`T`GODYAF9im>mz_afpz?1!mlW5_e+dVe zJV6Y`3zY(bqKupQgdl!+@XuFN5UdKOi0dUtjk*v6Xzm)cyqqPPApz8a6qjQbX8{k) z=&`ATZe)fZC<58Lp{NAfq-MutYy`SA1-wNHbd7_l33vulS&m7ZT}>U_fMn(2;*v8_ zQDt<!Jk>hW&&SA8&X8NdI-(*dVO`qQxf=s5q(k^+8Jqw8pZv8WeB$xU@CoVRR@Pcp zQVE@b#cK9J;SpXI+|29q{Xz{GdBo&c8l_~!y$s!$9oUp*HKlpEqCZYLsA?7;Q19O+ z6POvHk-sTn!TWf7(-}%Cj5FpjGET}oH9bbnE-9t0c#_$P!~iWD1$l8@>r6KR!Mr6b z%;H+y(z>k4hN6t3paa%G<r}1a1D#jOzzA9ssBQut128rcR~8dD2W?aU5B`EC$K{x1 z8O1=A0%$`RAEUS^D3_a?nZu7124{A5V=U*#&v>P*qQS|+WT;{$$S5KltInn9Y8+6* zB#@XQt6?O~7;K&BCT^+j>faEYx-E;DC3aozu2>On8?B<q;u%Xa3QF`il*Kev%q@Jh zvS(x<ufAe@vet=<S5=0ImzzmNpPygF-Hc0Cq&R?GAR$7QgI`8diq*<(g8tOBau36T z9Vv`C+Y0lfC2|8i)|F<i$SxO+w~DrOQJ3y!dWyVK3p8WS0NNPH%D@0>|A3|$APd(a zxAm%k7P2ae2?;Q<D;n7`3JLHrDT6j32-q<hD;mi$vNS-~mqI9J@M_h6b>-dN<%~@k zd%G@zHemf_fYolyAQqDZXhAAO14uoH7xnMUzcc^7L<M#+E=Ow@K-RiJ-6+hU%)lVQ z2(g_B>KaBCBReLTs~JHyg6#pVPi+F*&9Vt(2i!)+e~c`U<*QJuCc>paYh}S_DS|eE zvobJ%c1TJv=zwRV6qVHML5sNA1VEi|bz?PkRz^j3F>w|F&_+Vgo&Zpq0k;<v7z7v; zKzEv%tAnaf(9AD`00XG620Dev%ve!WQ60)M5(gbG#`NpoF%4yjJ&qnNd-k*xZ&<ub z$da*;QQ@CLa;7LN>z)=H+jab0V*H}YLhEApFmf>3{QLQ@@83^<H^+bTg%pp9|5>r~ z-%m#Nokgjg;3bcY4UC&Z?}3gwWMohjVdRcZ-O1SCrtn*S&%YmgCcY1~pTgMCl0Nka zBgY<ze}BYH__$>mS>l^o_Ar9YWn|x(xYj=DpSIMJJB;j%MU3p`+tp0e8bH(LGXDy6 zz+nVE6B;!4E6<<}I_nPBb%f3J3WJW|QB-1MXJ!*KRx~mLEsa+M&EOg<8ZiojF0248 zpaLz?0@2EXCZJhK6$KVCabYn=$lNOnWL{O)gH>7lPnNhcs|Tx^9E+Nq+H)C^zYQWX zG9pY3B8+Q5ivKcrXL&bBrgLs&lx7TLl-|ghDbC0Zo<jxC*?KeaFgA$G%8LJMkkiv+ z%F~dM(UAEY{dZ}DskgUj1B7IXF34v*=2vE8Q|9;2Dh<5eu7iVt^#=ntgC0W=0|V%A zIM9hwpkkWUL>)Br30h18I-v=?yk8O2T47UG6k{<qvSVTdEnyQA1s&k7ti%9{bW_ma zqME4*c$p)ExUrEK>vkiRzfLMfMk-AER2VtL|7d~O%smnRZmr$;@A7(a=4&8<KP3^2 z>T6p*t;=96Hd1L8Y`*jF{PJ)AvXl3MWLpHA?=Tv!_{umnd5?+_(_=SdV>jclun;3< z6{G$Y>;GNZ2xF(O|H#;)Y!n*0{NMSz&5T?(ja0xqM#H<!|GwQc0`33i{?EYj6}&eI zv=Us0p%i@9H?z19XwC_|pIMKIQ3Q1AkvQo1J2qw!&}<UuwggbU!UkHk%?N5I3z~p- ziGU8T0u4v8m>Ypkq7a816)q|wCd$qxs;17S3|b8VZhf1JfeyBUo`A>>y|>QTNSp~g zPbMrTZpUg23SVZ>;%(3c%S!5MOw2orN|&lx{_BxrR#oEBQvP>#zK}e>O{KSiu!w(p zixQu>0<W5-ldOpGJW1=Hb05#1!6YhT@$Y1@Di4pgOL#<(tN^=&06&Y2i>-n~q$)E@ zCntv@Q=nPUN<|Y6Uke`D^|IP#MWJyrRkpI4i-Y`{53w<^>1jIK`K!7I&A0Ve<BMDM zXGVU()LSfV|8|Hn9(K0)QxL$RCCS9j&fJ>xFOrLuG5(J7pRX#*dZhRy{1gI`9L)aB z)wG|uWYtPWCT#;BAwyGcRyidT8DSO{CShR}87VOdy$)CTVmTfjCa!Z#?0lx4a{`qV z9e6SXd6e!&ny1!CdCA#T@iU&w3`qUETaZnlK5t^GN0MjGKR156xLAj2|NiXD)3Rjb z1@&=RKx0ebc99f=83XA2b_PacP@x1GegIWw%An3YD2AAfjZ|^Un5lvWotV_s6cs>+ zyMtQ~pnEsOSQHh^?U>B%7=;BD1(^lU^Q~-Jv~yR_loh<ES#6Ci?YX4P)Z>}1o#R^p z6F<XZX9N;ARW~$e%$3(=<CkFy`#bk<e<-V@Ae*k7oGzP?IGYY*JEJgDQaG!GAgi9- zfgcP^0`s=MIC1Fpx&;nym8AwA&MMvL0zTW$pRncN5n{5pXW{4NusMG5!f{&;K0a1O z1xFS>K2Dos%%^{WcJ#pN71jjS1_oIMYX<O2M9>NfQ}E?@@I~^V+-(HDp_mVJ;vZ-e zBWR>nOcZp33}~eZcx~zfA<zw#3kv>y05gR67%#LxX=Q9^ebWBV0CZjj=>AH9f(2k% z<_Z4<Kw^v^3KskZo#D;L>cA(|`h?N*&xH0TtwMavkWM|rf&%6O&@Gjq^$`rvJ~}^x z9e8yOsFw~t_7>I`X9Z7)D6xY_e`Og#Bf>B#Y&=!aIirf;K@Mw1BU?t$7&FG`9;>{x z#3>0G8HrO8(*ML9O<P@LWL%m|9YxK>q$T4dWJJxxWF!(Lq{YldnS7m0|NSs^5;GT- zx8HB-RM(O4`$9rTM*@pMLI=~fB9JK{;@>Y*M-vlA(_dm@&p=|&;B?t6Q%6VBe`%tk zTeKXR<|1@=fZHih|1&XgGJsb2DM~Xcf*|;qW#m;q%#;7!n*5T{{NJ8`9{=_*nlsij zWvwdv<50G0RT=YvvQ><SnAHDFXJPomz-Yy^3?aS>lvl(-ePQrfiM|Y>3@HrR3<V6O z4Al%x4DAd(3{x0pGR$XK%&?qc6~kJFO$@sk_Awk}IKpra)V^k8X9g8y5K>u5U6Boh zA>|q~sI>_?kq)#^PS^z0j}?aGK5<1eBXLF0r~~LWInWR;yRaN1qavd+qoSD+Xkk3N zFzBWbb3t`Bc1A^URYf)>&?%kl%I3_B;*93Pii~Eg#*B)B;$qB-=8XJ|#-{9If+C<n zMR7rML2*WXMs`7Sbv9LHR&h~ICRKGoR(4}XabbNXHCskzHFZuVQ)XdhVMca)Mv#ll zxf#XHI2fcv&N54i9As9MkQDe=AZQ}^uTW4*T#4nNh$Qnl5lLy0<BUodS(L=3gcy4S z%mf(wgg~<A#TD3h3rqe{XKekqs{h|A#tb2?Khca#7noStnD*@E6<}KNuVx>U*1s15 zI!x;sSsVoA#QyxdVb54D;P@|;(U;>-0V`wJzit*jA;w7#|4z?6xOfE%BgbmFnT(qE z@3WlU&&FIX@OSdnf7cn!88!Y^cQ8KF3T0G%*TT#w#&Ls{<DWO9*`EW87cXASVr$T( zah{2Jb)zpUQ=_On%fC6CoFeip|JHMGh${(+h=?dkaPTntv&f5Zax$i{%8Q7~voJ<5 zvM{RfGiGyfNGOVmii#>qu<`tx#i%I8%lB^&i~OInj7k6I2{6mBaB{K!o594)c$_i% z5C;?EffFYLeuuEJy7*@@a{W8&@Na?)quIZeEc}c~|2DF*GFCV-Ixf4rcOwV0DI*i3 z0PjXdUhaP<=Q3KoxySMEhu29ao(B)L{~i5zkkOdG_urGdI*c8^nF?4LMR^677%LcA z{u%z;$@uO5zh{3s|2<`te*D;tF_Vjhk)KiH@0=iJaNm*vd_F(uTsj8uq$;Ru3C<L% z>fquGoX^FKw>L9AV@%lI{O3#ac9shp9Q6Ll=s7s*GDkG;XH5I$)Ut11i^>+pm7sIR z|B2{1L&}|IHU`#O1}^Z8;F=5!j4TYypazVJu@S47IEbSz#K0)TpbFuzf>xQBF_^Ql zi!m?zcle)DxyV_@gbP88DY5SVs{bC%kF_gcGW)l<m`RW^S%dH2oqrDH>CER3u4|v2 z%jk7RG{BKHtMZ@hzk`wC7Z?-Ib~#2B{yq4w+9QgwiOK4>4Py$ENLfsJ#Xq}$xA{bj z97Dv<GJ5CDXju;}BRCjXzJu52f=YDIQc7hd&`cR<8H2EyqLH|nu>zx!7`WL27H0-^ zc*V`kA@}UDgKuvVHxp-1o!wk_;^3nxQyv{W(NM!W`vD`<%UQEtGBW-9*m!Pk&FZ5M zrcHZrbahQ;<%XzJYu0=+zdU8ey$uVBYA%*uT)O5IOT}*v%jhXnqAgi|)MsV=US{dY z{MWCy*Y6LrwvKX6juLY>%k<e!e}avT(z010?dhc)46M=MewaRkJ*dw?Xxy2gJZL5Y zyb2Y30kE-=IB0JTxQvlwWW6IN5-TDHCjLE<6G;WJQ$^(d-NDXg?Rc~7x5~0Nb(vfX z3)B2`8MXFK{WF=bea%v)yP|S(qJNb^1~3VO$iHtvB;#5T`7anmGG>9uf73+d<d!Xa z^JZDeQ6nYw!iCP;Urqiq)yYEfHUk5LIs?OhJMg(vEYN$@L>VL*WEm8}cd6+z7&4eL zSTfi$I5N00cry4h1Tus&L^8xOBr>EkWHaP56f=}FR5R2wv@&!u^fF9jn94AdVJX8^ z1_nXU5D;jYFejs_q9|y0nYgI3DGD|hXBS7ppeuurF(c><FFY6|Z!Bt#LxnhKO^YbI zsWApt1;-A!P0Pk8BFAJV2AaZCR|ZYtfzCkDV`Kx31A<OU5H~j0V^db*V`5|Y^W!fE z>zrRFn5Hr<{&gZy6$b42Gx_EDGx_DfbOyhFCVyr{CVyrnl>Xyb#3)kCC|b-YQUpd& z_U|34#fzY9xcCRZVwkzAs((8gckF0v+P?kYO?4X=8}))jDQ0=+cv*7`W%B@kb4?9V zB~N~4Ic613IX)>d9$9l!MK*?C6aKAZ402?i_b2J!Emn<_C;we5E}nvf`jzw*`IPjO zK$uriPf1BnQ9n*kNe_f$^_BEkE~=n`e{1}UQH6^ARZz^FQe3ROy$Rx4##$9kPF6-? zQA1;UEiN$~c|Co0Ms5*N2{titD@J~1Ze}(nE^%E@z0b_R@V}UYfwh+bbl!y);-qJA zUlw$sBD_Qem#?5xkrhF`63_ty@$(<doA-eE-@FI&=RaV4V6Xe*hOWK6F5`L~2c}OB zI*jXe?HM~ja`Qk63kv74Sp3?fV{fm+>H;DcF4VENhqgyGI2c%NGBAM8Hev;Jb=Z`Z z^w_~;Q=nl7b5Lmos@p+>lX{Gh2^#ouMr`252BiB09&-jCz5z~M>}IUf7+I!Vx-~C! zR#j0(dQruU;8}++%ul%y%Bmp4!6#~y`tNIf>%(?N>2noV=S^&FTN;(t+88gFE+`@| zczwQAwyhBdzo?}3hPeIzSS*=$o;f;c?nU#Miq@8j81wBj=kD^hWswyY<&!Xt$SJwj zc9u~fynFeI?(pi=_y$!u5g|X3`4?1mR7LrPrJX&0?^BiK2cPrUzy`XvT$(|dL7O2Q z9O~MjyMC0|WEqt~BL&u=n`4a3Y#G6)R)Dtq8L@z7A5F}RKx<XmS>>2Ow*nZ6!HPON zMssG^*oqvBxT2953+Q5B(C7tdI0Q6;(IEBr8F)m18L}e$w1VXCH;nA863jC|O8ziN zsfnpFZ9D_wFfs^8@^iDWGqP-yQe#FnMNLhr;V<&yZ{`F47$j7gtJq~FxC9J9=jloD z8N0ABo2!|q@e0X{sj{nq(i*rw2KF~(&3rJ}-%9+TW$j9AqJrQX%ETGPjLaEfXY7;e zXI2I^6XD5fCTf#~P1J-L89>KZGyI)Qwy%XJF{*-s<KOK`!fGbM{~3gZ85#a6Aq}n& z>38=3|Nk>^FtRo<FoAE&<Y55q1yf^S5awi7R2Np{WKvXBWL5+<>{TIC=1S_I!{Qi0 z<1JU1^8a07e90L5*RAu+zhD0zF#l!B|F`$gA*NMl{=H+$XN>yy;NLICNX7;}CV@W= zLRLb590Zv77#oBXSsE0X8UCg-&HVF+nWcfT;a|g_=S(xf4914Ee+)wUf`1r9L|7OE z^@W%iK>I9(|1+?^Wn*CQWSGvdfPsM(G(69)&JLOr!%vt)Hm`zruwo-rK}Nt72{MD$ z0|*+MDw-;af{yD1-J`%Ph|ovKN=8vtR#RnDMNxKPVH4qosNi5BGoj#MVH07T1V|A+ z`QTr=P@_Pq94-lp$ZZ5)t<A{Luu)D#@Dj)-u<0O^@LI>{z}Udp(D08zSQzX!VUVk^ zVvtcdWGg{>gMx&GgB%!D8LgyjxvUtqL7TV#UA5w}mHKz=-)$jbVUPkmhOkJ1bTl-; z?y>;4mqB}uoEgd(7!-x|85xE789^7ygDz=Qf*jAz4m!|5T#nP&$c`DbItz4{HHWz! z=+Z`bdBbe3ZVc+rfiOtM*hma?(g0{C0aQ?nu^Y3?F*7+NB!B{<A%T&BiHR%BEs<S@ zJ<%<U3v^Ek6E_nRH!}|_FSnqOIIoJHFc&X34>vEDu$~I9xR4+>FDnl-NC^`Y<DyBG zf2LJV;*`}3G>y6@#&qbCpsR|4j$DpSj+~ByimTwIL+sMmg6t!;1Q-uAIDob>IW#aC zu`qE6GcgHsFtG@6GPAR@C~`<~h_Lgput+K^NlGdyOR})=u#0d=aVWB|vomx4SzOuG zRcTw)nU^Sa$H9R|M8m>T%Wi^}s-2yx)&x5(OAC!a|A&h83;Mz1qrW&gSs5677-AR- zKs!?Sm_VlutAQs>K+{c%%Am0(=m0oqa6%0<1ZpJ5B(7)-8WA<OW3*-j&nkmPQe?qH zrsAMECq^UC;r;4r=AdiL*#yKi7|k%o+ByF6xHRofU-(vl$KT&QAx~BMKZ7fLINZla zqIxU%Dy;^;wqzYyCWhkBdva>5ENT*e6-C^Ngr!qKrP}7=<_Z0$eq1TuApY-|vWSr2 zWPP2MJ$qOi7&-Q!j=eK}N#Eb$!_NI=LH=>~?0_dt((14ga%tT>H4`;yBU!NqT{&?% znam<#HK_(EwKewAQaAtpo|rGMAkQeu3mSmmgFfsI>ANtnHn2WmFlF!u)r5*7d`t?U zvnxO+Vu*nj+3>Nj%dr^QF`I+;#F&G&88U+!CE6eY+}8tLVh0+L0&VPJg4U9(4b^AA z{`>XyY_(HKg}amv3#+`8Rf44kKO?h2Qq%q``<s#sm>KysEEBAx<XKsCq}(e?oc=Ya zNjX4{JaCXw^EPE{F!fGo2HiDfpK2>FZ<}gw=x?UX!zwQ&rNhD{Eg>$z!Y!{XCn6%J zBG1FZCm}A)#iAo6CC|#EZ067G{||KGR|6=d85`83K!$lUt^k?V4DP!&fbW%&2Hh#c zs0cc1kC9DDol#9)(a6kPnh`v*Y%VM=#wfzB2s%WTjh&lOj}bJhpa>a4kz*3KV+IYR zGcX#ma<MS~ohW1?^mhWQ0Arz;GOOD@HYG7pCALWxLQLxE|N8Sel!bM<8;`Il>nO37 z{EJNg_rR_(KR`t#AivS>!9OMjHcn=izbk}<n4*}3q(vDe|E7vaNr^B%El_4$GjaA^ zK@lca&3{2m>qMlaMgJMho_Obnwx@%Nii4;24+aLN|KI*Iur#poGiZZuqhJ(aU>7t7 zH5Ne=0pR69;HeG}0m=n}dW=k<u~Rb^Ar;V^kpP1NOT)jLH$i)k`5u5*=|Gs%J~#4k zcRy@h#i+IJ4+CUQ1~do6eBkcCof7~4ASnei8Ce9@F$&FYdp3z*c+$UDLZI0qh%V$c zF`!c<8K9?XK!!d+15SKQN_tEtpq8dMqawtm#te`-Edka8Qfgoe{x#J_&%XNV>g?#~ z*;h+X&ta_l_Zu{(`8ORjT?BI4zn`oPYEu6o%a+*wHO@I*3Q-NxRL58cHs)6Y#8n^- zptccct`-!23=FoA{cS>`A`I-Jc!JPWjRCxrPF)Q&EGsStDm6eXF?KeXqnYg{Zv1!i zCfFqjU~3`FoBwWZoVe7UO<2%Xltbshn*%x=vbKW4Z1#VbAUwfx#N*%V<)Bb*LDC9l zwn#9#-(Aiq>XEQfKw2cLsVPfDT43XE=#&}QOW^bXu4|kaycif5!K2BbBk-U@x9nmB z{Rc`SW(?+LV&bZx_C3r~EDWIC?XcLW!{)!KpPP6D7!^*J-HBlM-^M5Ow;kav)(3n- zYEu8esjKb(ypz~HD6o!EaP}ESZE-#)w|_!>zY~yS3mjMA{h!$k#pL-76nEz8?C|4( zp*aLrh(Rj@bI3`-{EXse3aEj=N;nX1{<~RclFBK?Wx&PAnVAocI5jEIxd1|Ztyy7E zi73l?jFaY(8A_mJaB`k$J{Kd04u>>XaX}j>Con2NBPTl!Dv@kaSBDXb3=FKGGJ~Cq zO^CsQ!H&V3A&4O!RF5*TVJkX7v!$S{Y74sG7&5*OE<`{nMBGeVjDgWiK%Gs1*$6b` z16mu*Ai%&V2pW?UWHe$BU;ym|6BS_>WBbR`_<0&Q`XS}aKgeQ4hzO{-5oA<9dv5jW zb7vXV|4eRZXgE-uK5JHbF?gbx>1Stoc_)*@PDb{BKX-y9nBUL-_imj4N>Kzc3>@Up z0_hy1uCQovv8eFB%YRQbGv+im|C{pfo8{6+50+bkGR(i9{~8!s`2GF)|NUWvmJOE6 zA3R!W$-uz!|L4D#?4bR|ZVUkoaSS=w(wrP4I~xN#n~J&~Gq_-d<Qh;wfoetA*+;gZ zQ%fOIri>=)pt&q@J4RIzF>y6h69#k8d>8|x5d&x^A2@@`F|whgG#`60`G23bU;4M$ zx%9&101nQsN9|>|Bf;qhIa^vQZJPuZ{Kvqu=oZVOTYnnvEoElpJ8gQmedoWQ%m;Qd zvfo?E{O{9g)4MDQ$T>3pUBkA2f23q@?Pp70e6PIy)l_~+9&|uf<rU9a{7;DQ-vSXe z$zRLC#EL)SvT~Og?Nuu#{rmZcosoSfMC9K=)rv_BEdSsChuj6_#Sp*{!;pa|4At52 z7rd~733P-qBwIq#9=NGzt|kCVeeg6Vz%IrHx(*7KDgOD`iz)p3zV-gD(r!p;3{EBx z=Io!f;*yNKyB_SCwC*G{S28q!w(~Qx?<`H7H7m7rC$l9a@qxLhrCI#DhAsd8NGsL& z@ne?Rf;$<N7VT!_msP4s1n0)*&}7J%52_?Bmopw%ZutkE^!_<42c1&@D(fI?h^)c4 zF@O%w09EOr^GP5_7=e0qpwb+v_B2PVn8aC+UhU!J)Z>)m>hVLZPyN<F#MfNKU$0*4 z;gaIi<K*o1N3CD|)<DG9Tm^?KMm_ug+rN)2puA)WzH?EGK~#i^MO}|cT}{Z$+!VTW z*_zQ5+}DLI{1k&O3Pse%Owe`#Q^QS0^>zQQt!jPP%?&D97J!Pt1u+muoDwz>J_Yel z3`F85q9$Ulk@&as?(%=HCJFOTde%0ZQD~h2B-)n7K=hmx7Cs3vC}t_xH@~6L11d2< zZLW_D4D1aoT?|mafKM#fX9T$#skmfgP*zfbwzkB?jll~sKrJ&xXe^1tYF74KVc~zb zIHfstxwv-zy9Ktf1(zEc)pl}m>2gYQ{&qlki78juMEKt=h{R4vDR}eW&2@}g@bG~M z?u6L#=PgFP3XU7l_z(lQ4GBwYpbFED$w-a~=2&oZ5$wd9|87ECWPjNaPJuKK|IPtL z2U7~Drh>M@{+>p&lYxPyfu(_godI;vI<zs$AOcIypw(UspzsE*Gh!@aY=_zfp%{@` z7EGp~1|CE_IvTWj1+@MEd^e^F_?$FQA*`$@Xl$+w8bCD%FDV2a0BkG>T1^8QUS(aa zY-FVTukyIuQ+<~z`{ItpCr<oT1c|XW7%Bf+rEJ6${9=lQ1><?n1(R04_`B9fnKew= z2z=%p!~X_W&;-8^1B0Lms9(S$CMp6xWJ8^g4YWDR)Wl2(R5?QCT*2$RjX>Km)RdLL zhmV8$tV-&7%-$_)j-}6I6j-GeRJJDFrA?Mgg<DQc%Se@vlV3ZET_GdD)+Hj!!9331 zP@4Dlh7<q3NXkmei81jT`)i9aug=-umtoTSZ$ZM2RgJz57V49=leL39jaa$n%Evrq zjFNNA2%Z#Z=k&|YKG-NMqcl^0?ZJP4kLv^(XmiR$G4lsy=Yrb9pmFIcHU`!<25kmA z(5WH}Mq;2-LfAolYH&Z>+!TCgm>6gw2WV;sykkckypV<&zA#QyM4a7RObB*Nn6i>O zD`>V?$c*`n)Jj$+L4iDd%hsd`J|2wB?h-O=670hK92`cjtV%8x@jP7o1@$jiq@=8P z`S0b5lnVb(^OP8k7{yOjRGj+va^~Sx|KdAxDo!yOMR2lmDQc^m+UZUz$PVX-b{1pi z6&2}V7xm;~=kRneHDLee4>crZ#moBBOJDkCu%>|w`FHN$%TpC`ZH!YlU7pD(ehRew z4t72mXpDxRL6`wFMy$@D&7jY~V6JGYD5z+v2wQK)h{P5$Q3H(|8-doMfR<H*FlebS z18BmZO~E3-!Xn_81QN#rEHvXM186xl2seNRYW~guDYRfwXn?Yqz{)KCDu5O_Gl5T+ zfshQ~F%ZbQV|E5@20sP{1_d<%GX*gLM)2i{pphc@Y7$sIpa?zqQxtSPfublIxc_bf zTHXZh!5ABfgGT+C<NqCc2s%NZ$$>F}S6G<$-vVLY1H8ij7JxX631H4&1s@Ye2A6cu z&=9+*f|*;Yt+0sy^i9+KMTA>I@0<8AHGqtG`0voa`Cttwx*_KNJz(PV&Zw)>G_^D( z-dRJ?*4EZmFu}(Jwl<pmJ1eMcFlGRqJ_z$4C?)cP4qw#=9|^3_sAg(n&!`S2%|KV@ zfsPZF2lXl0S=re{MdTTgJu0REk`@Oyz7YQ0`jeBhgOit!^XE@aK3>iaP7ni4<ge&f zRn=foaTE{FV)U9NA}k{-Bc%%W@8A2l4fzSTXsfE3scJAY!t+&Cf^5=yie{>yxP`7g zg`6tE0E$yl=u&-958g;j6qXDXO-<Aw$I>t|upN+6`_J%;;Xea-5QxcP+LdY3uCRtZ zod4HBN{xv@P3oTmBg20N7VueQ|HMGD(;VhMRFnD#8lnV`i$LyR5d*JwVKx?3WLFeb z<OHR4bwyKS&=@%<qp&g?!+`_;-kCFc{!9Hg``_$;sf?cH|K1%qz{tSp%vi<f{Es2$ z1{=dahXV}<{v2QiQH%%vGB7jzc3^~+FA#e`b&WEpd}aZa&+Ou2;Ha`^)B|08tzs+$ zy{rh7pIAWc{@+`!3J8e(ejp|waCOUXM)sW_7Jx2XVrKZ=z{aq<^-n|74%Sor8XEkk zSa&orH?;2lbpU+765|EXQA{Aa!TT$~^Suze!Fij}2)q4ENcJ-zv9Y`55#(M`hrbV) z|ACo|4xn8qSe*sAj+OBc$XS1pIUqNJ?y>yM&cNCVnw<vSuVpN#%&5!=+5oR;3R)vC z2-<XOswiwMtSAb~u%IJ}*ctxTwXyv>_W9o_j`qLLTt#(sL|vH{+-1AZG|ydFM_c5~ z#f!}Ieoth{|C4m_qPh@sp^(nSKc|^ZFX{;W=@(Lm%mqT%JAv*4M?2qKQ4sx1^Ir^T zCz-RXf~<0rVDS0R!m)-8bV>kdAF@7!3xhAiA4WDtAx3FNRYoI58%B4=K*l)69L93S zO^gQ_Z!o@K{L93{z`zPRZwGW@oVl48s~jWfE?_e?bu~6~FdNi0Qe%Ut0WE4W6Js=1 zVh2}1%1Y{xTGh-%&0LR>-Hu6)kx`6YOjHbFB8w^?Bj~7fGjla_Gtk{QVA2Fcii?Sx zDnY6>Gjls8F>zzisXlg$=4$F{>L%vkD~rv|Kw}{ya?IkOLypwgL444ds0yQ)xR|-I z9W!Y67N`PbW9MUJ7X__0m17hK-AZU|#|Uz}xEM%+O<9E93}UA!=;S;xb}?}?MiCGR z@+G?*BS;!#B^$evx|q0;xtSWP8K~i)#tyo*N?gs%+)z!O57d)1GiT#xG-VS9hm#y= zbC9_jgAynZK-WYwtFfE1fo2lS?HJWq?HJY6P1%$o*NCWs?!p2e^Tx(5#xBMpZl+?c zX3uCUs>i4fx<d%$Z9WcVHg!H`b|p3?Wj1v-&_RCcp#HoVvl-}cKQ%r^@LYqLIp`!8 zus#tsQ8Cb=bnMD(;$q?~svy-MeQfN?qDHEqkYG161sSbo4!VVrja`h@401H9h&b5w zjQ2Rygd|Ow7=xt6#aK<))r2KY8JU8m#l$Rm!<BTs+6^@He--hDL6~|>CmA)BrIpOo zOk`LK`~wOK9wdLRk<PCz3uOAlA<WJg-C$-AA@(=$?-B8E!?4|qOsv8jY?6G^?3~;( zvU0rQGRjgyBHZkz5!{@d{C-SIYBH?6dVI`GT$)_`{NgT*c7-wuq8tKV;#SPeOf2lI z(uM{`8ddtXX%jm|v`iH3c$k72O_OXwRTx>>S(um@nXSY<h1f+EWb$p?CHMrnwKy4B z1ax>=Wz>|I{P{RJcp^->*cnBHq?BdE`4pw3xw$xGc*XyH<qVQzk(Lor@KcuLb(Z60 zWwtQp_mbn&;uaMXko&n$E{Ic6SVmey)`eG6S(V?|oP~22pS7@xuAY=6^GyyxW@cVN z4IM^_e-B<PTlQj^Sym<^JC|&uJSPk5zfT;@EKFCJSlHOOmD>Kz5YV*b7h-1SVs$;l ztlGjTzHAMn=xjx1W<e)@DGOtHRu*<HCN@rX9u5HxVU{dQ79KeP873wc#?2B;X8Jlj z9D<xyvW$Vuf-dTsl@YAUO=iYnyy7f}k0vcmWD{qS=j74h5@uv#77k?+VM_hC&L@C_ z!_ncw1x7}e1uPPL!i>!P{91gR@=O9eXEq;WN??ts&{A_1WabJpHf!n@P-W+o6c%%0 zWib{-Vn;|ja`GxG>gBSshAJVkS)BMebfuMzw8e$JGBc-S-pbW=w((@s$o+MPTV7ny zqR@?rNncA+QqzEmd3LavkUTdRr<klPCl{XxpDYKD3@bYezb6xytErl{ouZ&Bm!uG@ z5HkxSD<e0X1~VHAlcKyzfkmCEfVeE9lz;>uGar+l42zJSm8mB$2R|<dA9LNm?;%}W z!pwXU{Cs>e5`rdmmIcZRicDNgnyfsGtc)xyLaag(9BP6J_8OX|Zk$Yp68tRetTH^D zG6F)poLn+;q8!ZYWhE6-RI6o$S<19pt#}pq_#9FN__-L1YnWZy3{w;&WrbLTWvjd8 z`K(&C*!Trf90eU~@>%$V86&fq)zx~1h1fYnnr)bvnwOT8E?rt$@=uM4iBY<YosW^5 z*~57kOGJb)BeO_I5Gy~^3F~r64mKfyDY8sW;=H}b%nc9C<Q3&)WMpDzjM7q5XXD^C zWaVIE1>G^p$SEQy%+1WiC}?TV$)U%~E33lB!t}R=Pr$v5o5wWU%rt<B$>xr|MWL-p zM<NR+6C0zDusAm_cd)b4Sy9o+hRR~h%%U<j4UGC`PHKvbzCIj+oDw2JEUYXX`{Jy7 z%(6{+xXaxH_zZ2Bm;ylUo&V09OssnuK>IqZ85mTc^GL822#j*9JdDOhax8qz>}>3I zta{AsY$|%}tX~p35)(WA7AJNjBy{|ZvdnJpJbac>oze0}_vPt{y3AVcIW@jJQ)T00 z6Wr8z{Ac~!xZ>ZPJA0doU0f9PwLzK^!CDhp4Q(R5jWxviSh>U%^esFBQ*#{WMj4mH zrv(Ps7|RPVGYQC<7<*ZVm<NKp2n?XRq}U+)mq4d-dNZVhZc<@TU}0kt5E5fiP%#sN z+!_Sh$Hc~>prQu4ElAi%R1mbS*;LTPn8gUZa2GoGYzu1gm@p}@2*K{x76zaA0$PP) zVg?#903V8B2HFs<zy?~h0crG!fcLntX#QLG@67#{mivq*j6sYhAlBbp%u|+&1OyZW z1Q@Hcyp?6a-FI2#K=8gn_)+?oz{1VDn!)tBe|OF?C#XsN0nej>4l`#x&~pFZ88q9D zU^$cdub;p_kX;W19K21HtptleV*y2iR?4Q#-f-I>yB7bwgABmMHaEvYSd-43`_sq7 z0Ghl5ACn8|4}dyote~EcIH*4cY7;UV3o0Y8G*vV*GX+mfg1XbNem%H9WF*Gk@UwxP zp`k&D?+19HJG%p)5F>-PX`IuK15R;qPV5d&ai-oZ44`)E-vf*dkiq&tkUj1T{xz6- zF90cH1}k3R4Qi(`g9uIru$!deZi0-`fi@a}`&Xc$1<?K+Nk$B(3NkXVGB7oOb^;;0 z0?moc41XDz4tSfQIpJ>tsv8*<K=}wBMr68&xq*dYFu8|`ft7mU1HQ)(9ADxL+Mr$s zcutI{nBu_i3TC3>hmnEd-*1*4HU<V6&|C{Uo3f&?7#lw$o0>W^s6(p`+UEi8p0ebE zuij`n$t5DOQPO~W|GyK$Qan5w8azDGLX2<a)HVL8NE&c^bBRbW9{G1dm{m}V^?{Zk zt1xK)?SBSl&={*K0|TRiDCp2EK@mk`QDp^nHbrGqV+B(|Wm9886EIucOwm}B+2P-T zh6Y9l2Zw(j3JU&xaByIBXlVF%z`=o0prC+Jz=5^l!M}utzYiWXOq$g2fJvc&aRHbK zN&XDbv3<xHx}aTo`V8g_*5DCdWkF-mm<f1Ow6dV0sG_MNt0?#~WK%&?Wl>dAV?od| zB2dqU)l^xOQ4!L~1<|1VttiUD(9rO&;Wxv-2G9rzD+6Q0e};yi3=Iuz3=IvxA@n~6 z#)dx){~DMZ{xUE%{B2-i_|NdK0dyxXL>CJK=#qs75cmZe&~IRY-nY=u0Lt!+49uXT zcR{%fWDNrY_*@(YPSALsJcBX=Wc<gN0djvtIOr@#gs(sgs02Z!5ZG^mpzEK(K4e7p zrLw58sv^Rxpj&(uO_fC@89|3bLjuTHRMC_Z>{pOa8vZpvoX!jy76Pqi`p?ktm!aWT zLqh{=Lqo&w2Ihu_hCdD9t0O=H|3IPiuc3h%e2g$eFDSs6K>EREfx{0J1iwK9NGEt| z<1d)U$iM_OprN4wd9GfNK?1Z#38^R*6;xDW6ITSKT6PwOKM9~yU05A7EI_xUH!#-n z8|^R(VpRB-V4(pLwb1yJVBryDw8IE=wgG5d5i*~_#=sBSRm-R>3c8wA6%y?xW}vd0 zA9U^$l7*}lKV*4!^8EY6sPLPCxxs?*goexxnFNhL3^1!18Gdl_?Btot-0+)$Q9;9k zdBGnBjRct;plgl6jsT@o&|Q`d;Ilfp86+6g85|ix7*fDHD?zLD!G{f+iLgQ0V#Z>u zpo5-4n`=eo808riR885~+0;xxC!U+?G3qm_@iB?WF`0w6r<sDz=2TNxQd3q0ZO;;h zpTz>1cW0k3FV4X=b0!yuIIo;IGf#InGdH97@60DY&N-E)9hzE<9!#f_Q*)}Sa#E8G zGGt`xw<qc7ByF!xW%dknvUCV?VisckXUX{5E4~5cFewugRaT}RCf4;vN-T_xj4Tfr zP5zy+^0Y4C7hq&mEHq)~NZOUe!ERi@!_UOTrV)@(k`SQ5#?oiz%F4{)tY_}T%=nMV zli3XAY$4G22qc_9=NU*b=rP!VQUD*Lh?t6rn!2DFg8=B(G0-9*Ar%D{M(}2B@Fi11 zEXImPc1)l+M6URlqq16Bn37tuvKXW1{`)k){N~))xr}^_c8q*XGWk0`H~+i5;or^m z>ln4xG3qvc-I322f$U30b*8PFdtdF{`)aS|UoTC@i~kP&`!qLp?#=S~jC^zF{`2Yn zx-4PQziYcz|GT{^b>$moHWcrG>csyH;B!Vmd(EvG7+BF74Cv7XT2&7lQUkTQL_zBx zpp`gVgD~&!1E4`r76)G8hB&9+;MM?(gHznU2Dsb;a6<tkm;h1+)xzS7P#ni-w*Wkr z3NoxA&IzP84zvdrRF;CuZqPbaQwCdxP=;L4sSuzMIM6xng5b6cXlxg{LPk+gj}f#T z7&6riKII#xgatNU1({7TH33~5XCyAi0y=;ObczXFfbGD)24;qzpc0gUaVwv_1{1gy z_6yuhVoK1k=ldrLYP~VO7EP*25@mc1;{3ID(${y=XPFS&H@RhUU#weEN(PINj}S{n zN|D=d25h1%4xpP4{yH!>XxQ`p`U-Agf(ce`K6?!?%hKK563h_L2O0k-(X+%!QPHWy zle_2Qwq5LsitM|#UF_k;DhesLAmfU<489Bui~>yTVnVQ$P@psk3MOkt0U>iWCeX4q z5EnE-4_fh|%xK4Kswg7IBreA&!p6?WEUIXt$E2>uXky0NaCO0gtB^1OHwP2od{%H6 z{q6FdQ0(@H!L4|LudukdFo?$j<FPjU`~5FJE9+nWzu!W9VEv$$CoAK`tSrWfjI0Q; zzc#Y<n?AL)eA-km%dV)Q$d1YdwR~ZB#OpGE>Lb#8sLiM-BCcpA2=bOPAG0VyZ$0?K zz{&iM)1|P-=b2AWp$qXoak8`h<=pgsW4*k5{l@oApz;?~_QT@F7`*e9l-Pl~omr1j zU73%OofxNwGKYm)nr%;imcHGLc$c5swCN9D?@2AKlf9_v$(^$F#Kx`&I`4yw#MGJ1 zv?se$SX`WVPhcb@<B1cEK`9E-kAj||z|UX_x=oH1+_?mgyMyzCxgCeO9*4Rj9|yY} zhqy4BENIPx5Z^CwGEQQaQnE4(Fp1RB*4BwM2{5!$l4550gH1FERAfMOISBEAcON(K z2|1W&ghe=b>pIHG$jCYBdOJjfWtd|V1FeIBX+j#OW?*n+$YNk%1aI5`&4Yk9GC&xz zj3VNoIUsQV*p|`6To~MUR)(nst+fX2_W%zmtAn=a8Hs_`l!(bPim-zY)BuNwDWe)V zP>jUw7(qMPm>EpH6&wuooWO)KqnWyz6jOtg8dnY%Sky?Jk5kV{!O@77BgE0t$vQ(x zS|O!}H<zs-;BP}n&c8E0y~*6HY~ArDdLAqd-lh$)2F^};|AOV#fanMM%KvVt+k?8j zlA0=vTU0c^frJ%mH5@sZob(#1jD1-d8;q394B7irz8PEo^O4XGC@2kK)bLDuklf1{ z-z4e^%4?u?BMfW_Yzz#B44}idK*0j)d@8YtN-}~yE(!`9(CHZF!k{}`)sR$xd(`l- zFavdw*qI@_(A7axZJ<+^LDiv=xEb@j7$*g%7^hik4yN8xj16iIOdFKU*nL=?AmR#J zI*R3m#glt8r*ru5)dv0zu*p^V*I+y?%g?AcSzK72wZTd6Zvm44XzS<S5C0j?8he{+ zEB#|I)=^@dsvyny2_*6F155$a1ieG<wk*BLf^0pR|M)bt|K<2+nCmk!xP)a*Q)1kd z+{<DM@;|r@176>&#$d|e#gGKLLzoqG;u>U_#at1zr^gyJ9{^emU?k28>YxjXu(7kU zF@xHlqM+lV%~kanO~Gfkv9p5D-!(QeSG8kgRt23WEh-`=&MFE$SHv7N0m%%Oh3w;J z2VIFP1{%9D2A{Ji3No6-aN}ZoaXU}ef4{S)P0K3O@rs_7rKihO!Z<N&T29!%wK4s( z7t5(Q=}Cz&1{vBjI)GUJ?#T#g3kcX7i3l+!$f>;eTP7i9>aDBF#P=86BV`hQsh6J< z<jEMUZRTzI?@WgZDC{jwT=mrcooeVcG-Z`5byee<c4eBNOmjfiG{N`Nvi_z-bc=?H zGaYyL;xkv&bK;uC6=3wALC=Y+g_lE0R8`E#fpY<$IkVso4sTNpC%zL7-dWyR$LzJ! z{xArKa=Yp<%`x?^Q#AZ{L(k4l@4^K)9gaX#Ee}EPo$=tb2j0uB0zUiBNDPz>p-p02 zMpgJ+G$<0(A-RiD&_taPGK(o9#|X-5ilCqs1x*YXD;k3a%0RIK8u5|^PhA^{vw}`u z76E5&mU`Pf6(*aqf`ESw0R{ga{k<1Zu(F(SiPqnsl*t^91p#aaV*egiclhHdrN%5E z$Ym_g?C|G+lo~UKhb~h?w1x$%1DBEfKUb$XH7O=T0bWL130csBaVa%61`ESKpXZ<W zH#eZ5AYfyEL4ZQ}%7*r2|8#|bf}aN%ljqhm^O~qhDJbiS$g3%+N$K$ESXpTB^B<5^ zjdN0vQe&UTt0#R_N=*$~mw?w1Ix>`i%Pdh5abac9VKtyR8*woyMp;H^(h_F`dkl0i z4JdztuGwQ_XI2)5Y_bC}ne`YM6~UX7zzJB6MI5v{8Z@T^T9F~m2r8{WlRu)6vJ8}g znGFo=nWssWaN4TtJFqZ&IQ%=Sq;2AD!T4KAi)ovp2}cSC3wsH(lfIfAXR=favx9+} zE$77gC7iZQ@qfKSUH-8eSx(E8G*mJWGv}&iuZZDmjSOxQNe>oj3Jz};jICiWVdYH~ zu4HX+G2r9-JAv_$nt_Wxw-E2Y8~?trJbotSY2vK?uT@G@fpMZ-i45aC9zH!MW7U5d zOv-$G`c4LFf0r?>QZxA3V9Z#fR$!Mog_~PWK%1S3L0KZUiz~c1J@8)$V@zOrPAFGL zteo^eWief2%YXUa@sNGY4B$1v#^94ilEF7vVK41K1E@-DqM(Dk;dKFoA!wqe4yx@y z1soJZDg(^IPgqbHeA5%?wkOc|-E>VS6E8>scuq{2HAccBzye%DD0rEfdMkLDWlt63 zO7_w>DRh^XjcbyL5y)`*YXm6_r)IiaPkW`nr~pE&4c?~z82&Y!GV?J37lhKHj0Fiv zH#Kc6G;Be2fkTwJzqe@ula;xD!|d!kOs=Bg?Co(kOLG5Ba0rAHg_+ZpnUu4p{etc@ z11%l-*8m!%gx34244_+N6B(L7BVgjlUNjX1ry^s}siEMzzeEK=>y_A**!aPR4T2M( zxDp>TxPk<44FwA^iiit~f{v0l7X&SY5fy|cYtX8AP_+xHK9tndA;+DYfjd|HjG#Gd zRt_8eUhz=T?ufrBS<~JNPRj~tmJytGWtz08Yw0dUb3QM3bE5#RSzJ!*#Z*P5ICxvQ zob(jU`4(_G{C4E{k)~~bEXzB~+u;PClZL4`i;Rvdcc^f$pof-eAcv0Ig$sIac6$GA z7%J9zn=)65+b`Z27xQmzSkAO8#)(WNx_VjDqP=tqL51<Z->jbIDsqcw+Z!?liAd== zwF?Mn3(5Su2V$$pF(wF!7}+zXi%I+~bIsR#$s`UMBmLXJ#HXt3{p+=vHe;}7Q1ri3 zYI?3FmY^C@rQ_cjQ}7ruc+8P~D+>dIBm<}o2_BioT$y7e#wsiZ8hubwQ|AVq-=(C^ z%?Q3+M_tWS7`$0Y9CQ>Bqq#76p8<2EFz>%>LcHy~!vC)G3JdWuOY#b{@cA-wa`CqD z2r=sI<q)k9;oPIkD8$pw%f;!(D8$nz!g+^_i<y_@E~iK@uMqQtQeL4ySHPNegm_E& zgoL^N*z<C83Gy)c{0kQrW?cPu6OSMl7a#LM9zo&1KP05tl{uL>gatu$ENDL|q+iX+ zpv7PX*=GPc1YFSA$V?pS7j<UDZLi?L5OMHaJ-Zka+C&Kh=t^VgBnjv&E*2ph#gOVn zP97#_IXF3lXNYhdnk~c!S>dkMU>BMc>dB`2@5;XqM@vhOG72#2FbaTKx3J7aFgr#l z3jKTTb@N}hAfJFBWA492pw=kpxEl%iIcYJIRk)bVN{{~gfM(u5?|)PNZTZmG_kqy| zHkAT7n*!o*U504LZBvX!=4Se!O?>=}e5|0+0uxZKkq2FeWY1`(4!Z6IG%F9f8<+@X z7(oMDKL-sSrr4PoeB8QhLIT_@Ec_zUa;m~UNeN!6t^xww`~n=Ny!^}pI;KIoQ;r;B z=9!tn$EC|5NI>c2qleVdJYQOR^zRawum5d<hlGBHkWdgW3llFh3lASZ4||HQPqGXj zA2%ZtkDrJzi-5eO$iWGd_JdUMF%we7Vu&T!8AY+gA*lXz`2T?Y0ILE6=*(*dP8M-? zbxuZePG)s;aZW~dMs`M~2cR9ce-oG%tVr<qr@;8&;J^D!3z!!CO<0lO!T8{x!a+vG zgntc84?u&fAPKNCkgz;R5mXsS+rtD#@Omh4pA|fI1hP||fkBm%kzJgflTqAUos-pE z-JFwAogF>tGM#1Q|MxQDK*GP5jN%&M_5ZAxbr_HRv-<auQ9R;60;Bl9mm1;BK3F`t zjgg;GJYs(Wqc})o!#}HkPK?JGkNx}j?`6dPgnuvpz0`<c{0WZ=M55$kVEBKBlYv!* zftx{?L52Zx%cUzrFhev$1Nf96c&dcWtg?a%Y7sFbGZk>_LPX36bRPhyS!^Vx0zL^A zl!(DwH~1LA2dy!Jj^HwqV-hv7V*(#FD8Qf~tjNa*T7C{15d^LG&|?IjSE<5e3SKs& zXa>4#o~hehP2JpFUCo@O$=uJ}-0zQi;ex`#1%)h)g#rFWg$w?;E-o%vyyV$pmZrre z#fujgm;AZ^@8ka3D>XG&YWFj*{`c?Fzk~luugr`NpL&id@ZYC@O`t0i80%OV>viln z^Je|~F}w9efPN5ns6xQY*4h7l%*x}m(_ze=$~foI1I8{UX^8daOd#9M;y`v57BYg} zZ~$!aV#a5S7e8D4PlK_Jk-z5Zud6jI-1&LYv#yjDUz`#5mmMVh?<2@s78c`r<LSHR z{QEJpAlaf?tWq_(a3&+ioL$q6>y1+i3mBLgQvNfrfbNClWDsWX0j<jf9cit=AS!}b zoWm%`2)Z+zU7QiJxLsXM9eg0Gnu$4R)sY@EWF3+mi?NXzXkn2YBeTuFj(^`6xfm-L zx&BSt(cHYFnNf$Ag;zsYz4(MDBe$F!k9?TC^ND|7<-_E7<mDN;Jx&*?>uT__@N%gb zI4H7;IC&IUMlVxUQ*<y;VJc<h+P#O7>)*FMyBTLU$Hp`_$He|!F0HGgsVM0w>H#)| zS5D65#J?|ca=db3AoD~$B^5PQbfrb)_=Kcb_>`r@j3p(dg!tqbKy^U_c&#-%gBgPz zcr_|?2A@%nk&T^?Nl8r~%mS@E5(ljk5|L*VGqMLQo-(p$G&9j>0<~S41k@DR1jH0D zhLGpSw#3G^FdB2ISj%&%)ijk!OUqlUaEWO+2lpHI8H$N<irI?oFY*<$72^~W+i%hv z;;iAm@86ew`xtqcs*sN~W&Q^;DfaI-5eZgF4hanvAt6at2@zdu9aBD&J_D!$#Xb-t z_nGjS>R2-hG4kvKna216^&C@BU#Ed>2Wta^5Q7G&H3jM{Gl5RYP*Gz7Zzls?g8^x^ zvvY#a@dS6g*<>A~I-dSJxPHUGgU>o*9GDL3D>F_}bv4vi{<rtvUS&N)R~5#oimVOM zj(>k{_;=u0d;2p+hYd{Z4l%!PD1r`BG;~$`cZ$(W(bdpc>0b@#qEOJ9!5N$ktm&XM z$I1xWj-+O)#-Ogpq->&Qswm3GBre7v4qAlHq^_oJ$|?$3!DVJ{rlxLYVrpc^Xe`Rd z$j&S#B+jVEq;ARziY5kj)@%Q6O8)!m$Y>h$Z)uolbcqflle>DLiGUPit*-nnG2v^n zYKxf|ZJb3Fa}@IIC0ybe9j;CmwkuM+%KMa^aVMX<wG`tSM#gTtzn>J-nYJ7L{ol&S z$as)h<djiy7^@nG5tEFSvh|+{DYlHWwbU7(n7T3<G3qnv>AAgkxi;0@kcnM|jgiri z$<FAXo8sSpg3LeF4EY$1SeSHJdVf23L)x|AGMbA)f}x0^iD42_i3jR^^0BZp+OepL zu!9c978McaV`K-9fq>QpE2-NtfsU8tV`SH3R5u4j6+dW@!(5KZ*vQmGO`j2T!yTxl zs}DLdRh&&!#MlV577?_tSj?VLjuEoT19{a4e6<ItA;Y{?QBq1x$w-Z#F^;petvjCi z-(vQPmYz7Kt_)@wNfusfue;3xjC`zYi~=5B$Ja7S2=lUui8B?>lXvCfW_97qWm1%8 z;gu8-@qN(3&&12h#>nq(e`dWp54URmOnD0~ZWc?v(E4ltZv5Nz@5Z(I`fH3DjBbn? z*Y0DfV3?Yv)IiQr3}$lW$gOFLX8XH`J+Hbs+UDdcCLw-aE~SFG3eH^IEH3<+OsaA$ zys{e1-Va;&nR!6gdN`k3%P1zm!zRqbQ!q=;nTwm%i8t4Rlh?ufUK0-!$P2t4&%u`0 zBRhzx5lfW?Dl`6lW@iMi5fx)lV$fn>U<A#ssj9KCGn%PzGK#U7GpngEnF^?i2{Ey; zv#BzgF{!J7&RkJaGhwd%aQQ{WU#SKEz8L>|)4-Vb_by|g2cy`mXIK6$JI;2*iaF(6 z|FeHz7^g;Xr~b3}wQ=LGjcg1|Rc-IoIhRjjTrq#`zns6B{ZnNB*(&~ItiQv^Z9eVa z{(pD>2DkDt<u^0hm$7XGX<}et{QvVm13MGzN$`w<0)x65lN6&lvmI!d!W@)`n8DlR znb^hE+2lYQeL!bv@Uf`#F{;Zkg0|7?ff(XuOzJEQ!eUH(j4aIU|DOJH&9M@4n~~1V zUBs*Pw#2NNUDDe)l!KpJl2ts)g1=ix)Hp!XIL=em){>KvnNLhp%4TJ)*Tw}?v!%5; zoOQ!fr1>XyGIBDiu`q=$y7BMje+EX~AI*#*jINB@vHza)F$)G3G3lPS;oxRrVPp+d zW*0Z$+Uu<CYaz|fX{^q~Vx_{wF2u{h93RMSt1a)DW*U8Zotj#(`zpq$eBXcB|BlxG zXSlN_89dg?@}GhA7kI6cG6Mq(_(WzV@YS-Ql}^G+kd;j;#zt~XLIO;DOiY_+)%s{@ z`P4$FQ#<}$+m@2DjZtgIls_BmtgY)d{)wqO$H>ko#K?ZGuI}8wpa0(d`+4r)y;*-4 zofrcco&L;9S@Z1QzkeV8{d=|sG)2q6%pmgb9orl5{nP@W+J#k*Q5`f<W5+102yVYH zDx2vs@iDQ>F$uAQCUJ~Gr#P@NC@QJ*F|w%ZG1{@1o3gR6vD>kUtC$-biOVrEo#}t; z-(4kD);Up{@kn)cdN~Wbk`%jkNP2yfYvb+duEKwWMGT^y!}A51WZeHn|N9#3qx|CE zk8nR7tFo1wHo8>&dws@|#U`a={>B}#jAjSfE%gFaT$Se){JWAQ$}VNeoSIWr%gC43 z5hBN->!PbV^X$KWtu`@!S`mKF{@vo&$T6_CIri+|r^|DcBvemcjm+9NrP|Mwje8ff zkla~NdzayV1A7Dbu6kq83@o_Y3?5emjoU(IEk$9Ieeh8=Q>2-5b_QYIpWxX_Hppz{ zUj;_+EY=_JtQBLzUj@*LCN>ABI7S6#u);qMyu!lFXa6`j#Wf%%rW)d$z{{RM{XQlJ zvHuNhuUH!x#6dH|!p5MvGROjFaWQeI?V9lI{btOppf!7-J$`zOpgP{%OpaMxRjuo& zn}v!VAG3szFbk8hoMrsK4+btSEH4;M3|w3cHeC_;r_Cgy<!fH;qo8H0q%6uMBob<) z>uYJOEXa7pg|)#U)S|34dv1KBFz37I)fp}ZtP&uNzg`%)Tw+X4)%9{S<dJfccG<Uh z@d-aQO$S~cZgG7>g_QLmKS0-Qv6wMPFz7RMF)%P1Le8dV614;!hz2@D*_;J5v#rF( z#LsBSC@u#&goV*u1a!ca9y9p*WIbk65k3}WB|TPCW6*FhsO|t=tjw+~tSG9;#%=`K zF~@9V$7}@F%nZsPtoe-m>S3w625t&`d<t#`x~bu+0!%02Oh&l$b%Tfr;Vv!lUb<}R zZn2%-j-@`9l7fo1z9r7?W&U<bqU<-5eEst?!dM0LG<0|lr!htSbC%{~kyMMR$*|QD zVUjTPsG86j=c&QSq~Q_Y;Sn=2Ooy?JQApj#K-<w&RMgBt+rU><SVYUz5zJtONICeq zb{2aWxVjmDu&%wEAqR)5nT4Ueyn&;gqc*>JW?NuDAtNWhk~ow5y7`e(@=}^s)|y7{ z9!4<iR?-GO??(DR1KUeB1_o&cJBAX5CI$voGcgf%aFBtninRkZ{=`{S%~ZuetL53$ z%<UM}^_cmXl=+yonDjuG5}2EbfuchmR5^os&V0<EWe0Yw=BD6lqWGBERl%F><d{Vn zMZgR5&1@O@nA!OG#rS#c8fV@wD}T3TX^IjD3mX?N>wz4`R>oQT7-w(`iYOTi3UP|+ z3$ltTO6dq|GqUk<aI&&7Gcz)>Wf|$!{A-a`RpaA*tl=jt%+04(-Z7y$!_Fe2wxTE5 zNK`4DP1MH3M(E!yov6BvX(@{m9VP!JxH)--$njZc<T~20vB?Sxm<Ku=+C`VfYI5>( zvNE!i8g2;FxFnEm7_7<1C9FGBjGdF23ADJHk&%&+iAlhKjh%;arM#1o7B}|;RbLSi zZZYd{4K{<|{^*dNSWitEPNsTC1yd$5)gW_eo3flBLnF^vf2F_k!t`~-B$IS47BPwF z$1@<0g(@=`GdMH2Gi1YBrjQve@E$P4K2$hMRS>k=!N?3Wg8{mSh!u?wT8{-f5>OU= zRt|jGDq_>F33y;ilnrz>F7%@6hBzls;R2!lL-zWEi<Q4fY?g*!4a^LXt*Ky1Bql3^ zj|pNuM*^t0N`R7(QzRg(G?Cc9gh1Qum>kee0vn1FKA`=5pfCch=mL+*!PZn5iGkLi z5j^J-I;R0@=UX$vgAsH-ALK|OV<Rz^1|hz`;KG*4flufU18W0lR2J+sFu{xz42%u1 z>%Aet#R#DqOnev@fTvqQ#NSIS3<og$%m?<rANGLqK}{3t4CatDp$gt)4JJT)mZAHR zLHFz!$%DJ4;$k9H3x{yfZu32RAp5EJ?uG2IhVl38;rydOUeHX}<K)C*9C&j($oPK` zC<`wU1_=fY1`E)+sGN`kf=uigL5H$|3F-w9tN1?#E-9{m4<I3PhY=D~zZ1v{7ABj2 z44j;d3Xt%=!?*`*>|ZM~0t3{qgp7B}Ldy|QM@URm5K2K7BY`r3G2;O#H6{r`aTuv4 z^%J~qoQ*+E>Q5`<T0S+Ye-P?7M7%*t4YEFq1+><Zhe3n^yjR;CK0Gc4+v%@r1e!Jg zO_Yg&HaD3uF*w<Q_c+>4WL&|h^Y6;Ph<{g@82E&Q_$Hkbk`Y?Tc!2+JA!s6<sh^+4 z0V2<+!??mnNJi+~B#^rDl?==bs{a|-ZiDM6Rq&b=@Nf)hr4ZOdh`g+5B+jS^a~8C5 zqpYX|+3s&<3_3@T?IIUfuZ+eo@ZL%$2e9jy7&K)5>|ta8bC|(rg8e$6A=3+1$;80O zz;c~SimO*fO^T60N)0UUAoKeUc+I;M^8v_VSTem}H3trW`%J$$7}z+#_a=i@rZO;s zh8#eb{Hd$5f>tYnRuG$+Gn$FBs+zG1vI?pSstPg+vI??4kr5O6+aMwFcgEitTztZU zGGanZ4H6Pe8B7@pza^L)ekU*~usrztfc2}0;;#k~1@`|8+}z*3v2u$jvVypbU@q^h z-(1gFzVZI%y2<kG*I$-zH-B?M*Cm1b;DQXw45rX@BEk+@(+qNuIine5f*n-^HZcr3 zcMBBWOboojg8vlQIe3Ky86U8-yg=dpUcte}#2_Th%fa@KK}eX5L74ZKg9yie1{Psn z)&n9Oj35TO2=jjiF5zDeyu!?k3|zvj2Y7`+?LW|Xl{`CW=zyJppFy0#0&*56n~0bZ z_~cb28nW6^osAW={8L@c+>YHGbOI`9=_3>9{txdgM#y=daO%UqlrMRyYybT+QQ{F{ zW|3f3<x}LB;^SwXwEP3(9L5)nbC|#<VnXg1fs%}R|Cao_xmswg1s5|TA2+`kt0JGO zl!1Y>deq<kb&Tq(SA*OQTGzmU<ZeCCnQaWvkv7;~85j+kM-UYelV@aSV>h#B1l@6= zVkV%*C;}R+1$zi|ZKtW4nHuOC1y*zLJxq)$3M_JrSbg^LU&g<=7yFySr6u%cRBKzh z+MZ!dzIc%_5aeMu?_>Xd89K7^ORzArGIBBTFtHnmYD&m)&)tfcK4IF5baW>q3>X`_ z-*gt7_A*L{4z$lvW8>(4!zlFTU-!CyH&=74cjn^|6=Y-)VBu%xW8yFsx6t#@h-74& z*7SBwYU-M|p#1QklZAoxI|DNV8v_>uFKDf#ASa_Bqa-6Eh-P8{?XUd@CP8e*NJjO) z8~@#4F8{lcQG;b3h|T2x?<PnTe2zoV{{w7$SiQmJ5E~<dvJ$fzGn29syE^EQMRPMT zaUoDRnwy!MDJ!uHv5K*+<@&ep-{z-%Njec8p+dR75-arPgvOVM>xh{<8mFgn@K#wm zR4@krX8!f&U*f+&M)n1aPK<0mNutv=x;Qu+yZ=25`?+voXtxw&CpQNujv-@;46F?d z%%FAXp!M*K%)*Mo%#3UdzZh6-@812}cK0r$Eo;Ls2F9gK<&2vDuK(@)cLAgql&%}V z<FL#OLJSTJA>dP}6+v?r;^yM!>gMX8JGNPk#MsTjog2{lCsAY2o+LJYMo~pmbv-6K zMpMuk8A_nVQg%#?rr-sTrh<y>;^2aYpHY;J;THpQ50AIJWOlZsyf;t0se<XhX$q2z z>y({53|m_gd_=f-JsA&7Wn*PxWZbXzoQ;E-N1Cb3jGdL~-&^ruaUMQ5kmFenC<Yfv zT3SjL1uG^bELPALHTPEKE3Wlu;P}_X$HT}T5yr>J$il+K%Glh%!yF(jEzAAqa2O{e zGcykx6Gy5TyU4#jK29diFwmX{1{OxP0w$Z(cz&C&4BYIX&|tWD*Y5#{0iyrE{r8fS zlT8SG@f3JY798IUYz+SyKznBXzy1H8lM`$bNDCA*WidB^&X;6hU<zemU_1c9Ak(p7 zW(EcZHb!u92&O^SfF_bad)`5q0i+*v+ZD(xP@ld5bW<7vGkyWHW7$CFAjz>cFff2H zD@Y8=MzX(>wSgfIBoD@r?P;L;6qJTQ`Xs^Tfy5gaj9_YDV#qYeOcszG3=9q+bs+zM z_#igeZjiem<}k1|{QtrV;)B#f-2_s@0+I)bLurtiI59{cxT^?W`V7j>3?Q{2`#>1P zhMU*GPz5p{?p~0+FuhFwf3q?$%wlC=h=R*Q-GGPh0G4ZDFlB3CFa_BK<})zxg6sid zwg!e=s2JE?ATf|S2>$<;wc-DNm^(pYAhqla3{hYV@*5PhH-OWG14s=hkAu{KFo+Mv zP``l0K$scE2k8g-5yl7k2`UD%7o-;CCNKucfp7zZ4hsWAJV*|t24pu#9>fRR1&UjS z|39E?a5@3WVZ{v$q9Apw4gbG@XpkC^d29^~0#G`To#FpCkQ{3R0}DtVhCyQN3=I4r z8Y~8KcLReoJJ^0md_%<*KxTpB8HAY{7#x@&YQgCNBnHB8b0FzT1H^}6=7#@&Ky0vo zLE!~a!vHcDghBoXVUQY-{V*|*{UC7=W^Z5s#}7!3t$_iOHXvr{vM@04vNSOGf-qA9 zgDz78f)7#;!k~Nt$}b=@LGA!ykX;}?$X*a1gh6USd=Li7!7x}H63-xafbt(Ndjo?m zSY5;apR5i4|AO>`!U9Uifx?NYfgzENfq@l-*&F`<0n0Tofbu>sEPt{#{Qu3?z#suO z3zSBXFxc-53_Kt?kRL$q0f~XiEf5=o*%=tjKr~34h2j5i7KZ<z@nF1Z2josDR%LEt zU|?bX{|DqAkUgvn3>F~sz_@`yimib`ik$(1*%%n4z!;haz-ky6q``iG#VZ4Y1IR5< zIj}omd=>@<7mzqJ!~fqP42lD=olx_j>KH+4K$w+*K?h2M(;JA*&cL7!r9ttaz~1ox zKgbM_7)U=W1A{1tje<eugVGBm>=`&fd=N&snE{mdIU!-6%gVrz4>J>F4k-RXG)N7I zX8*>Z38G;brj`|ye~`)(ka=)D5VJvLl>kT#gxMGv6hLNx;sT@=#3mA}gX{#E0ivOp z7es^fvqQs~m4U&Moq<6JqVE4cc833dLGmEX&cI;D%D^B2V#6><KNifw&cKku#=sB= zGKYhKK?|gYje&s;Bo1;nHq61mzz4#hIKgH<$SjaKFdC!=#0FuIc`!aJ0|U721>(an zNDVR@#s|?L49aI9%)#*gKL-PYFi0)TOpu+d4FA7@#6W4D4O&Km%gToTKRFowzlX^E z|Hi@a|075Z2!r&2FhmYgMuPYt`(PL(2g4va5S!x%gAd4V5FbRNW02XP_y?H*k^|`h zVGtXHVfsK~*f2;QghBd27{mstW8VsHuYl4UC~bqvEe4QztdO{5VA}y|Ss~Q0GyMO_ z#=roIYZ0h9Vj%VG4B&bJY!1k57zVkSoq<6WsunH}6%PWr0fa&7p$#@%lo$g!P>vyh zVG_d?MkmGs#&t{#Og79a%uOsFEazB$vD&aMWBtPx!gho`jr|Wt2*)Ij2b><9D>(mg z1#wN_y2Y)-J&VVMr-J7cuNiL)?-D*2z7_mp{67541R?~w1Re=$2`&=S5NZ%M5@8aF z6WJvyBAO>AA=V}KN8CWXM*M*II|(U?B#B#+5t4_bw4|b>7D!!?dLykMZ6}>4y+!(o zjF^mrOqR?xnOCwdvTd>-<UHg~$m_{B$sdvbqhO+tr?5idjiQZWkK!T4drD?XO-gT+ z<CIq@|5IsGxu&Y4`b@1!?U1^fdVqSB`U?#QjTDVl8V@wZG~G0pY2MLt&|0Cxp;M<T zqPtG_ik^;Mm)<RXCH)5ddj@WX5{5NKY(`Z^YmD9)rx|ZCzF`t(GQs4MshR04(+_3= zX2;CK%)eN)SSncNS?;o8vkI|IvfX4SU}t65V)xCy#zDZr&Y{9F%yEyCj8mJ_5~ml= zLC*hNCb?R<iMds{y>Jh6KjabR@y^rBGsCmZbBX66&o5pYUT$6~UVFS*yu-Xd`4sqE z@=fzy;3wcW#qXVef&YO3p@6i2H-S-s(*hp^Nd%PzeG2IbJrNcZwkw<`+#<Xs{6d6G zL`KAxNQOwQ$dJgo$Q6+vqU@q-qK-s;iw=rj7b6#A6Vnj$FV-P;6$r*j#I?meiFZrT zNLZHWmDrW|DJdjrQPP=Yh2*}JxRh-vKT>s4r=|W&(@Wct&XHb~z9~a2qb1`?CR3(U zW>e;oES4;jtf;Ij**w{K*_*Pz<Rs<H$a$BmkeiV^EB90$M_ydsqP#EpX88^IrwT+0 z<`jG>EGs-$WKdLBtW-R&_*98W$%ay`(p6<zWh=_n%GXpFR60~yRMl18sMe^?tKL;3 zR^wGuQ>##WqV`{%TU|ljthyt0@9N#^^Xk7e9coT$e$o=qGOOi7t4V7~>#H`awz{?# z?dv)kI(BsibhdTg=`!l7>)O*T)}7IPsz;}1S+7R#l)jL@uD&b%M*TVcUnX=+6q{Hy zao5B*lPo69nfz+Xs;M#45~jz@_%Ks%=8~CbX7SAGnDuUU-0Wj>tmfR9YcqGv+&}Zm z<}H~2V1d&@k%dzhi7cvHbY*eK;ulLomb_W&uyoNfxn(WO4lNH`5w?<T<+7DGR=KUZ zvpQ|{g4K`K1gvRWYq7R!?TdA4>q^!ut#8}Vu;JE5p^a-cKG@W?>D}gxElOMZwkm90 zx7}lh+Rksg`F6kB<G1J3UZ1_Y_WA6avhT+J4g1gS|98ORz@CF%2j?8TawzT4t-~Ql zY>u2bDtC0=(M!j5jz=BeaDwl|gp=n^37qOU&2qZw^tCfb&SstCJJ)sY(|MQklg|IT zka3ac;(|*~m+oD5yS(O#$Q8dUHDI{us?^nKSKnNVxpwQi*mbY#9oKK&5W8V@JLvYR zJ1KY8-T8Lc?rz)NV|RbtGq^YFzSMoU`z;S79yC0-_OR^XvqvtE<~`<kob~wEld7i{ zPmeq+dd~9vzzdxhD_*9&ocHq6s~xY6Uax!o<xRm`pSKI%DZER1cjvvv`>qc*AAWr7 z_{8*S)@Oy!0iXLmKl@_zrR&SHuX$gmeZBGZ+qWY85Yo40s$h}?ogfCD#RuKY4eEqC zz>7#hhD!|042&$GA~+7bGYrILWDsMBgNidT@G+D?*~|=j3{6lr3xgWN1}K}AL51NO zl+DH<1{xdyo5{|wh*1D4&cPtTxCzSUWDsFI1!Z$HXffV{viTTnm^h&96AWTZE>QMK z1_P!jDEkxx2U8c6eVT!bX%d8elbJz^X%2%kLq0<RLnT8ILncEyLk2?$g93vKLn1>N zLn?y;gF8baLmop4LnVU(gAs!P_+BqP1_cI3h8%_*1_dNt#b914Loq`tLlIba3WFYl z8$&)r9zzL(BSSd@NG_itmm!rQh#{3BouQN=har)n2x@yVgB61U4)q`zi0wu=R4AaC z83uMmF+(QUegy^-20bt~K=KE6w*@fdFr+dhg8c#VUn)Zy*enHx5{7&R5SalE8EoMO z@_RBv3Eb8+hJ1!1Bt0NLC^SH(6fq<+q%fp1<buN>n?Zpgk)ed41RSDC45dh><T2!f zdCA}qgoJ4kIG#{L6<e%<;<JRIfWeAEpFy7iW`80|Z0LdAOT0>bh8%`W29Rs=z@eni z5YCXwkOVhffx(bLkHLT;grO81QeNPg2BjYh29TT~gB61jgE4~@gCT<vQha1Hq%x#3 z6oA7F5^t~=QeX&XC}b#Q$YdyDC}K!u$N`<X2+xsN7)%x5yv)SF%*e#h$I#8t#n8(z zfng#eGb0NlD<c~tJ0k}pCnFalHzN-tFC!l#KSK}0B!+%Q0Y*VaAx2?F5k^r)F-CDl z2}VgqDMo2V8Ae$~Inap)jEam(jLM8EjH--kjOvUUjGByEjM|JkjJk}V0}c!r4H=CX zjTucCO&QG?%^58iEg7vCtr=|?Z5izt?HL^y9T}Y%of%yiT^ZdN-5EU?JsG_iy%~KN zeHr~2{TTxo0~v!DgBe2@Lm9&u!x<wOBN?L@qZwluV;SQZ;~5he6B&~jlNnPOQyJ43 z(-|`uGa0iOvl(+3a~bm(^BD^m3mNzr-ZStr7BLnxmN1qwmNAwyRxnmFRxwsH)-cvG z)-l#IHZV3aHZe9cwlKCbwlTIdb})7_b}@D{_AvG`_A&M|PGFqKIEisG;}piJjMEsW zGtOX~$vBH~Hsc(|xs3A|=QA!~T*$bHaWUf(#-)tQ7?(4yU|h+#ig7jL8pgGZ>loKF zZeZNVxQTHy;}*uPjN2HuGwxvA$+(MgH{%}0y^Q-9_cI<~Jji&6@i5~N#-ohK7>_fa zU_8lqit#k#8OF1W=NQj3USPb)c!}{c;}yoMjMo^iGu~jl$#{$LHsc+}yNvf3?=wDN ze8~8S@iF5Q#;1(W7@sq~V0_8=it#n$8^*Vc?-<`Reqj8__=)i|;}^!SjNcf)GyY)w z$@q)$H{&11zl{GF|1&W#F)}eRF*C6+u`;nSu`_WnaWZi+aWnBS@iOr-@iPf92{H*W z2{VZ>i86^Xi8ClMNiaz=Nij(?$uP+>$uY?@DKIHADKRNCsW7QBsWGWDX)tLrX)$Rt z=`iUs=`rau888_#88I0%nJ}3$nK79&Suj~LSut5N*)Z8M*)iEOIWRdgIWajixiGmh zxiPsjc`$i0c`<o2`7rr1`7!x31uz9N1u+FPg)oIOg)xOQMKDD&MKMJ)#W2M(#WBS* zB`_s2B{5uLN@hx7N@Yr8N@vPo%4Eu7%4W)8%4N!9%4aHIDr72RDrPESDrG8TDrc%- zs${BSs%ENTs%5HUs%L6oYGi6+YG!I-YGrC;YG>+T>SXF->SpR;>SgL<>Svn3G?8f% z(`2S8OjDVrF->Qh!8DU;7Sn8|IZShz<}uA@TEMiBX%W+6rX@^EnU*mvXIjCul4%vw zYNj<zYnj$Dt!LW6w2^5O(`KeEOk0_@F>Pns!L*ZU7t?O0JxqI<_A%{eI>2<0=@8Rl zrXx&8nT|0XXF9=jlIaxFX{IwwXPM41ooBkhbdl*2(`BYBOjnt%F<oc6!E}@97SnB} zJ4|<(?lIkGdcgFM=@HXorYB5KnVvB{XL`Z(lIa!GYo<3$Z<*dPy=VHs^pWWk(`TkH zOkbJ4F@0zH!Ss{q7t?R1KTLm_{xSV$W?*JyW@2V$W?^P!W@Bb&=3wSz=3?e%=3(Y# z=40k(7GM@+7Gf4=7GV};7GoA?mSC1-mSUD>mSL7<mSdJ@R$x|SR$^9WR$*3UR%2FY z)?n6T)?(IX)?wCV)??OZHefbnHexnrHeohpHe)ttwqUkowqmwswqdqqwqv$uc3^g7 zc4BsBc42m9c4KyD_F(p8_G0#C_F?vA_G9*E4qy&s4q^^w4q*;u4r2~yj$n>tj$)2x zj$w{vj$@8zPGC-CPGU}GPGL@EPGgwDUYeI_VBlx~qKym;V6-8WZv>@{p|lB<Hign= zP}&?yTR>?`DD4QLjocu#DTFq4b7oD?Nh~gA%`Gj?OlB)iO)N^z;7H9YOU=nINM+4P zO)M&5DK1GY;sO!zsksFul`N&jsYNVlnK`)}B^mKKiACwDOeGoYAa-VP2~&PHTTyCm zepxDeRepYMd}ba8n9eUPVa`uWV=K-~&r8f<PR>tfEh$PY&S1&N&rRh>%gjlQPs}M{ zDap)DWhu%}OyNn%FVD-#PfP&`bHF%kr3D}{*37)5{0i=ZoW#ob<jkVvoK&`=)PmH+ z6856hw4&7F433=4;u4TfmYn?LY?ic~#B{EV)Wnp6jQqURVy?3MoYLIX`24gqZYUFE z0VkAQTEJFVl$@WE%AS-6rkP6;(^*Oq(~DV>^7FGfKtyh0Q8sHqQD$BVTXJG<YEdFf zT7F&$OHzJL3R`ALVoqi<cS&kRNqk0XW_m^m7noh1nNpI$m6(&6o)@2!npVOCVJ4^M zm82GNLpVhs<-8DfR%vlbW?Cf+$S>TPc`2!RB@lg3HdrlRT4Hi4DAeN1GE-9X*$Xn0 zOG=AU*$Ptgk~4F-auW;UL2gYgVoOW`8OTzSnODM+nvz+<TAYzsl**c%k(!*%0*Wx+ z;*!*Y_@u<-?DE8-6yCJN;u1KI118J@3Ut<j#M0tamg1890`|20B9L+(uyPm&Y!Z~i znwpiGT*8x_ky=)i5AiuKj05%pXF*PBaXcttaOGy^L7Ci;L<AOQ&(8+ayoIHy#U+{f zd0-xAW?ou8n8j6`T$GxcSDcYw!VA>~Nfn&=+0gXCm6VtVV<r|A<(Gp)k{iMVyMhD4 zE-m1KFu*AS97LdW#9fqHoLQ9`pH`Za!vkd(=O*Ul2&7gd=OpGP!kxvEo|#s{l9QU4 z#*&s<l**A>nHry8kebH{VkGC}7pL-+Cl=*p=B0z(&RUR@n3u|toS2iEmy%e-R+N~R zlAp_-oS&PUnpeV>o0y)LTEYbjuhIf|ID*{AUX)r=o|;<1Tbz+!PyjMAIkBjOCoMlG zCABCXY#BF{19AdC)Zt~RMJ1WZi8+E$enx&#W>tP(Nn#FXQeshjat6qdlJd-wlGGxw zBY8oI43zA_JRV4jk1t9sDavQgPOW4~&QCAqfI7LDw<M!9H>o(jv;Y)v{7@dqxgb6# zxFE?$%t_-0moAVpg&h?8`K2YiIhlFcsVSL|7-lahEzT&&%;Qb1C`m2KOU#J}NrQ`! z%sjS|qWpr4O78T`l8n+Mu*0|@r31(s)|}Mb{5)20e&+@!afn5HAYXto1cb{4Rshz_ z4)rhx%&%+^li5o1KxGJbauF!g#3v^fr7#y27c*z1q;Mpa=Hz7L7v-@erRL;tCxe1D zEi*Z>B$X>8F)t+^oUS;*Oi+Gj2eV2GAR?du5ribucu0x^sS!dE0UN-NB2-#{stIHa zYkE$8QYu?{QEFat25U)Tadt6VT4qj3Y7u8rQD$mda$<2R7bxXI@(F8tQGRIw3n(mE zlXLP*Q`nMH6SGr`n3GFOSd#M#D!B?03&80ovw)>Iu`HDf6g%-rIf;4M>_w^hMJcI8 zOr<$Y`8mABB}JLpsU;aj`K9R@oTYgwsYN-Nd8w==iAg!BthtHlnaQjrMWxBvoCTSn zQZBW)gb&UF2fILeetvpRYCOCQ;6@T)&CSnCt>j8hEJ`hj2l<o(!YnO-ih+WR8zKe{ zEB0hi$(~otQk-8@!U-b4+StLY(gGe>%?3&$9H0OIr8Sn)yp(*_oYeHh9L|));*6yH z#G({#XmSRr<bkq_K^#ySU&3CTS(2KYSin)5n^csVlat6=kXT%j%9R5uzT=ZhbCNhx zE0Qx3^U_oKz(EXl2B_-dfp8%yl^s--#^<JR7nh`#WaJko=NF`M6qja}fMSdTl&C;9 zvL)xIrKP5_q~+(Q@PcbfaCMTHQ^Ju{nwgW5nU~IykzZT@s&_aObCXJQ67!N%*>Y1; zvNKD#(?Cv2EsD=dEn!JYO)X-}0EatEnn7BsU`l>z5~$|Q14RKSFojS=z+uXdB2-#{ zstFV;T#0b~+z=*MBL{>HDpA4mAf@ansm0kP`2}n_i3K1EoKQ-5a`TfwEdX$C<bkGl zaC+k^EX^-Tg%s8hCfI29;)2Y)ywoB#h+5X7)PkH!E=Yz21(^V})B_iRAOU`;0H_!Q z@wrkf3P4#jF{gwlIX@>Sv7i{-0AVf8&CE$<O)JVT&tuL_&0tSY%uOvwOyS5*tpukF z4p3VHWC9<U0WMlni&9fKN>Yn*GxHL2SU@cYPOyXG6LWI-;pH8q#No@yPli+$;7rew zT$EqH3DOdumS2<&Dr_?IvRUGd%q_W*Y8LL|(t^~Y;^d;tf)dW+(j*9rCEm!wn5Uo= zbc9}fL1t=lDpzhM$UsmlhY!I7HFVgDGcr?iQutsM4a7BqpeiapwW1_5FTFIgI3u-) zttdY^I~7#%R3xY53BoEKa0viTASfc>$lym20u@lusvfKf6zi-RCAm4KEXl>i#%zgs z$r<@YT#!-~6p-Ljv^cdgRX8;#C$pe9vp616Aqm38V3ih2ys?2XC#V$yPRDE|nIQM_ zAzBU~GoeL3Sdb$pwJbF!zO;Y~!T>o4RG}tA8Wo)2VjbjEmUv@BBQ8jl58{I=;ey0s zP|XHOAc&Mwl3xH)ZO)upTEv{5RKQ$XoWh)$SHzrEP{~|Wn#7!4RL-1Kk_>7lr*gvc ztN^$iN~(-c%qhr7OiC?bi8nT~6oQMEloVwqm6oIyi(v|Zyu}L>2A9EtC_IonOT4kM z35YP|smw1eDNRZRhY>rJ!%~r%m(B?yz`}4fpul8LDatQM%CF!pE=f$zh813%nR&$} ziRnd&xol}UnaSBj%!w&^ENO=3hI~nxB}t{Apa+}9R#KXqlvBhFp}<1?Ir(|%(5ej- z=DbM!(gI{zP`VO8k_D$K_VUcUl>G8y_QbrDqWsJh)||||(hByJqRb>v-BO%gS&+(= zmS0*_Tv(b|l*(2DDu?sg(o%C1b5dDA1gHWp$t++lF3n?!H#Re42X$^T%Tk$>O4FIj zvRTVhGn4Y!ic<56Qb7vLjrhQRkB51lCEnQFL=>D&p-o3n7=z0qkdzr;N`48F1W3$+ zrz|r!H9sEWCYE?(3j<zA%?5U4d_G9X2t*iz2vA&En1WblAi^9(Sbzv{x6RGa(SRk* zFwu}D-q;eP$<i3a1!=MbX|e=qvIJ?e1ZlFgWQjL10P9Esv5Y{3F^B+n7TpY;3_%<- z5Md4?EI<TElc51iyon)5))1u05Twb_1SDn(B0xF}K{^aUIt-z1b2b2VCEX02LHdk9 z`iwyOj6nK~K>Cb8`iwyOj6nK~KsFhJY%&JvFb3%`2I(+{I?n}apbNOq>t^TzRsqs# z47Jh)+}m|CbOHBv-3(nohMR!QFag<W0<zTvWUC2S0;JUhs?`-_u_?%6Q;@NyAWfzq zO{O4CrXWqGAWfzqO{O5Hnt^nffpnOGbeMs3m_eQD29^V9GBamMGfV@^fi#(eB+NmY z%t4yWK@#R5Ys^8`n45tVC$q$xn1ie_2kEc?>97FlumI_>0O_y*=>Vk*6AO?X79fXN zfOJ@ZbXbCPSb}tb5`~E+NQb2fOPUcl8ZFI0ERa#4L}3C-6s86SEb*oWh9JTSL>Pkz z6A)nvBFsR9If$?T5tgiFsd=TvEb*qGBw-3l5~iReVG2qTriLIbh9E7VBw-3l5~hZh zEb*pBAWMuumVgq2DJU_Rf)ax%C^49V5`!ryF_?l9gDEI6n1T|6DJU_Rf)ax%C^49V ziZ4@RkR8S#JB&fjG6p%z7-WYD$PN>b9VQ@;fTG?M6!oT{s5b>gy(uW_O-(>LOh7tJ zK{`P3ZVHNbQ&7B{g5up26z`^>csB*byD2E%O+oQ)3W|4AP`sOh;@uP!@1|y;z%m25 z$_(TxGmxvyKz5i}vZNWA8Gs0otIUl+EKu-*BHa`e>89o&9p)e%ph!0bMY<^{(oI2; zZVHNYQ&6Ovf+F1%6zQg*NH+yVx+y5qO+k@v3W{`7P^6oJBHa`e>86$-SAj|bQ&34@ z3MvUqEiG8mjLcKPS<}b@lB0}3Hklb1vBaAh7=s8%DmJo!WG5q#eP#ycAQ=k~VaXD2 e21-k2p!hcf#lIOS{>=<c7#J8sx6eypU;qF`WA7jU diff --git a/elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.woff b/elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.woff deleted file mode 100644 index 6fd4ede0f30f170eecb4156beb7235bf01fff00b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81284 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íU6<{(szXBlm-%4kxh#texgb#cD#0C#zXb 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 diff --git a/elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.woff2 b/elgg_clean/bower_components/font-awesome/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 5560193ccc5d768df40766ba54491f1822ed683c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64464 zcmXT-cQayOWME)m_<ezakAZ=KN%{%{!|y@{7DhIZC_1)xa|`j6k&<IeU}((}<lt(* z8Phf;g3*jgg?X|IcV`g;ivnvq2m5++`|{MJG`8rp%@Z3hzWb)Q@V0=(pYzvD<{s*C zxv}&hcc|=&#K#N={_IWr_W%F?|2N%TkNF(Bl*i2A5E}YF{su?)8ppNOOIoU5XlmXt zNj@psdDbX%`K+1`p7Z?XOx4eMlXYZ;&{wOwck(|>*j=>fu;c3tm2jI+4#$n9<z!wQ zTb%q-JIt?S&xQ7qs{0lv4rOe3VRh7M$!Xr%;b!L#?U^_=RXsZ7p^iX`iFw|{L_V|j zyqx0P-N_d=&dkZ|zs5h^dq#QxvgEF`!{3aV)NW7Pwu$}LhLdWC+j8UD?lm`k^Iy~{ zSpDjkZqZrEXD?=N`nP9kY@KtqSg`NMtD$KgyZ8LC>vr2Ye{<KLx$bwC&xkUd{ybt? zV&uLF(HAwow{MSFmb!1!#rXDL`LBXEh+2FtcDOoy|EEo_cCKv8uiSd%hN*JOiA&PI zx3pC3Tc>sJw@*lDdH)iryD1@h2QI&x6TXYnO4!oj_8Sdp7EVT2Cm)fi8w@%^0vt9} zr#0G^7Q5+}6wl7ni`iWkyZ>$YyYH*x|9^iJd%<|G|4ru3tlMiBEA{j*^Ejur@PD2C z-8nlQFNk$*b9z`TZLsXx<cs#}+D+Fkv7R>Rutl?o1e3<fw#hx^$4}pUy5+0kpF1BJ zKQlN)s2)A%C==6i+JdQV`Od%5LAP%tT<MTq?ACF_?Mh#uX@=m9i;JDS9{L5$Y?@T( zBG@){g#^bb$*=oc6I6`37ytV&{VP2EtWJ3PyI*Ijwb+)QShY=2`ZCkYzf&77_XJCw ze(JGl+Wr2L>r3z2uiVX`eRA59KJUpX!9L~^{tI)I)i!Kxva5f2vD1Ok+osX1RQ>(> zi3}2R!i(ez1zvB`TFLxmRY>XkufNuO`|ieP!6|%v!?7!d%(v5e9?zKmDx~LIZRqD^ z6AwSRw(Yg&vP;KoZv3)SYWg8Mq2OdiMdg3{<$Isk&zo`lgT%T72?3|dmMy!Za=Yx8 zywF;DO7B#})^~Tp^0E#G?~eO)@7vGwO<7V)uT>boJZO20@r8r=1>O?ox%`|~|I>q` zBkeA!=~(DBKNY;n!rjIoKS{=Pv*yzBy9b(5@1%P6d2$K-nQ7THEpGn8@~rzkDb^=@ zQq(nVRHO`AWTMMBFWuTymsV9j%UbM)-!6$VuL(<H-3}f)|BYdVR<P~5$w|#OB&T`a zx;1_OzwhVfo0n#vpSkl__bJULfki$s<?PuX@{W`h^4cl~_u6i{;v<n=q5Spc$w%2Q z*;)i7=ZJrL(!A=a;sKVF-Dg%woM2?w{!>46wYGzx*;BtyE|rUZ@4dF9#Ny_yIr%>e z{x4kB5YOl!$}lNZ!GlRbl}SN0q;Uengh`A7OB^SJ7<=*tZgQWbzT)cL^_n+#zb^A% zp%ozH(8{K9TJ2_Mkb35#yBGIf%&fXPJ84Jh{by%a_SfDyUDzl6DYLA<+V<_s9qq|o z?YC!{iMlhcm@<Xwb&0I{X^ZGRRU%WZUq*<uUH)`odr8@Q^;p-67DMaeD@&)Si5&b? zqjStPGJu2o%e(sgnXC7=T6W%=&Yfx=J*#oa^`~WXx>IFeNx5dUu3E89e*ND#wr!EJ zK{rcP)+Td1I-7p{CO2O?#g9Gg_q?@MOFIO9H1P|a*y)nnb4JEP+eqnoQI6*)`xBXe z;-}pEy6l>dsg?@M)vXtD*L?r?qcivK|D=1LbpP+ZwL(K9K`G*i%UsF5N)8P7?p6PE zY6us%^LqZ@=GW>MQ=d3QI|#b;E8p0CocY-KDX$w7-(D>fDafoy`D$=ts!i;l11EFY zU;LAvSH$?|<wxziMR%*4J~};L{O`TN?fAXc$xl@i<V$6oU!IH2Nf!TY$=_ttYtp(z zSn7OF`<eaqQA>V`$`-$sIASMr<m$P<v+gz(JyDm6oZEco_~bpW-lX3XdtK*#zP6r0 zXrrEd(VFV#f4LPtKbYX<tS%zKcyDF)3k8Qc2ON^#ENN0cGB@U7TjJ-38_$`&{@1vw zebOWm^|>xdn!4%n_R&Ay-+%sX=Gn<JoBftf@N{94YfqRVpf-aui77>D*D|e5DqJ?l z1^%qPAH9EbUH0E&zqWqWu2}nL{*Sv`KC1i+{@yuD>$}F+pY@mQ_jWYp%f}v9dE4+i zGx6nwpf&5g{26Y@cb+Y%Q?4mm=pCqkW53rt_M<I3Cnb9BE4$rvaDj!0eH>3$ZfcO| z<%!`smcE)>KO_ab`K<Ryr8-ksZ?;L;wso?CjB}37e8slLNW3|qy4w8C1Qqdn%<_|z z+aAqZ;WCk#wPW^kR^3Xs<_8CD3Z@*<y`=GSZ?wYp=nMZsc$K!~sjx6{L}|>s7LxMk z%5xR32umx~vJ-C_)|^XZZDKhw`C>Y&*1|fiAl;%fo}EF?7vsaUI~d-*d$*3aZH~_W zCs904Sz;evt`sWbetFTy$sqQUT8o6`t=5G}Yg}Yj>h7L%?MCrIfe#`nUpIMw&hk@y zt9bBoa7t?LB%K9yRm_!1ohK*Umfx{z!!0h8iI<(+yrw@<c(VH<<B_M9qTLH)C1n1V zOgj1_jdjtJmFGXr=jn{OcC+;s_k<LdTL0MvNlLa;H^wluNy`~{Mtr*FV0Ys>@5K$A z{T-Ql|L;fL)IDBsw6wnMppXCYo(orH!mG~PZb=V5k@jz&Vq*UCFxOU(ZRg*tn#b|Y zm`|zwbL3``b(_Ae+*)ciTeH=^P|@7F&OdxFGn>fAN!icb&&kd=kFPz-7-pHqs&QG6 zt$Vdde(9I2^zA#WW3D#sa{HR4p~0m;VQNT|uB2mG`CbpjMan*Emv5GtR=eBuvCiyV zq+8B6pHa&0%!E{SljMmjYVGXfE54LZzCEpS^@gVvJ|aSI6ZzECSht^#sxSUqwfm%d zbxq9#el}^*&gL`ILboowqN?4uKJ&-SovXg_$1!CU$p1b%TP#Yr@UDUL?zsVHJ{hj( z_xo9pYx${9b(Plt`C*$^c5*Z*N1Mv0B|qy~etFwU6MKV&i57fJ!grS_>ZIMDAj#9y z_T%TRyZIj^S=LE?yf`_%VzbyA(OS=d72N$n(z*3Mmt_80G5EaFzP;$~oPFD;TRB}Q zS$()J*8FGeq<F*o>bYBVW_~VB3~kwPL&jJ;zW7Mp!`n8mT2I;7bRA$wc9_A~moiZ^ z<*ZD8>cqEQUl(Z^nd{6@+~R4m|Gbiw!jv-6Hf6h`Oo6MiA16w(u<!Z8A3U*6IcbBf zlkLBoHP24|+aY3^dR5@TPr2=>iXADkA3m>p*fg!+=rxAxOQuPiuugfGaV0}Apx-8G zu6}-6%f07&J60SCZ@+$YBCAv1>%>RLH?T#OAOETmKe0w-hiLc}#oIYY{;F)Y$dfJ7 z)%e1kT)E`y$;V%q<Lm;2y5IiP*!GiSv!P0KT#CrLPRp0p!YlvmuM+;=AE`OXE3c>a zvZCbgJDY^(@UQN+et5sIBXjL#?YGlgJgzGls%YvwQj`0B!$3#!u6aw9%)HHPpEOo( zy*b15Xq<UhSi`mK9wW`Ijvg*DFSC1D_S>J-*cDZHHREDm+q~Cxasup&r9{(|Py42v zFz9RP)Z%(|f6)caa}%{fTaJXS(umKx?CX6s_3Z5SEw2_9+iuKU`LwHJXHr4TU6<_b z@$zA=;&XM<Hu<gDog^3>Y1pc`deWYVvdV3Dcvh@A%E|ivFJol=BGXkb%{^!7Og3p) z%=@t_Ins7tgh9+-5pNw|vsdlztWVbG3NvN)ZgVyB>GimEkVSFzMGyX6-mz=hqn_P% zS#!E6`<R!S`=Z!b!<~$W5_H;c9_UdPy=cOAe9h#C2c8}?&D_-)kvU7$P}@_$rBUne z0kKcBbz6V^oq0v;RNVeGmn90*p9Q@t;+(kjNW`L58}7F)$**00JNm9uY5T&GXS1%y z*SRoVQ(AiAossh~qt9n9)oyubUM$78F<2p>;@rwtC5L7<pSM_~@WMq$Fe5o>?c+@W zQ<clDMEbbR+cupJtbJO1c+aX15ti+BXKy}!{>)`M`}u_a?7Tl+(`)9w|DazZrlwVC z(DBPtqv+&w!JJ7AKR1WYJ1w6W)cm(6eDj=A$q=87U74CHiO#NH*6U65D_J8f9KS@h ztK`U1#*LR6a$KkKI{azA_UazrvVu3aI6_VtY?`#Bw9mlj?e08bmfbO-uRmH%SvUE* zsaaula{We+?kuDIb-y1Jcy7wg%Gi5NIAL$w+gk-3?h~&iRjm6e`QD)DyN=m>#?IFH zhqFp$_eFg<r9bQD#*b4S<yb2GXLnsmJe08|J7aT-nA+qeyYDPeFi-I7y0mp^+MSY~ zZNVEBDwmym>J!R&cJalvZP`2c=I-H7%HuLOHB9E^-WFxFPW9z^53lobC!R>jO>$oz zsd&xn<99Zx-$8$GIv5;emnspB-&M2g^!GIGDal#ae6ur>Z%cnTQ>#5~qV}wEwd31n z6)&>zs{Wbp=&csWn|r5jft+^zQ=iL{kt?&_{n^=<C^SFc=+4Tj$6Wg+ZQ3`Be`lzA zvzEBh@jC~<u36#R_MuQ}UUAFzxKE9LJKo)#>3T${B`R~x{1cP6p4yoayz<wI%yZMa zjl(vEt&Myk!<Q|4@o5k<!`z2_kG|XR``vV#{_Uof#_AJyD;rik2-sTs^6bGirCX+@ zYTb;S%D>bqlK;u><exsjznPkUwCs(j&fdgx`}dQOrd9VV3>EY`9>qOT3r`KzmOuV2 zZibgk@~K(nYXW_jYHsMY@6y!Q{91U)BQWI5#H$_iO|KnhwCnh_Moe`J$JwQBdnL}r zp4~rd)-=<ld6rElEL$J&%-26{@h-@<;lS1B?%5pW3SZ7Hv$@jO;k|A5MuviGt9P7D z=h<}hjFId2lf@i+RnvG+tJ-`|a@)}JIP%nl3GQ9S@w=yOQ;l9`x&O`IIcqoHJezxW z`_j`lSX$3BPE>kQ^SJpG|3qH36&qgbUi=|4+bgkO_v)VeqUzbq9Hnt#{dbQx@tDjE z{W(`!{?hxj=SxJE-j2TPdDAX*iruawJj{l1i+7zDez~dZ;@2zw(R+Md{o`*+J1@4p zIQQ7(Q{T#F=>+if-*~S7q~zYs*v|KDr`}K5q-E!39(wW85gV;t3nlYJ)n>MY%Y5~H zB=|&2{ke^5K*WU5*5;jubJW5LdpA$qp<wpT^`6VAp75+$H^ZeI3tae~nq+;?dYQh? zuJ&;DUyHXfi??bnT2rrkwbK7#ZQJKIULAJTCwcaoO#1!KUu(4j)}L}dts2s$=eS4d zU2I47+@F>)#!i1KSFTEX^R4yvr=%3Skj{0vwQFxZS#xsBCGo?xcS5xL=YH(kzHQ^a zk233aEj9=d6$p-Oy0Vw!d+xcPom~o7e*S&`xaOAVJ=xedpIjtwyRVXTTlqA8<=!4i zl_^F0UL5W4JbO5N?(LYu#nsE7pFiz6SNh{IR^F6;4*seo>%$Xnmz(Sh{V{LpuCwXP zHi9Wip#h$rJfR0~y<P5kWvz3(`>R=xn%~ZLKB--+`X^}eRmG2$&b`Z}ET1)>oBr<0 z(yJS!cXeM<`2V_jX|0aP+CA$-gBxEiTaYWVY?YH>U9!itKk9FTy(9U8EB7#bH8>D; zY(?bfrA()0->hQ`({{5lx7k(oRi>S%Q}fFEu9of7S!|V~_ij5JKF@dQj$23MKG=zR zXUtcdxHWf6n5|~RqwI=Pg-e%j+&y{a<@UW>lT8ZZi(Av?`P&C#1FZm_&?>d|Kl z-cS5=Dx5Q0r)Ram)15mXez@=^hjW^J$09@JDTcegwBGpm#pLB=KYjbnu6p9%R^GP0 zw5}vB|E{>mlv5r&3KnxCj>p|JD|Oy3*Xxt=DbjkwtYe~Q8$6sNg%c_^^;lFSCq7A- zZSbw6)8WmU`wle^p47_S43a<4bv{4rL$2zq$d{k?m)jqi&VID~j1}kA&)4*h3VdD@ zH#Ift%rxD1a$ncDrykyYe$`4z9rMJ)dk;U|xw0+keW=65Re_ghvE1G{=Za){Zr$M| zc0cj#)31_snyZ+n>hF#5HPz8;QWJ}+Ir95kLFn1LwoJ2ac9|Y3^@(4|A6>A2-=F`I zYUfO(%eMPis&=~+@mMyToAz{?`jPzZ-<y|gxcVSr0rRzU@_#OMd%uzUTR(I5z0YnD z%w5U3qP)+#=2!(6=iTk!=+FLmPS&UDTP6>-aJq2qVEWju8@6}luStySSe!aO$v)R- z>|U;BQOCn^`@ZP$i{)Qq?rr9Cb6?@Jo7-@b#PY@6H=Zt<WNmt+v_UpaWBaC@{C$2F zJnu7>P4=FYbVGLD{wSxm4^4abR<b+$eQ<E#{@yop@ge>?12b{G&XvzZtwVzSr1u_9 z*DVXb&dBti?aVFNN`(vc2RI!cPhh#%KJ%)?k<d1&*M}|KCRn#DpYbxA`9!<5{l|^B zN(I8FuAd)W`%38J_tGw%9ad~>Uly4JdOQ(uZP}T?^y^-5!5PPWJ2SUUI=;~T=!MT0 z*it#pt~oq)UbN`B6p^k)yK2q$w#)pCdbT|3ahBnP!Wr-Hl%!>Td>!y6SMj}0_R@wU zJS|h+iT9fo@w#8xS)4mj<;hX;bN9s0d}*nEsI$vCR`bZyr{6xA$Rvo~&GPOJxuxH% zdx$BLn@4Sh^ZXSnPgURJj8@-vb5qZpD`x**_-y;<Zs=1vH#*}Yd(qs<({Ic^Wwl&0 z<95WY5Uaz>Hk~{8LrO_bKrA32=(f$wqqBKW{hK0@ShX-eBv5<x?lp-Ubsyw2yjpIl z-II20-r3s$$Bwi&UTgHdmGf=?*~P&Jr|P_{{qTF)7YR28wmuh?VmSft+}5_MW+m=# zRCw#`ul*Hi3h&}tySKpXvduPQ$t8ckD(m?L$ILMmn0)r&g$py3J0`q4ae(0_!^ST) zAu;(f4-A}F_I!R`sB&m-ABVYX_x}K;r)8qdXFVMrU7HZ(_bPM#w-f7azi;|KwTG9* zeA1mIzjhZq^37h?Qs5S7dRbTZVlm%}E{E_fcb)5|KaAvT;q_ko^>OwVR^Gq+#AILW zwCOjOSak0tzo(miwUW;Ksq6N-2-GaO&Z4vH%B^GG#SupDqh8o8<T`u7V4Is^`Yb8F zy9^Rc=atk$7?$;YFw+XVWm9yvWz)8WWo(rfT>LI5XwFoaA$D8nuta<KiZ&6EgSVtO zdBje$oO*lo=82QVyx)ROY`W-FtbO(2(Zp@MC8@PrKg3^tZvF7`8~w<|0T1u9Zgyw7 z*s`kc!YX#<9*$}E6PNQZtx3`iO;HejGa+O{1aHTT?aw|rvroMx{c4TCvl|blZ}mIG zaZ+qbXh=z6i#}WUp=i^CM=}$QLf@(dJAbyCb&@yC)BZ8@kI$=0UGyujYF%)T-`Xbn zK$YFo>9t^fZC~T8HLOw0kt)lUEofe;az46f#kvb$1LeJar=R7VQFbQ3`cRwQc>(w7 zQ=f<Ze^q^1;pWcGDUYuhZMhOOm$m12r48f4r;Q$S*p@4#Ol%Eq+Pl|Kv!d(J5~FAB ziDd>ej?CMm{q=>D_%2Sdk4jv#>+1x<em-vx^m_lvxy8q8li$&=Vc&vo>GWLs<el87 z^6_`uwaq75BBxk1Jqs#eo7;8GcZvJMm9_%>+a}1@1aozDs|O}bxhr0`fwOXUkBN<h z7n|RmEsrv#BoDSIr>(40)|$-4S9*47kMIVuPutqo&+3>aI%VyCE@5j9`DCBilF$5S zWgVBfSN0yR`TKd{;^rA&<vTZ7H7&Tw{iA0^__Ry)dj;)Rn`>QnF}^=#mDYWpSy$vY zABfRhbXM@*Yp*|=i*|dh5bc^B%_;uOVN=ETyH74}<=s}&U&hdL=}f8NWee@;ThDV< zbXb1f`m$PQ*)dL~UnSRXZ{OT{XQh^COwYu-mxDO}9qC}7*BWr}K$De81KW`^vyHBI z-k$T!Y0=xYDb=?>Ctq!w&K<S##}kQZg{7{SykAcF@A9?N=19O(4%gKk_9=J!L(;s| zn1AHmuUq06e_h06g+olj+NRB__J0i;Cv0kV)(F<V`S@w&h4o3M$Cw|V`1w&#+^X&P zw3P+UJ#B|IH2)+Y;5d8pLk7zM?wecf7qoDk6Wjgyl*+aFxh?zF-!ZUy*jw~rb^Ocu zA9WIr+^qZa!trt+#~z-ZMHv?YJS~ohPibD76<Gfv>1leG@su}CKGpBPYz=tK*^pQ0 zbF15Fw&BXC#rN&*!~~W0+3c{gi#ETy>Hn2ow-(6DXU*NR!1r6sErC@*->zi#ula2g zz+=`@mfE!ZURrXJgZ;ym;ohZ(XNjEGTeEF#<DPxBRhF~1K2pfgl(ShkclsOdipZ^r z>mK|G)NMF7BciNj;pg)+BAuUYN`AL&_v=}=)4g)~KNYJaCncRNwLVmEI8|KF|Ni=e z?qyolC$461e&)OB;5?3br++oEU75$Y|H+AqDGh>CWp(9KW0RH6E4o_Mc?&+bY3q+^ zUAf_ft)I*CCzbE#U%Po-Z(@11<2k7hZ~n^I9^j1s-du5rr!~Tb`TWBGHJP@xN+GQU zi+s<&liM?G3)7Xa@7>K#ocfx$b;)x<R@EzoM|hVyD;~J?OKblTlU93ut;oMg_d@qd zcO07<By-wF!TNG>#NF;EmT$G@hrL>+!{pR=s3&ma*B=R2R++r3O1S<0#$^HN`_(s2 zyUwlhm+Upjy?(AhO{#kLtfg%qS1b}-bJ8zss+9VgAF?S|xS}MLt7~pZY;-(+aNA_# zHXG+T>JCZ`FT8kfwO;<+cwzT>ji%Rji>jx+{^0#part+dQ(te~O<6eE_<Q{E%`=oW z`n^7EoHEIQA^nrW<A3>UQ?4$Z{jPjhpVXT>ZAZ4>sQ-{(uGi{zv9Vyv6IoMEwIj&~ zmN|1MU-#;G)*K;dWEs6yODdK*`{Mt%d*U5pVkbMRzIo=j)v84%#p_4=Tz%)%t&`oK z-e0$)e8=NxF{ys0D9=B4Ol}2jh;7{*Kf^OU{qVBn?Ww+xbt-R*TKu*-laqV)dDn%U z_54$fPCj(MW9A%w@QUJ(^~bqW^6LKeh-`Pi$hLFUC5^Mv{@!o?T;}|Hbav$Kkc5XD z_kO%w@JTr^b?ciC8-y*LlM+^*7rZ>@;K7nsA@ON{oGhQ-aa!njCwI=&C}YKnhRNb= zD|NgVDE%$v`l6M5I+<7hi~gDO{>tYQOegxkl{}TI!QrlQ_}^`r<kKd?nZ61p&u2gX z<dKx(u(|YE>Fp`MjWok$k3U*2@Xtu5Xz~KpJNFVh!Z)d&GQ1bd>;L>%bMfWbD?`M( zyQhT9Jw0rurE+-HCoZEWA6r;Wdw<U;D8H(yJ8hR(tKhN~n)*k+)jqPyb4!`HDYdhI z8jrGQtiQ+g744JvWnN`lJa=O1qV6}&FGIApmCs$pQL{c}0So)KCyzZ2wQf|fp3+?0 zafGdKj_aR!pSPItsWz|DV_me&Nkl$w{><VUQSLYS({1ISr)F*lSoG9iFx~CqYxj3n zZANW+(?2rhDRA)J51;c;+4-wRYPi^H_tRnmyI%MH=(Wtrx?DbO;ett<eODZxc39#} z%I1^du7_%lS;XvQN^{KLt?)nM0~5>kqP7c5-0Pwx{BrDr9vc-N$o=k76V=Qg6RmBh zap??aCDVnSDb`^tPH9xO3d986<eu$x`Ou=>hjqlOWEP4me$eip9OITM#uR+VX<_K^ zI1B$3F+Q&*<W@(em{djiu&M5i*3Pw9^z*Uc#W{MruU|?2Xras6{f&Lra|_?-?jN=% zecvum5IH6L?a;>QPxh|Q>3*_=-C~WxLFOw*uj_bQ-0|UWX(<SBkxS{>c$Q&$oDln_ zfQiK&dXE#t7kM8H5#ix4R6md+{pU!aMx?Dz#uUHfm$#hMJ(9C`&%6hhUf$<$%`m*M zY*yEq8;TskdEE)oy$<C+R?OvD*0|$9)MH(7`6Y8iW_CW`7?#RD^XsyVf-e7u${ngI z7K!Sub}2TGR{wiu>!<r~v*%<k(erzRrf~gUC8ndo)wN=RvaoQ+t)EgZ%a(M+e(~Zw zvYgK#p<F6LHru|%+T+gd2gfQ`Ur=CR>{Y&%SHV`U93=QJY8%_mqp$S1CX0szYe!U_ zU*U1NT>gm8qKB9JOZNN?&*F}~{^wHaq8&#M6tHSCt~u~%&*KeB<}TS!G`h@qGd7%k zn6a^XhW4?<tJ$G#J16h#mtpp8*x$PUWvcUht9ur~k1UqGOcb5PlVXu|<7lxz+q9?b zRqtl!X&#;Zj8h{1%dMuXh5@&8BA1-Iy2<}_2d}8v*?+sY$7MbGU_1N$wg+6d>aOmW z-<^=@+TFV@WZV1nq@~)&T0VT{I`f3}mHeLj4;~c1(9iyz$NMlTRav+0LDBQ|_M95p z8?*Dzi&|PbE&4N^J*M<(iDH<v=cQ#u$4grG?F%!%wdmsIdllV|_dE(-n4NH5zWboU z^uL*VPhPvWvEk&M$I*;AXU$&MWS?JN{QXfCL-b^;-g6mM)jJCG`Q`V@d#z2iW(;7| z-&}BSvte!T`*rQ}j(=Pj`*rHt2|BBb=BoF{WxuQoHPg*4@II>)9<%3$52t3*T5X>v z?I)H>#Q(8Aq3>JxwvXXsk<26BZ)wYyw5b1yej!?3esPUWiG{y!&R4E=;`JpZc^|oY zEmnFMI+*ci$JXE5+|{8M?y_e)i~p{wsVr=#Z1?Ut6JUR%AoQabPe@yk-zk%XG>vyY zC%HN&DV4P)?fjXgc<J&_d5%>!yOdwq=zN_Oy5nhMg7~@o!z|l=&rXioxBu6KfQR3v z$BQkS9kE_*k?{wP?OI}g1q>Ja)K%#*w6PaInOEUwUA6D1|L(punvLhy`0?mW4}U&K zPhP%b)|M30Czscn#)*89&0cjYl#z4i-!rB=0u7qxs<+t+R5X775#MlkV>{>9SiQ;R zZMHwvew;g(FC4*lC$GGwc-CQ7j)x+d6H*jD)a0~G3%$17u0@zjDNJeE1(#>ib&UIc zRK%QjODLYpn&HIht)b;BBC^Y+z=rpagn(;P@zN!lok1Hryt`JnwB&I{I~>(HBX^_y zURdO|%a1GfoYgwwxSic_>EELgsZ*>HSyhWJJMs1HsPpp3OPa;v-myF8{N58<i>FQ$ z-!^ed&sDj#0$#CpiY;s`uUQlr16B(i+NOS`wXpX}m6nTFMZnST?Gyf#x8`+qFOhS; zZL{E!>F&zO$E4g;KSnGx2{PpRa`5g4P2F3|H#t^a2=+I7Ct)Be9?BM<v#p3%ZR4a) zUoS2_4Gp%KrDY$K=P2x3`zdA9d4~|G)iNpNMs){j<G6B{YXq+CdBt+dVba%z)|HcQ zwghcU$PD00tIb+wa-~YCQLd9S+ec)-)1-%sMWRk$@XqgZIqZ5ww#>suQf1Bscb~q6 z&Bm&3!Tf6u*=ag$=ITA_x3Ej>!8ZlhV~$C|Uyg3cO|)m{<Gf;(RK?dF`|Vi$y(5oq zdv=8EF>YwP^f>kWDu&O!vIT#3aPr>vXb!UMJ?5?RSjbK}opW>Pj2@pQ%Zv_B*qeD+ zG|Ejiw7IQ;QFg8J)n^NyghwVi7_Q9A%n@PK<=2qlTw|Jd;q9ls-1#0Y>RlXNo$9`y z0*+>F+Oxrud+PrUVJs&^|A@W##Ws`szydJ^=joSkHE@_*6rNj@(=eHFrS`%m!6;>u zjt>&98yfb-Tt9kk-$C((k&AMKELKdPxbzceQpxZ0Og~bZBMv2Qnrhz}b3&|prc|j# zx&zPM2NRe@Y{K4bRgiF#o3){^px?p$xo`pV_XBsf&a7JaF>r-4@11W4J8z`%riv`j zJYo1~;_lZ<(K!|euZSOOvq|y$DP8(YZfBN}iCXC|zWJ9PCuwZDGTHRfzW5g|1<!fc zC9S+3ynj<w`NR|JRwUH=EWGnk?c2j*gXT+O)=VeXl}Rs>-&omr#B$f64xW!oY|NZg zGP~L~UlE-aA{S}yzit1OD?gX5nxy$6C@UmT`h`Hrg%<&?b$?s#Kd^h6^8V4r_#;oJ zhWo8^KG|TWedcn-NsmS?{rMed1$=UBRE|$^Gw9yr-0ID_(cy+cf!Q}DsoA;t=Z<7Q zEWd6cW--kxD)H?l!ChiYnU+3H$zy#Qnpc#|{^-!3$d#5HZ#OU86T%y-))Q*-BybfY z+cVBz`=(oXb?|TWPO&=BblA}6=k^tT2@X1{=2z~Xw76Czrn9Q=;Z?2lIk|TA&6z8| z%w>(;7IoWioAu4vF=97FBqCm%RGoEl)%Q8|FWSoPx!y>A%2^Sxc4hp3y%YYQ<=y3C z0xN%cY8uCWH)!9O8XJ0J`<IG8<*An!&71q4F<oG<+y?14-W#h5+!GF6UY*t0{yZ~9 zXZiivA)(PH^7=A+<So`teURUI%0V}NuYhlQ>!y?GJ?by*PwQ{b)yb{0p7M3hidCPi z-haC{*DL+TjHYM0t3p;^s+7N+^0nSGWXsQ~Vb688ICCcU6lW)H&Q))%7Yy6jf6|?u z<Kuz<^HtAm@OYZ^c%x?v?_>F`yB~L+bYXPKvN-7+88xXr)XqZL*}w7G*<(R_F55Ko zU33(0VMw+J_dd5FeD3#hi+RFP^E~%5?3mj2UenEMx~S*0jCu1n`+M$K6@J)azfRr! zs^yat`*(^tX>$lH?>oa&-SzUzY{!s45{l+`a(tKA#6CDI81wyu?<{kT(A?_JN1qg| z{r3Oo-R#5;1tyM!hMh|Hrnf}$2Qg`gNTtj6Wqx@hab)jw&a}dKs}F)HpEkR%4%<{! z`hL%4@eCe24TFu#mq$hY>oaa#_=<Pe!h;NqEP_V_jvqeH`m*D~@3|4q^$Yjg+o)8j zz2>s(j&sW4UTNL_(D!p!P?ut*yiu}XUcc}H7bZFN<>|-Q<{xs8obs#ZwMt6n4ueVZ zVy@mZ7c6L>p?<hJUe-4;MC{_bgR<L07H=+$FAbNf{Wl@u!}J*pn_q5LcWoEv>r8J| zs+tyOUG(Bi`}bLU&qf%z%`~m*dE<Iv-$}O2PgPZi7ki7Etnd`q)(}0Yf3}?cj6nX& zlS}z)HG8KV_{1VU-ARdu^K@AA5($6)_iTr{e@~6!yQ;x5@oZ3hQQOoPEVlxeg!~qr zch|EmSb^zG%kuT-Ig~hDw4SbQJ(9HO!sjU>FLkCR{K~tR(|*Wb-2cJdhd&oC&Afd; zxy(kOa*mj6_>bn~-#b6Ov*Z0$_Uq{Jt$Kft?ykR)xW%f|;gPpSaD?%}rJ<U|;&(Kc z$-XhP-o||X?2{!wSWgFjs^)i?aC!E@l(3}LWnb+VsctoUtXn;2>js@;ciMTbIO(iD zKjZ$aLyVst0<Em<lWx`s<Z_ixKh7wBzNymN*sdpPi_)V0gEhKRCSixxWPVY!ambPU z*x5EEI8XRi<^01kG5tQ*cAuM|xa5!ifvX<gQUCTP-{ew}7S-@x(SB=M;&JJ;!;g0U z(DAq1;JtK->My;{e{U|eBxuGQ6MFN9v$%A>Q*vuCPqx<Fn2(Iv$ImnD%|4J@k@m!Q zTA}gHSeA3T9S5wA^i{V+cYnDdkoh1nlHpeb)0}s#1tA~zrxul2YU>u?etSZw=neZ> z<)G93RkOduy_xKB-}8vQmwA)f5(UqBZ<cem#2E(Y>Dh6dXP%d^+^y}#u7JWqvFi*g zjzqAoYmt@tr#Js~?c}88Q|y1Z_9u(*D{F+#Y|6cMgtd@q`;m`p-oKWe6CSVcx?ip0 z+UG4@DYyR>PxTC*FL#iE<&*zHi6gtVoV&62%)6s<<pygHg|_aU)cjK+^3gKpi!46g zB1?tWC0>2#aAb1V@-+pYO|INtbb8wDIm}wKs<Wh*<^P$Q;d@`9{O#>*=8re0HBUA= z7uX-ZU`^nh16E6aEHX8$iF+S%&Y((vsr7B+WuGc<@T<CATDj--leMdt9WFVR`<YR3 z+n#4}^F!G4dbIDECEW<!DtWlHfN$YpCWRAfZ(G_L9Ua4LV@0J7#~QG6Z>`!cJZBPj z+G&Zv9Sw_De2QlAmD8EJ`qA=vhZ*l|iIgw33jV)HTYC1p+r}(cH_qbdRW_7Ok`??C z*wMZ|WrDLxJx{O?LlVz~#Kfq*rpo_(Uxl82D%B%>{&CF9?RTCee>rZM?$Po5^lR<s z4j-QDX86@TE84<VzVsf`{jXt*-dvxj`EIuK()}Num*m~Ob?ATpUH;$E?5t7s?G0`P zt+xx`3P1U$5&t}Y_cxav3pnHFD=fIFv)_yTSv{AW<#bNj-!o<RKBzapZpYcK`hH`C zqE=A2*wKr2>R04GEjlF@;U&nC<gjMm*$rzCowzITuR0^~cK62KZJrXFTW2>2?*4g3 zC-FkepS317fvd%MyL^nfHqQODXUWH>g_;|CW|}F8#4ejC>d^aH$42C<(t_PBjtf^T zITmkXwD^njGO?Cl_q<Lp);_dW;(B<PRh-4i&bwxs{*|9TMqLKmuX`sS$&L%}y75Zi z@ynr&qAv>DvU5%f2>fy1{pdT(UFM&kCftiC_L_T1Fx4c~W5)^aVBz<Qi6t$X&I=;W zwCz*04LcqB=~MMGvDs_(oZxlZT6?g&x{>!tSIm{H-i^Ey(+;i6cUfTkC|>u5CEH}a zRW@&!KTZhro2R}ebm<w7=+yI9{wAJ3)nltBz2)A{$Mtd+0f(fyQw%$nWpK4h{;Lnp z&3|y?=ETm;!QFnlr?<~xf9SARYPNnE+Zj`t-7)UmiIQTiiFuQ%gKL}Egv?+2y{c81 zu=|2a-qB~j=Czsb$h4W|S*u*L>OI?2i|;l0bL@7;9=><IDtX1^;$t$3uZ*Ylvdq7z z^2}&Y%RB36yA7Rl=O!&oIurZ)*F?=pfv&8*{C3~%-nJ)P_b8k_@o8*ov1{zdwUGu) z6Sn<}XeyM_+ueNm+TYomTTjY4l`uL~u4LrdH+dhc@<H8(=jI2^C%#@&cOs~;skYYj z0)OP&?A>4Hvq@g%{QbgzlTz=D&V2g~TMy`p-#eBbSRy$4^X>gp4eKX;E)^`kr{S-$ zJtQY<^PA02@A$7uy|!k$AAiqF@%C50A3a=a(>?da)WFqyC!U<3IOFrXobw+{dFHXt zzrT0=gt^&IbE9)Z7IW?ry!~dzHj`b-J3Ui%Z?5Bf&E3s?TRKoA=cDSvhYF`}Jn89s zGx7Als%}GtGk(8rU0$|k@AP$*`&#>7mIPVdTqJ*M(~mmiTYVXUH&~OCyg0c2U+w*x zmbdm}$eBvTKfL>1Zhj>0>0BtV^~ALOj2k2Dw6|ZYliUB}{^iu$KSaODc)vaV;zob& zg(a7}cgAX*uo9W_qvZJf=nu@(r)}`P^|xweg?xDaT@eo1wG)z5S8iBU!t`0F%6sMa zz4J4DOYBb@Uac=@JYpxQ@#1W(w4uVfDS{>|?>`BaSvCKWn#0i`?kD$eEoV+F(GmZC z>t*H5ow7==&97|hJ7&QB`k?$<>kF}N#arIZNfVWI(mea=hFoMW=gJ?&GDkMYmoz!p zNnJUadM$aUUZKoHso3*#%>{ZBf^NQ@#kKCwAC|v&ejog;c&yLDQFU$Ml4;!xex(!T zmncj;x21*0$RUQk;A-Eqee7z?bL=nn|Io7D(f9To$F&=a-=DkmSmox+jjx(6?475$ z@ygi-!AqNOvw!FdZP=0C$EzhZZST@0Gn~x7DBjhx&R%l)oMV%{i_3hkayKi})Dw;O z(rwOcc&O+t{N&T7GiryKlFqShj!;*1TBok_sl}@J{tRQC)9-GVZOeAeU3O+w)55S< z<=&cVR*Uz)5R?o0pU<4WbmOKqrx!-eUVm%vQmrWAw&L~wbv|u-C=ujV+5SjNZSlVR zT$882CbZXlly5iNW;bKvGwx|q?54*E{_wMk;4!i7-~IBI@wVj?)&H(|xOg(_#TwI) zRY?)E&uwnIY*%pN<LB-Dp*}%tLyu`&|Jbo}k-PBXwJu_nZP_BGf=j3CYgJGCIM;Bc z&be!B^P9bLZ!?NXoLwR}v((;7<>#5kcN}v!S|3z%KG)MO{OfDh(d$8xZ~E<QXQ*<r zB)mN^yZ3O&t39{7|IVnnb2Hml+>foqAunOC;h#M&)sxECxw9YP{v=iu9Hp#3+vt?( zq=wfXmfQC6YKzy}B~D5{Yr5vz#HY{uW~OY_4P2zJ9-H?4$JFQ7ciLCk*D5+bw5u{U z*_YY0J*9c)-<O5E+m>voJ?;Op)qKM93Y|%d^*8CQk4)LuzQg!9&xS|W3j&m~OWs~D zJNG`Dcg>;|Ue8Zk*t*sCDm3}t-@1auPObhz)|pJcesgWh7{Mb2YU0}q54%4<SLA-$ zzh`OQ^@*=^j_2&=lc;W%x}0$Iqm<p7r}J*~P5G79l)w17MRr=+rvK)jG=7JPa`V07 zHOp>E(|*N&Ii!p+>8Hz!eY!I${|9g0<hyWLcwLuBq0V*P$JT=R63$t-ZNL7X$kKRq zYjnpn8>h!>7OrqixfS&E{rg3m7W_B=RJ7uVis{ws;WpBelOD}(y<?Xqthwe)-;$qV zO*?P?JKlb>lUwAh%r(pIWY6zkRRlxp1A>-IZsLucqW#%bwqxTei@jT|wRJ*ljnt~@ ztT|2I1TI<@fB8sQ!~QKbzw9m_JjFBrX5GiWtRAcWUfWFv<kificdmZZ*dyA0dCx`9 zz^y`p%eb=sIxb!H$Ud)lsfOQ<RkFXCralb#cF=g2`rN~x-|yDgxVQiH^w?m}FU8&u znGRomV<Bd7Nw@Niwx0HtoP_@dT0a%DRHJ>HXU$l+ciHq#i*f@q>p<o8$)^{sUXar{ zzjV>ur<01(G-tBLEI!wGsmm{6|ItR_t1B5<9m`MO2~c<*ad&Pw^OT+vkE_?_a0PLC z=xl2D@4GnZv_Xl3Z2u|YrxGU)AKtC2v)ufzwuS0)zmOWmsGrZ-mw$gN-z{p>QPSL( zAK#?EQS*U|<d#ouNl99-_jpHXRi`ukn(ZpSQj7bA^x+#atJg}0d@A_AC+g(Y<P&FP z6e1X^ZK4A+<%C}_FekNf#7*&keDX_OiTyd@<WF<Is8?Hb+Zb%W@@}<W;`+ZvG6!$Q z6%<u-X>OHY5wbdX)mEW7t`13aHXKkB_!g_`v{|)ew%ywuscDI!1&8)kCgcT9kIcwe z{=BxkaE|BZ1B*>B-cwnuaU?$~G*)V3)A?*C`?~vc^hI3sO&#}Cm0dpK$H#C@Jm7;4 zk8^gV($7^fQ)S<+m49z5bK;-WjL0{3GuWDVO&*1G>Esri)<5BFx8{^|Ij_+b--|k5 zZBy>1+z%76pS$d>BcG4#i>MiC9sf$!q#uqrKjZ(5!qdKIk6$+a8M|Qik*>oRt<%lt zw#4l$bXoKxVi{K|iwu*8vsF_l??HvjG9qegIA3i!=TK)Yur2TiyU3E{0>13Mi?y3> zY!gfR9GI<RAe`&P;NXy8xi&>2uc70?w9dLb$>gMNjh)fa38l?<t7g|2|6g@;@>e6f z9u8;QyywCqG0m6mJLbHJTDH&Z+A*K-(j{vzwX?k9cfTRKhW);>^n*L=ROTmc)#Nyp zv7C#y!T5&HvHTEu%V}zrSHFuLzcam7quoftZpFUq+2<7<#XNX<op07~z0YHupmyPV z#<P^U3KLJ7y4kzmVyWiYmo%qXn6=$fcm9<4tLHDV$c1-%pPri`eD%_$%uJhuc24@c z%;y~o;@^Jzw?K_!LG$gFf@`MIpSQlt)}3Z_&~nX`g?3#gS*w0-)4FkcbK(}MW_i9f zlHD6pCFf3@m{}$(V(YcRd!ty*5vlv%@8>?wPG9k+@wfBd{mVMJ^_<-@u73ZgdQhTf zWBg;~fMo(YyUJ^0pKmeRy!+k;N7*-OJ8dVJJzQt58Frk1sam@01BMc#eD=rDT;&hX zL~N^?AhYVv?hk=QYj#e5V{PNPY>v(@hL(vb9FOiDYR!y{F}I33*`I$-{myCaC*g-u z-1fKLWOuuH@Py;M#ikiDM}B`xh)a-Bn*3&_v(oe`srbM{2U&M36fAtT*7N8S;rgq3 zJ@db+{rSPx_dNgSfwaBHk~a92w`R=OEIGRQ^Hs?b`3(vC_ZsZw?c?<Iww>vGYRUnt zE#@}mX{VGwzPDO8r+J#{HrWTa`MoBq`^}zYts>hM*`~SmogdeJbN4W3UB5Y1hhLr5 zxR4=oGE6W;hTpw;uH5e_LEIY*YOfvJZPX?sWB75#)%g-r+vnQHAJeLB&U|2Dem)^M zed^-~q4qQ;Wo5p;PirqpT)!B-yuB*HXyL-c&TiG`46d=PuZ%0oIi_FV^C(BTnm2iQ z_Z<Ca?s@%>q>oLVQF7Ce*>D{nzbOkt#-@eK=e`q|RW_Sxt!BV2A0MF@kKOgNB9^+J zTKW8yTm-Mry-t%GwaK5G)GqpX%vtoq{5OAU^!2`7DeESe7A?MMt<~;5@!tj0>F*7E z7x0LF@ZDp>XBHVPpt8aJ{MMfpJ~^UkHx_9vuCn6VIbY~gqZr>_#l>yE3b<@}9%jC< za8&ZTw{WA#!Dq{t_y_MiSYRQzWnSXV93$a(o?kSQAMJaR7&k@n?t4M$W5>K^9?>hz z^>XG5|CY0GxoFjk4a<+`mfbsi=)=c_L5_^A7xIjj`^?W+tZa5C_KL=Ow^yp|(Rmp> zWrFh`WX@Wyp?T~xZ}<64EB6^`-cGP_t8wGo@kd=l)#Rp>ukYEfU)M_LePhfu`}O3? zhlx`X6x`TmoKG*mG3Um=FM8KsPE^t`au)XU{NB*5Bgb-^?da~H)Y>m9UUL>MId|<% zNwfOgc@wV6)wzAzF+EV@LuT`hh}>VVPk5?VY-~*7)n-l<F*(u~68tK_THwZy$v&P% zf!Abw*_xBAuHLtwJ6nx?#`W~?txM0W+1-62hC9b<*3~1z4=+7Q@hn_=s;a8$ZcNpt z#2<gZ{pi#?=qu%v$zu2_hwsM<w)xjq*Shmq9*Np0V_oL^W0ud~c{V!CMUyTZdYt%2 zQFo^oL)YrrmrkfiD^w&rcrtB6fLF?ta~8XW=R4M2eJi%7W+j)FV!I{#<<sHWoz1Ot z@167uTzzKgy*a;s$*b}+A1u{eC2o847tg|v3*R?0{kd2%cf($B{d+SnemorOB%b`2 z^JGrReC4+%HSFsiyUepHIv}YwZO4l{Zpk|hPBK=+>%^@*ld$&FkAq?x(wpV{Cr<Mf zJ1y?794Dai&^B0W>9I*ln-he%8-mg$A0C?{|7*G-LtE>wdkfaz(pz10sYvYEg^Y78 z=gvJW%UbY1MStRh@}y-kPWp3GgJM>ni{BenFW;T=c|-pH*mKW(;-ajxZS|UGwF_wc zTy(3aiZ$j3$Ew2usnIiLyUF;KzrDg<EuwR<%0qR^?{4F0ldQKF4tHmkos+gRzCU|< z(o4m%ZB4B{KGWx~J#K9GsLz7^>|<x`4?M1hH`_!$Yglh6xzrOb)p3@sYqi}c$I|6` z@~U~egZP7Xum0n(`kG$zmF?$_=x0?fFgC1OdhOO#xg?2wac@kwHaay2Jxg3;QNO#U z)q2A$|D%4z;j5;0%X@cvI|bKt{j*8bFP|29ap4?om*UFEXxEbE?M!N%aXf#eJ=-@Y zZ+i5#eb216tJSBM{4v{}w)Kai#Jw!9xUllbUTvZGe!h#9#r=0*U$Q96_t?gNjN9av zdKl(u9+<Q(i+L^A#N!dGwB_s$pTE32Y~Isvb%(pt7ioF()w@e2J872BThMr>IPxPe ze_nj~3kK#H<>lg<C(mDfvREi`uhc$+tT%hg=G2w><-FW<Oze5y2h%`P_eX4(mN#EL zwD1d8X~+(_hIc0?FrB)mk>qofvrt^f%DIbq+LM6rlph~F4{T2SqI9voGi~zSkk5|{ z>#sSUFt(9@%JS{x<^Kg<;(2O6Hn+FgPHJL5<WluS<h}58lRn$WTNCE1eX=>)I*0N0 zBcXTG);HQ6cy)O7aa|qZ?Y*r@#ww5IOnx_O%huSR*1Deiv`qt7TyWbmb!oRsO7hLc ztM5%_(k?50CB@L9^?qU0pSbIe5xZmz?xjyqiu976QDt>hHcY~%XYa4My#HDSMJDfh zBOR)2Q!=^ch-gkPU!b$`8Sy1iQ!WSFW_d1~ch7kLp-G$K)bBC(dkE~UW`1ts7H7hC zT3X5UrMsHns-yo7N8CCxRnjVz!-CoH^Q9K~*DCubdvE<$vqIo<qu$>DTQ%3amb@k} z4IlO#T;8$u!*cH(+j^O!tacpBTxjH_(9$7WR@$XDZ9}TPg~GIj*{^M$Px|C3o+QD3 z#4FzRpyqP!g_X+^uO->duJH4p>{i<2IJeR;PK~Eha`oL-F0pijkB_GY$ILU+@;UP* zL+b6`3#ZK_jDz(f*YHitH9akscyZwmo#^$~rQ-Gp9e%4D)hS%|M(6yLx~E(BeRNs# zQ--5?U7^Pv_tjqVQI^tWQ-7W7o!L?S`=FbXY2O~*i*`rSf5+Y2se6CZnTaa-0oNNv zl%t;Cy0&8blS@Lr#VbqZyjuDwsXf{uE8dXl^hB{X=F>|T-a2cy_f*=}8I_*5XBFK^ znt3)XbqUYi&1`(L6sx4_Pgn&{Z~eY>$#a+K@y@ER(&8>>m%SA5FUfnv{GxK_4(F_A z9|G)`X)%-teAKIcmA}+tl9WYFf#$27i&wvLo#MYf;92Oi;%2*pFTNRuw$FcTp!zO? zulj{)n)10P$xZ#azHFc7Z273Re2&#yRg3S>>}TFi;4ZU}xL2s9ttXmp)~<bud3*n+ zCH_qxH$)$?HCx4_Xf73hvb)XgrRU1<$S<eo=(k+WxGk~GC(Os&rHsqgXQxr365ms` z<eO#!2RCXT(DRxVwQgg!(z?xZvBC1J&3WfC`rPDGF52!{IAg)ntl1mVDx}t5P<xxG z<YD2n&#**Kx6;BrH8ODVmxsIB6DFA$EWDC_LVDNj1aGFRsw?H!ik<Yo-B2TtHsMi= zWV4Bg!OUAP56Y>|)tdB*>FKMbdvwiWxAWe*JdsOMc>nvb;{R(eoO$7Kd;Y<jMh7;8 zoOrsBv-eifx1PPSX(#5MH%Mo*z4_^Pw?XN_yoNfy`BQ%FyS!esX#Xd7Wv@+VuXtt! zvrEjb_o)$_X#GQTrN`RTvfJ{7d?kjLj{ct!$e|t`D=S&$za?o=*RTH%PBea>C(|;S zf1$H&TxaN((+3^C2<N72ZF~Ca(wn?Rh4p)!%Ohs(Ign6w<=?AAe|}h)HU}MYJMm$c zvY^Y^)h9pKPtlUpsnR;du9CJjYQ0XiiT2e~Eo@>RHWp6b%<;xz4}WS&!I#EfyN%zy ztpr~b^~-PG{pO-a(BGO**Pe)6lh*pXhxMRekfZ6P@}oRUm0O}Jq=UXFOrKp<<d^Dp zTvln<pXW)|FS$3c+4PF~99bzGzWDpvc?%<5jveV1PybN0fkA6$^{wSBHItX?Tnkwv zKGWgNnw%~3KW_+}&o47g?f%D2MJx-R&2v+hPYV<7y}Rs1g6n-t{~uR-?RH#z61;oM z-K!kC=O^#=<4l$p<x>r|D)H0_$zzVvnceRgYxL&;TXUh8{U)aantd~laf<euUzIbN zTPl?}r{1T^b(YBee(rasUA>`Bj14EBwA-bnUD~Onb@fAq>{+3poi*hz7EJe9J1<`4 zsj`u#r_jYZ;R`1?Zm!?^rr3+`o!XJSj~7qZy;?D$bKhE9|K#=OZneAf-6-ku4e+yO z|N1R4yz4<vLHHgA#VN_0A`R6uKh24fepg}d9HR5oj`2zHN!OqLvp%od8mB36f^oKg zwEb*j5%U-KgXSkh1xG&rb8ye;^%uC}-<-Da5}n!A`dX(>{nY2iKeIkN>?;#kyvd8T z^?2OdddX|*r#7BVyQ&>HJ#$Ta_+hWCPmU$37cXat`Xq60KW?vdpme@fsqXQZ9cyQ> z*moTb+%NWQd!XqOIfqBipPTP0=T*<`Q@;@vSYT7#AZu50;9O^GSABHPj{ddsmAP?M z7xzugIDAn1&&gSKhqE>te>-t<j-ap3nflx7ZKO4(nwzwpa$D1x{lC%LZB@8f<Qi>5 zHiK?GW@F1WPi+2pajx%hTEHB0Zko7Fo)$;Qf|XA?&fNQxvDG_RG<K7|?azMWBDu<D zU!zL<rU=INl=bb~q&}^T2|MM&{bs?Xi+evU;Oq%9`Tc*ZocL0I*Dsr9SiM?(;+B%* zq8)nY_7t$qdU-Wu)xw!_8$O6OOq<_c+xamkeO^@2sq@x4+cr(@IiCH+^1*7&wwZ|m zJOcA)Uo}>#`~NRo<*4t+vzx>9`_9Ttvj2Lx!nbqoo3pZc+Uw<u_PtF^Dce|Gwn>{Q zYTbn!`LAs@)PHN9+88szzVw+>;m4VmB+YD1?Q1{9Z}X8^V;DE*Y3JViA?2k{Lt5-k zl-#Jw@Y%`HT#-7Ze{uBr^vBA(xr+Q%Z4dE<9$InxVr2<iy3MnT+|&P=fBCJ^^>%Wc z)7O{hE<Mf(GJ3K?am_!G#f)k(hqpGF8_B%%XW4rC`?=O9o=d-|uGysd-rFn2EOgep zn=#p{wsO(p>{W8H+0Pf1m3*%`a-~OK+&<^UZ+ok+Gvim+oGJMcGQpvzQT^5Njkn&5 zE){a=U@ueWk`3@k%Hl8=u@!ulcx6p!Xp4Js=hwWMLXCG$ZTw<pnk<|<>C2@}>sj{8 zFK!Nfw((I~`)jj_>jVBcTU-rQ;!I_HaOwZ%wo`gcr}G(R`X26Ky%=k`n@3Rk#I6OO z?|zzEWi_$>3;SLUm$+J+?G+~q-#eb*zU21iy`#6L)@GmV&o7TJefRRFOHac^oeKs{ z;Ve`6*}NX?*?iT#_CtD`%BEF(Z?Z&USAXu{@7VHV;qs4?*<xQd#9eF8Vt8>s*nS;{ z(Zr;HAR*a<Kli?VQLPy&*RqiLgUY%y*3J_7f!PoBA7*j|R&C6#Hm=H^5U6oeK$<5# zzu<o0F@r5$rU_0*4(AB9pW<x|+VVs*oJmzhrBL0<x&P3d_GKYF`fM9-%{o=;8QszG zm3ePx$(ow;M)RX=P9MBw@np+Sw)UM`i3&_x^cyZ}Y`-tg$nv>t^_ArNHr=0tw2v^X zp6T8H>_xxA29_?~)8_;(DDc~dG@7ja?JfG3y{3>WjNeR0vb)xE@4k|{`=64Mz90O3 zt?8J*bXT{$ZEVcz6-(HTtn8^P?|7F~e^9SUBCMzGo#>RJ`#Tq>Yfodd-Op3dbu#j6 zc;dWwi4RomKeS6!X<H~b-7md$)F*ke*3-|odWtQBG^dqmY8*MbHzws|=*crrW!AcX zy(xL_&Ew5ClaC3`er3EhS<2Wb^ZO3IZr(y8m;HM)pJo;|ahfO>s=aX$ja;!$?zCaB zY-Lzv{1oAZ8+A|Yd7^Sweoa7T!JUTxUZUBb{%x0POiH@&%u^_G%C86fY@Cw5ap$Y* z%nTQtES2aKmYSBdcZF;1)kHn*_3C#otgzfWYYVsNp3VyHuxTH@^8Tt`e5HMFv9j!6 zW%2V`yML;!|8lo;o5_<eY|^pieqrn{QhmA~R=Q>96}?|=t6#m|;qq!_S;l*ZzH9I4 z-Dh=W_1qt~UduH+@&3D-oBwmf#2>Cj59iHS&-`=rr>{v8TfJZ@bB#=7*O!NjpOmcV zb8CGs^2;Ml+27=)z<%YJ{fr6c*14Kbj`;Y)P{8(C>QQsKU#YjOOStMPU&c)<lKAuJ zdi~dv^X<13wY$n+HqhJC^frL&W?bIBJF|Z7`^qH9l>I&9g3=+6nxeN`xeqWtC^J|p z5|P;&XLt5v%AVL8g}LJI4y(*v!LD@cftI4xGPMm0pPC5lXcIlI?D6+9-@Hk`Jmgj$ zJN&9RPH)T7SE@<^tAo2f-hJPET6ei9+w@4`h`jO*pYL=2?^gTs(U$vkmuab}OZg!k z^9QT}N%B90Tz6M5ZCM!YkkcqpXFFT7V0ue7)9YzdPI0H11{N-!ICbLE#GWN8KTh$> zzTn+)WYy6lxBu*lj^uD%rx;c7{7=l`#YNAzRJ>mocm2x}=4A>`Z#}N<IGnX#aMn(D zuX>}@Ik`-|GnEfi$k-VCb6T0w<y>pfWO~o!nQ2dO{ikaVoYPJ{f6t<Oyg<RmSa)}w zQ+tf4u;}$|2cIdMFN|r~erMX-{+#pxz0ajS*7M^_&-))fK3&lF-;7wdIWfO_wXgq} zue|o*!%Zw7P6kW$Pnb4`KmXd+-RoEO-F&1KUT0wWHnPK{?D+jPrTX?E%dKi}%lhrU zm8`$c{-JQywyylo%jUhgeD3S?+Li_T4)95Om{=O-@X6^<W%#N(H@#SW+wbG~a}xO! z_-CIw=-i&NzGdT$$vaOZJ<EAxbfJBk<J&JkHg3u+h<8b9H`8g7EsVT#_sq5fv;8u3 z6vS8@m((O2DZ0JON%&0RK~)V0Ro%6d7Rj>NtXXlNFJ?|5pTt%!hY5_ULyqsga!WIw zWy1a!D=fQCyREjIvw7kJ)5{(&x7sbaFyYFf$3|&YiqWRJUg|%DxDRvH2R`d!_VJ2) zRA%uxd?ovnhjR;5#n10j;=X&3O+GvMRpHTJY)@a@h(CTN+|$GB|J*}D`;@XC@UFIb zX<Tytp!XV!eUsvt7rdU3<IEYm=+Tt>YeKu({%xD6@YF4$Rc+R}GoLsrI&=QlyxJ3` zRM@d5X!7p6_uj3n+4a(V%Kd`X7q}eGEMDz&vO@mJ!kXW_W+MFF(t9%&njXJzzifBw zv^5R^vUXd}o5-I$XCwDOKjs_Lo5_9BHWwJ(YL9F!FKXSMJpH<6=dM!OgK3vq=a{|k zU&r8oP$)x_f2E(3|96KlF2mhDSJlF6o1OIQ*DQH5JKuk*)xT`3r};mt<=pP_2KtmV zrAqi{9j#!yAm{bv=3?(hyEHO(dR=YbCf?hY5+m*UOGREv-i)!lsI*xjqbEe>1J}8i z$Lt@4smU}-d4)Xt)2aE>@$tIjC!`<EefBT5^E>yVsy#08QatyLn#F%(-yQkiy7Bk+ z-&H;nABlf_rv7E0^}lNow+m8h-&gz3`&O0jJ~^~%&aXGeF8KU4xVVU`rYSW;jkWT` zEJpXETkBTXwiG#i33#Gtp_6m&249(w!Na%S!fCVK3CqMQ_=#Hkd~19&VRgW<*5B(4 zB;SgiiM;6Beb?^u+V%S$>YO-oQTevRO2u?X-}nW}o2x5d#K&$sGDYi_2gm6}P5p5{ z__qg{8r<NWArYrpSbp!@vq$IN*%WPekz`(!#U*WDDD&f@+T=p1?1?K*H#xZPp7niK zdzbZ-l4q){y+4Hfo-wI&cjjJ++4pA8eL?r?=6a0)!xfuaqr>lb>dQ~Qy=~)<#s7Fp zR|(6mzWn;}tT^>auiv!rdT&-OoKd#b_P<7Y?}ZNOlI5K06|L_xr@wbheZDqhqN?BY z5C1rAdikEQ-tx!|Yfw+U`|p9$#y|HKo6OsFqA>2?j?{48owL;pj@!ywtDoB+QgLC* zZ9^X6GWAFIj!tlqnGtidKwVGCPe6G^Q>O0~*VGreTNow2aJi%!aW=k~^!56NFXj6A zw*&Sh3TN!di`?JBI<X+%am~dC<%{#ewf3Z5-L9{cH{t7NwPlCec9m9sdguCQhHkXs z?$XoBQdPlSKi+;$-F$QR0hv2zVsj4XrnxNcS6n`M>uQah+=@3Rgv0NyIxfCkmYt(p zYkJ%iDc_Xfxf5n)#O#}1$kI2-XxWwi?zyW^Jbd@h*Sn{cZwJ?A_V};}_t41Nw3#*x z=2iPj<we!PZq~HwO$_>$|L<3G(CX3;$3CkR*xxzj^sDLSi8Al3{D9lKdZ+YehCGr` zy1^ekW9g&g%dZ$5`JK2SE4i%6n8m<hft%vgjAx;54?p{U?NVE$yYmDEwhQSOmj|*= zFY)=wIq_Bc<NX0CLT?q_c<wHdS#7&#en^C!^qc1&)Bafgk>s&&v}c`m*j%%Lb9&$W z4|;F!AGCU-{y+awUNgs<#q$i>r@wGtp4b|r|3)~O_w}?NukYK{H|_t;+tzui>EP2x z4NY7Op|#FDJEpNYie4ym5dC+isOgPwicsr)v8X?X0>8b#JfTi0FiBwY#HF+4*V%M) z&#@?c%+%C-UtRQ=x_bL9>%Pl@x^5}rhg@I#9V^=S?+S0akW8>_@C~6`)*E&mie3|u zBqe*ySw<^9r#QIOOYzRys7XJzzj$IY^-G4F_qEVNE}OT$%UO8oiBBm{hx1*ZC@#eu z4)MctlyaUXW-S#v)4%Oh`>pvGxt8wV5$q!KTE}PcVgB_`&gkk$1s2G7nad<>UHD~w ze7x@6`7+^Y90m_xc?ouCtdeWW;<uB3%pvrtvZ--Ly>O=Xo?zd#T+Bx@Z&y!j^DI2J zdqW@JDR()cnwN85Y=7!?ef3L*6E^=nW=8$~)E%V1Nxfpa_`Qb1>4mRXb7?K}30~^d zHe=WBt-aibh1Z#<1fBJ&kz0`5=6t&JpMKzHr=kh_wGJ5F+EDX0vZS`y_h?Dq+?}yK z7mm%@BJrPhch8?vu}6~sTu++c|FKrdrgeo_PWUH(wv`RDlLN%wotn8l=4(*Q=WRJX zlg^!(@q(%Q$5i3;JJqLqh1hhwXMWs%qP*tO#1lV02~?gBKl+2`$OIv+8ClQs6x8=W zJ+Lxz*R(sChtFEG?@-%Q&mE|jxGgTP!}H<}{;s^&)67jhzpm_U@H;!jCfs&L_qiX} z()gs$m45MksJC@io{9|9yEXN(x1I~y#%`P??e2TtWYV@bSAEaE`JQz2@llHvcQ>!8 zkq~>$RrJYi@$rP+lke6qDs7t0c5Jhfzf|&60rz$R<1fGDe0{Vx{Pmi<RnKY1$)?1G zhulS9S2r*B)7jBF_2bToJ0xd`ZG3<F^Ox3Rv4NbKD|ph5dl%Pzc6SMImCcE0?#g8S z)ZIKK=F8zym$W5?rJG(&=v=RQ&f9dsQnh~pJ3X!(U1GR$X=iYK+MTm3yycHP_HwBd z-ag<tDRjvWp<e>A3zunlU;i-kdE&*xex6gJ+BlY}mMy(AF@1sk+uHTLmxRT0CCo#f z^Q(2tvrhHeZZNy+Qo!Ss{H>W2BL2o#xxQE#^xolZ#HZ<xJx}p<MXMEfq?E4IjtX7x z|6DDR=|IZlyQk8Z2AypRkYUX}_4lT7!>T7c^iEs-uVs|Kllj-c`TUODE$Z55z5XtC zpZZA2L`&^>+wCQWr(P<a?A+F{kblvy<!i9ByNyhiGE2pH$d^^?dn9$N!zj|Yo zq3bUz_9S<im2WxJ)UA)M6J2xsbms#H_V%PTJc(Z>Yu6<1-?4nDpM9TPV5y<k5p^BC zNx4?KU8(Qa#$TPc!a~};WvAL-DY;usSMGd#&^@uCK=7ivD)XxJ&)J7%^S@+p{E<%E z_f2DE?_QD3>r+)Kn}gl8cezhJVZPBb>wZ>mkJm;shr6fe?+zChm~w)7om=*wntAv3 zgjLO#Eb{H(|J|N7>+y?3`>+n9oFv-_(dG3vmkS;LPd)Hp_m0OBr`HL7%73l<F?Sco z2d3yVuLNb^*sY(T+*+ib9<}+DRAlS%ET7wH$1`U8TAoc&{uS#g&okkN&;E^4AElpq zd+JXAzap*bX7EJLj<r+g-!j#iZz;cZHuD;;2~)U?RwRbKF_2!7x6Z}7Ry{EE$m_GE z&n7-*v(2fPn6SdAsbc3p>DRfUhq<f^E?+47x!d=i0*mvb|6hG~=ZIXjUvg0`+1m7+ z4Y%xq1$n0YhHHP7-dS>acX_=@Lm1x_c{SOHErBN$=g0?y==xvy&=b|Z?9<M5$G&h+ zK9X9!IDh{?`MujB_I|7jd~w}A%Y5Zo$LmX*UEC+|C9!PW*vcGWuP5|w$<jB|PgPrq zgv*+*n|rS8rDmCude+%xb9A;mndfF_`Fqc_1l1_HCzagGzgQ<3_1(35wnD#BuHR|{ zvloNot^YsoyWaoT7~k-@TwvkipSu)J-?Ee9`O#*rF{dNqGT+Wqf<1lRrwVtKwsl6Z ztd;PdyQ91_`R2{p@AU;m<s0pncZfYHVLg(({k-`6JPGE|oXd`XLf6g^J1}|XGA}8O zvXor^h_oM{eh6)!eR`_XrVehI)v*_imo!RzYdLV)X_M_aCtXXOdp{XFrrr`}sClo* zv-<wbubX&u9xT6ncPHOzF`mgyKbKn{+LPJvTX#?Cp3<cGZ=XaSU2$7?aj=H8``Na@ z%~i2xUk|Fyt?S=xd7ztX(PNvInat8h`wwY;51$cw=i`F!)_eEV-8fvzb2j2Y?MAoh zZhKwdCfm7--sO@BSnb5}c|ky8&U+KZ%SF;U+{rnUq&=3f>%9B8TXc()U!d-_I|cb- zvs?Li&n0w*O@8zLM%-Mc$Ic5pznZn_J6Xsoex4N5y3BQL!DU~&_K%17XPmIEPC6~i zXZ38Ns~GF_xt!%ST7q|b0_L0x5i5w}Dg1k((@&4PLA!C8)-pE1mow^Z19r~(zS&hO zWFL?G=_D)ZPzhm{)~1ryTDgte{p-7b7<au2ecr~}dGqoijTvhg!V6L!oqPHsPV8?$ zKyX>;*EN|t8jW<OJ~OyFXS31G-4+EQt@Cc`n>2q-kDdOyE7)2~Yl<0<|68+1RvDMh zDtAP=e?9W_V}|f0r*{We)=hphB{R}$_2buTbZ*MaKFUdY^Oo(-#DWtS<JbjQ*-P)R z7+yR$X92_J2TN9aED|WNo3-^idxi?1pzMw`f#9H;qkqMDY%EUxS^L5MyRVh@=6Obe z4)2wM{ED{LJ$89wo>^A!-eaAs<F6%u|HFify{23CEBe0H*cz{CcG`nw{qkS)FBWS? zTCZz*D{w{OoSTJw-<Q%;wpJTgK3V)Yf$6jQimRt)79HNZAa?$*9S^*Au5R&ck!;*` zQn5t8PfgODg+KF4IP>O*kMmz$X?j2J)%5*0OHNDLs7}gyy2LmpKKoZy=A=g(=H2nV zFQxc)<KJH@7gayJUg9mwTdeUS)Op`d(Yjbe#&p>|wdr3bD)ekuTCDC`dsXAty%}y^ zU#DEQ5&C`Z!=#(`Im}CyrOt#`)C+%Z(_0!B{9o26t2MQGvc@gpm3uDUJ}H!caqD)0 zjQO{Zep>S{<?XAvyM_5~nrg+TrR>aDP<p!5{{QFs#h1^XO8zY->iX!wG1g>3aZiC| z76(oxAAP%bt-N&a)$UWrt9n1&bgl4N?yjP~F37dx0iVUX@2&rX-v`Ug=ln0tD|69m z*X1X9&41+FR;Djd<PuzFu{iu-Dr=hkteO`U8+#apMZP!PbmQXamRj&g>AY?ZQ}d<? z{ok0MuyNn>7eAb`S$1b)X##J!=k&L2_aqaK)D#D@SFGZ=nEoZZyh}pj2#ee9WQWO; z0@Kg#efH1Hy>Hhswx*@ekLa1~w$*A+%Zi=+CguK;=bIkSJiGn><yq%{sBWCOllhYX z|3b4@3uOKYg`RbKI@6ZRtc;6cg30uEdxLgA4q1A6cKOfcvg^LMEOrda<Tz(x+j)WK z^26EUsx1YfYYwOBaxYSJuD%m=ciIA`BkwZy{mB*+TUKD8uNvsEhi}L1jbFJJ{hYr% z>J8_^3&qQ{vOh4rJD~G9BJ0U(Qx@Kxv)5ibvhi2u<<-8TZ(l8%8}RO_Xu#6sh*y^3 zR|U(xd;D$&GA=OUooDkeC%igSRJHB>!wKL1ACCE$s`a~XmFW8(|7)Ap8>aPZrYqlY zRnrLGyLMIhycIWowxrEfsnPAp+vGYgqxhP`0nzv)(sQTXSnQYbxNGO*uFG@ErrcLt zJ=02c-hrsthpQe=T*vqz%JyaN%y}=`g6|!S3Aao>cv1D2uK#lf)`M!>tqad5R+j&m z+!6ZNlyRrta>nllnpwYjd(SjhO!;_1>Avy7`D(R(YI7Y;E*#?a`j&J(@}%Zzr^dJ8 z56&}v(aTwH+`jL2*7735a9c6Q`)B7?Ec(q5dWkn(ZSr-=KM!YJIjc5j32(aXxqF&{ z7QL|=Y}aziPJ2f)T)p;x?Rk}+4NBXXL>e|N>z%l7vFpk5zIBIr19k*6{Fr>%=}dfr z)S}6MPJW)(8S>+1$NQAjk0M;IY()=OF{w7Z=FwFt<0}?FXL@S=E~UksLR&Szs{P#d z*n?RkY0Hua{)+51JHM%GHd*TITe@duhPeJ$L!(oT$&Md&zvbC=UOVtB_+d&K!@12< z51%U7yUp9>?Bjh6tMB>qE&p4Xwr0<3wGEDcxYDP!r`6wj-@o_Pjh}~mggUfa8U6-a z{J6>X=ViIEfx+7b<DlpeHnwp6YJK@hvC8jGC+p4V^tLa_{Zb-jeD<lx&Xbd_gjncK zRZZcZ=;P;gt8w)M`4_EAw{Hp-y`S>wLXFGqQ2$*q#eU1no-b4L{KWYB&<2z58D6R? z4+AoM1E)@!oAr(H@8P>U=2lM#KGQTM+n~sATkeA`W>3>KF0X$2`Le<e@hOsT)$|*h z51it*D(<(uvhjGyPOp8u;Tfxardz(9E|Tpx$DRM>BJU!xzQ@z8eq59mF*&ff=HN5? z8|=y*F_%_H99%7P)TxQn<iHh=g%2Ok<G0Oo6b-DKG&5zB+{tL^ojnqQYp1i+em=iI z(2&b_XUv5AKevBnRhAN(?Y>k;gtvZ<(~%q<?uI+N&(7QEH-F;hg2cKF35(oiWc;$L zkL`Fpi6_(V*vWs2ep{7|<hiD4t=OYulVfpf$>$0q-n{CW!P6DaiH6PG`$lwsx#(n@ zmZ=x6b%rn7cI3G?N9K<YhbFJk+?bo=ptsUlLXJ=K;_;(%lfSc-KMBxCzWw^*@k?#T zR*RlH#NGN>U-Zr_+qO09?mvwFvoke%^P-zut+)IAxxPE1HLUvnytqA<hi6ypO`DzY z_Q=*t(!Qb}pDs=oOf+)gUGu>4>Yg_%*5Bcbow$EnYv;<e<OGesl}sFBC+@WFSbXEE z&Vl)B4THse>)Z1DyVs?*ZnBu_k@-f^kn2{8t;E3tKMU7>o^Y|@X2&dprvZ+eUUHv| z5AUhEHg$!n?RtJ5DLvMS*)c8OrgXcTM*OpWwEE<)zPIeYrMC|!s9AZPc+})KFXOG@ zaer$`;p=CT@~p11#uQ3MSW4M%IaBcBKKCb)lrn{*Dj&BQWncGUtUk$`#}S+-(eYeP zRV`Yl&MLR}Z1C-@&G`!y!t5TFnkTOHUi>*AOmNfg+u!}1WM&AzeCZL<^NLUSl5Mxb zlBBprp__DgLt8TWH+qKbOaA$z?Z)5JmdD;)oAYVUR>}5hfqa%zV%+|>UR=NM<;zLw z?)&?ey^G-cwC>`CV&^0BVyEVJzj1r{amAMF(W`nk9O3XfaJ|soaMLrdgQxbGKV8)I zSk0W}>c*7Fxe*2@U21pxFYjdC@+kIX+DSeZt4n9x+81xDzA4gLIm_zyy9cj?E%jzQ zgglrhyKbW4%!1WCjREf}@)Szv$m#jZ$X&90bjXhL$6t#Itx3z?S*#0K@MK4`T+p3_ zrld!QKF^r^;>PqhDmx1DPv5=v)qj=5mZNEhRZ~}S++8+B-A3L}wL$lYz=_GW*5BG^ zziZX~c}VOz)5H&a71Pb!f7(vlv2N8V+q3DO4WDK#ZwXp8U$yN2^C_0^6B?}pxH8mv zP6)p8-gA&w!rl4qI`((ncAwvEzp{Jj;-~SOUa3b<*|6)V^jhKKo@{5Hs3nCJ84C-~ z<`;x*-(PT7(kSoheowpWOqaiy$F@`|s_xY`3Gvi;W^Yn>^x>V>MN2*YuH4sa?C5%m zY44#$UhgJ{{8$jT%J3O;naz4Peo>KMj4!%pnp{<^<ohhQ@!FG{Dcvr*Jm#-<1qzw{ z+Hn1@sr`OkrmWCKSFOX9|G8Xef03Nu<U21z_HUBE{;t*audYn0kPF^jeY5YavAW$I z*S{I{-y&Rds{Gb{S}z@7bT=Yo<FC>!wWd#Qx4MWXn<m^}^1|rlcFkqiKP^}$Z2Mi2 zX|Af?!HfxSgrZlo&;EYjS=RbBZ)VyLmVKEAYoFJ%+!Ol$kWpILZvi{s1EXwN<6r4j zKVGd_s9oIJ#(q#ahfRIzBh`h64W@i4`slevZ{ELq9IyEbi?!CgtEy)C&+U-0D#P{u zd&Aqo-xzyO#p|1#y&Cx7^Tek!E+qF{^0>g!e%hqzhP{K(@=A`03Mvl`O2cL+I8M1E z?_+yyZ~ghnArV?j?GGHOGEw_l%P$dLFCu)|Jo}WbDWB@y3m(<;?@5bqn4$7OHE-ji znB}c6Zu~P@|NqbDo}T9W`xj2G2^SZ0wp2RxCH+l{&3?y;6|CIXHitRhWXoUds=g<_ zU{7v|&a_j#yOmcbe{y^7`8@2HUrpToSM~zYhwkRL*q!|ydrU6kVx#}gPX)WU8${>( z%&Bu-Tll_rX4Gz8FWC!IThFdF_~jQN*}7tV%Q4=ztBHGgU-a+NT@n`Zmo@3=iD}mp zT!PQ>>78u&J~ezsIIH{tK@aAV?-^?jNiQ}3cDhpP+96>d{&PBOo?hz?UQp}I`KUW* z*Rl5|u`6@@dG6d@FSOj*KG~L|!8FF}m-pg-nm@ZkXFhL#-%=31{?P8Z|6LXyUhp|7 zt!~yA{<_NtoU+T;uYRX)!@~JEEBW!`&t@jE3~nr|Y}B2zc7J;Q!N4x_xai8oOTOFs z&fvefhnunO?kSh1pX;~n67^kdH~Z{1eX%*uQ$m^eIQA+tR^Hg=GQq*zYWkVSP4PPg zZo0l}&P|k^uKYXJwrTc)FX{fjpZeX~zWKX{<Xppz;R}z?cr^Ed+(+FRKeQw~ZXMm? z9hkBqXugH#gxumwx^t9zxlaA&%(IuUx)QT}*82UEPv_p>^EP^0eofMwcEhSB=ls07 zBo>)aQ3H#0(~fc*>Byb5E}yq}UXAm-h`KKa<-asLZ4OM>{H9+s@$AlBVOKeKw)IcH z85*!}+fMDjKP@kCKYzYLv3cGpmUB`WE@@{QUB546mOCNPW3=v#<(^9g1yA}OHgm4A zv`Olhk<im|pIvaaqW=62Pk-G%*Hyp8pUSW?_@Z`Jk3HyBf6VqXCrnqU_Mb_gz{T3Q zVcElVo5TB7Z{?JKYPghZvFDSm@BWI|>SW}-pAuml{61xt@^b6!+LAdh7Va0hGgqdj zcg8WcB2lAx^`S3iJVHLKy#6|4x3kr`5Y_lu8<vHCF7vWG^zyhwy?Ro|nH5R0;xiBY zh;Q+^c!YydjU~|AQ!Vk3%uaEmq>9dc3V#wOaHuDmal|qS2KKIgwmH?J!EuMw8sUJ0 zQ&^62i}rDDyAc}A{h+V2$%Sv(8a}qI$IBxnDy~W`VMqvg%__jIsK*%iv#jz>NE5@! z=REt)J`+`mlwNsn?&h6c+;?{DW@5T={K@sEfY8-Tg4|23LKB)gI2vagXnuU~h+X!{ zrOwWvO_9tO9ra9KuU+)`;G<?w&qfC}mVGXnu{UodE!Qe5QWBW6EIO5)d98L}Ji}af zf93>@`70JPrf9ogb)5S}_HJm!{jIv3bKNY1bC?=!rzT&S`5~v{`_g5li-IEN%+phI z%G$Qk>%qzcENeEg)`|&A-n-einpy78cjuSwH>b88>xhYE-%*-eR(GoSFTb2!b=WMP zlx1=I_Zt|0<es`t{N%OX1NUcDFZ8>%(B0JcPtcT|UguZ6i(c``=6?J8gqK$vCx~q` zu3!D$WpNYdw!hBXugqU>ogcLH<O7A+oS#=jqF(I^yDEOI`f#aJ7T@k!vvtpK2tB{? zBkRZQqny)ju8mmMWOC)h*^Qh++{Qa@zR8-zc*)y-X^{x?3zMGB^CUC1USCx3sbTze z^UfNBo0SViitb%;YE$WJckX<~CgpaVA@y?3DM@{|KMqT8)kP@We&{lNxjYa5qy{bC z6+0~UPviIA684JEN;*qfMrMAB{j)EX``slq`&&3RFKwPOVUG7*$FB`<KFmp}soJ%* z)TW`Di;ICJQTuhDUov~g+kgK}M3!5flVpgPYB1M5T<a;*SIHNjgAeN`yChcZnDEg& zdYAm43(g|aE6n#59o=!SSs^Su-=@Ij;r-A(@ox2>yA`ER@o4Xf)Sv9LCdN{6Ctrib z$(A+yK0Lc><jiw(y*cZbh3k@9?WMNKa&CItIrXdmv`0K5&Rh#bKd`Jl+f`>ab&bON zKRg=u%Q(a<+y9-pwN-iXBlj))zsVSH6PnQ;QyBMoYP40@>&x%f=vaMn-2FLZ;!9<= z`DryF)sfW?t#Xg8JJxlF$!hJxNRL$yKYUf56CD3iuYUP0i?lxlrE?=TH7>h(@A6K! z`E{A83pZSO<+RhRmS=V0$@D$BZ+}%BsbFwW;h0w%Wu+l{cZ=MYj~ZsH>=&zi^gJbL zU1VXmKkC}k+p5LCP2Nbjx;?)9+VAw<s~?XG@UJ|yAou*Dn4bpsWzTO~HsK(XCYPpV zrwk9X#ImEBoB~bvV=t@PwALPe<u~zxY5Rj~wIxqNVr`>sm%q=tw0=r_{6EXhLef#? z?+fJFb!zf%?&zJ;|1tX~Cxb>glhz%MW7BW-Y-hQ0mA9w5qUSZYeS>Dt5{C3M$+jL| zHGV9qSAyC&{;Z4Nzv~Cf!2?sedVIqLo}5x+JX8?c@MHq#O$V3ah4RaHUy#e1ymiNx z^<j7NpC6Vf+{Nn~-n!LDamB{2KI^ufxlcCSoO<ugk4(|zN#_>jPj)$`;%YGOZEUCi z9S)ToVHLjGu&`ZQrdspI-1@ViE;d*@>Nnf3sOa^dvzceUdatHldZ)zZ<=kDJvIqRn zg?BQS3#{SDZJvLh@35@W#p9>6YGon=SsteSdu)>~aW2wuW5MRy%dgjUJbb)x#;=#n zelKM1w`X|I`ByRRw4emb{2tE;t3NH1Pk1tJUiJIP`oDY6TGjKN`53>wZvA4}me<!l zoR7JvE%y2N`>+{TWnOTGn|%5H?8A~>sT)M{mb=yNFG}tIGb!i)v-R)a_WOrf&y}AQ z_+jQo=Y5+(_wL)_dShq$1D1o;bM&rRU056(HDj~L?k+`z#|tJg31xnDeN|%Y%~fpJ zqn>cOaEZG9gOg7W{%dzK3f~hW6|!){*>x9>zcg{`Unk6G_4;;EqDCz5wO9RD-d_7E zYZS$?;B|j_@Xw|yr_Nf&|AGa_ovP=)NVSN4y6EuYAa(bpvy+rW4{-Op92e!{xG+<X z?@<5Bl~XtWmEcp9+@R_3@3xHd)jRPE4}JKs`15_9C5^8CCDz`mUY)h~z0mL0b*tYT zE_hp4s-`~iGgFnI>4$A)YckGkzNmff=-QKJXHCydJLkz_6ub58?&B{dmWZqC`!xFL zUX=_uu_)m&gYM*>HTV9C{A<f-D)^ojT2LYpKaFqU8g<vW72@SQMW5c?yte&LgNyC% zS5d1~I3@%hn7!sf{-lPW%t=~>GdQA{StI`$wmm#NW1VY~d5Z6qn~Bl}KimqH<t{gD zy)3x4TGhq;>&u$R+XrkL)7QTF;xfIbO@K9gcV?qPkh7FgOh=W{pEvq1Z}Y|cP23|} zFV^?!(q`j(={6iIy5Da~(+n_t!1(;+vf#%1yBV3Y-po&pIF|HJKs2pk?dcUV6Pg*> ztvhQUor_?&!0w{NkjB$mV;sP6gX7RV=@Yk}Pdb|)<y@n<%)(>xX~zWK(l#cJqDJ0l z8(K_vYFP4|lSt#)pq?$7XPGfY%RBl>SAF&L!!vK44i~audlypm&iaPP^#d2<_lfvC zH{Foy@@sKW!g<jXPd)VGy-W&rc<0o;J+p4v)r3@yvhCrKTN2i;GQaPas_oODcF<Qk z;Ye*_VPwxAFY}pef6J*)jNaHE$*JCPv@kiWz*qa@w(>_wuNHQn`)BZk!9wg`d_;<2 zSYy$fvNe;sCU1IE_IBQesaMvhs$Rb}r*ca6WStLX9JjhXTDP;fW^I1jGV2xdljl9# zidM@=F&IC88nIJg&t9=Ko-;Yz`|pT#$T}YXD1K+fx%uY>PA&{CkczR~y1XmcyCY06 zGDzs;at@7ulil3U_bMGYuEIQL-j)8%o0TnDWVWsM{^_<;Ta2OSifWj;YVax69R&gR zPTgtidAXrJoU!8A{aa;SRkA`2*Ieq;(@UC_HnEERzqrVM&-smeh0o=d?EA$N^fi6A zn*DYAeNR63-Aw%-)ZZp_Vv+o{4MN=R5^Kb)1N>HQ`5UxD(x}3#n5%}%WL~E8fw?y% zr1Q8GZ_U`ubbkT!Sto^w1qb>B-NdfBOxwxz?1&Acs-$K+ixyvTqqU5&6Yqim@0PpL zf|=QznTl(Q=9(y&D{r{tccN=c(#*J|+l-YmYF~ZiHD0>*=XxCUi?v`n-E_C>JNKmf zrB9r<WG)alTf6NegWitb0Qm_5Pp=D{Tj&zs!&RXsy*$=-yIJt2g-Y4Y702{0CYzs8 z-Y?H>Vpuv$Fn#{sFs8{-W%F2Xta!MI%WLyVwznqP4Qy5EPT@1(PP|vOqfIWb%;|2b zzs#CK2e*eCGc|Z)+8HKp6PA3gYaTi2)WvVH3WmQ0xFQ&PLVO$^A8T-U7b3ArDqyky z<uB_`uUsr{Q|4^*VsFFJsVBc`etf*kZiV@jfNe{{)>&LmmVcTho2tr|)OYcc*ufPg z4Wg_+5Bnrd;^DmC(K5{`wN}*l-9jVo7G)!uly<QVdJAuC`NVV2Sn~;!)8g57+-5UE zIky>XNVY!L8?-vN+14X;%A0>5quChROj&+MEM2)E^@9py>ffk|1)LeOJ_2tpa0H1v zwEenY=OBNazl86G#{cNxjggiW;p!WtlcX}!xDGY&tZ23<UYu7iu=?r!o)5D>{r@2L zdrm^>k{7eR*SoJjy}e1<<kw~fy?%}ZHhBk(t;#es7>`?Y%0zxT#J6&F*z_Yz#dEms z^quK!czyd&?dfS6^Yi?FZk%QmcyEpGl;iR%Y{I@DFVPP;`)DOc)GRO2SB@UFdWtg> z+uIowFUxeS%Ct97iB-;$DAEhhQ~GZ3Vvk7KcJcdhbLNUjNuG7T&$(p1aml6TA6q=$ z{(881)g7$_Yn5m9I#ze@-p(q2v*PGe@7%ZVE*UPH>&h_yOvsd}y<eO=4CXO0=n3)i zuB?(aKkja=^ZwZ*^YBgej~p(px?-MxOts74j9T=<_3LM*XU$r^GE_89N=j%#LaWl_ z1wj%!N?-fk+4c0-uaeIEICf_BOQxBop`0R1>f3((Onp(j^q<MrFH_Ilxc&Y?-hxSo z_IiF&uI#e^E`Q!A>m|#-X)-5;Ke|-9tJE{+pPsTP-1O9fzL|O_FHQO6tGU|ioy79B zX`E-InN?O?SfiZD^v-+Ys#W{;E&S>raCHgS9lfSaN`+QCH+3Zx#08$}{&~ToV#V~; z{OXy89{Gz-hsp=MOwG%6Unw9`ax3MblV16OXek3f8)i<AK<-KQYqDnAu|2-$vA9bv z%W_49_w|fL{;9&h-r05KEqk5auFa%1JNpTr;k8!LlxGKyMfBT5Ypy?fc&60(X`hnz zJX-W1=={`ci>q3>YR<0iun~F6=`_c^E&hrB9e?$s`=bA^zv{pI*v|bk$|_$)Xs^4w zJN#Zu&?WDs>mm{*nu}ufAFK?qaa3X#-aF^W{NIObL=S{V9KC&jQDn~M#`1S_?iAmC zsmP!qVRO}NeOQ2#;mglc9_=iyExLDjZ*hE-__c$=A7r#!uQx5>Hh$dc-{r~N8ItoQ zn(4^Fx}6Q{1>{aL7Z^mgTsdiRTZ5f%s^b46S%;qshNWAF=l+m6tG(vj(Gx9m8{P?= z`j<S%gux;?Gtzjv>Ff{c5@uCV?ky>guC4uadcM8;WNXI@C+5|8%K1vTXvwT#_`&pL zr%PG2_T#>X+=_uG@5w#+;CA%AflZ%b{z0aBhDPC^MZ-+57+0#Txx#A0xc>e6<Ncup z*Ejg|M6$B#)p@3+t+DTF{nPk}?{>AzR`aDLZ?D~WqW|K|=`+*b#7J%S6<Cm_P{37g zx;^jDx3DnTgrC2iUcOVTJ62L>z~fwdBkD(3D?j7)sTGIVl?AGJS4_Ufkd~z<@_n)S z8`%v>s_$YC=>}<Z?U<~<`0T81(FCoxJ8P|UMDy=y=vZ&)<7@cE<?ZUo$ENV1%{w;s z@0_}w99J(&wLjYQFjj1T(vvTFYEh9VXBQXS-o0xrZ^Y;NS6}|x!mHCBE_piN{$#L7 zs`%txyM+FK)1E)$_a3Fv*OE(5&A;bc$Z~PB{gp}U;x0GZJ2tSa-+p`X?>)UIp0*c? zy$oK&wfNAXqcMJI+o!C(^ltZ;_bqll3(sG_{IYw_)x-mdxu!?&o)Ot#eE86sV}*N} zB#L(Y%HuldEZ(2st)6J(F~`F!|LOLYkB%>&h!r)ueE;0-!Fg9cVdE|q*2ykM=S)&M z^P;FIsz&Z%M2-9At>F<fL^?L!nKSEtufxo(aoKYtcN!QU+&;^E%4<Kq1zo0FJa3&5 zym=$}wc6xdahB8VyY)2>-k!}?{NCcPprEYm_XSO|vVwxI--(Edo(oM}_VMo&cis@C z-IeD{e@nAzvh7;4B|g4yjj_tjOVMnZ<@<M>K6zV1>*kE(J69V%+vOs&&UNSP;~R4x zKCwKO`$gqA^F8y&@0u4b+^hOp#ksxj^35-kFSR`^k#^EsJ!9Lp{*MiYyQUq}x%MTw z$55tGT;l7DgNZfA4xc#9VxIX+cW1hkX!Ex}QJ!yezne|Tx8LDXIBS3Xi(^|C?0Ee& zq~^P<cYdDTxgB4W=6jTMH)@K^tlMjQEP=6;@zI%!!sQmr{u@Q#c04Zp)n!kCnr7$L zP4`ruD_rDMb6s9(cbMgWOvU<y%oW`~v-cko`+3s#kL1ZjivwQUFP=PnMJZzC13MSz zUe^|}yvi?YC-NR&%_V#Jo8q^o?=yHU)BDn^9~XVpQ{;RS_PR(x%;)3fV`V?s`Gr=^ zR&cf6>ayJP@e;+0ihe8Cbx4#lasS$W^z>@6guLCGW$OO%{9hX2st~;6{oBo1^Z)$X z$X)wAqPB^vulBTF`MI+fH10IppUbnU*f7y{o%xiI`1wc5te;A}xb*E0-|Ry7^>1gM zKJbx8Vh-z$_?|5PPp9YTBo#c$WvT4EZWUG&z<lzUdA;V00x!u+3$L>O{lstZ`-AC+ z<+o23?f2MUntv|yu=o<A))N!>QkzeUO#Ibdw>J0j=B4M@?n|jfH_biWq>^2}-s+>q zn$%gU)$!(Wl?BmD<0IQL?lboDFc{ZNnrI;=5tZx2{W|~FiThFgTlM}QO^Ca~b4yjK zh~cubpU4@*S!QRP86NOnUL<>Qxx(Xs4~i3>OmJRwvV)^F>BWi}eO|?xDK9){{gXEc zEa2LwH1(9^k>jh?{{5MG<Ji*N2}(t5Q!Bk3RQ?^jJMaA6)<yjL)=A4qb#=@TVcf#_ zwL(+8En#Jbg~Id%38tyCCl5Hes8??imYiX6<<{|5GtIRp`<7Ig3-G_>m_EDLI#b$B znenOQ3U$^MCYRb2UmpK>!hFk4lMQzdeT|c_oK<#OwM9Pf(Sn}SZCdr-o1XhTQM%}Q zLHN)@rht8uUWhqf|8D+W_QtcRVwD}USmnDf9{cmh!T;^=$?W$6mpyLo{eM>5?BjEN zf$P7HsHiU6dBv&m4ELt9pI*03kv_hq|C)4JEiYfV_4a<HWrwp`)}CYOmbkRw9B0_S z>kqEEU7qlkS#$A}{j<XN|K4G(^!&v2|5unh9^F{F`Jd$C;~a-dUvgQ7K9DH12+O~f zcdJ~ktVh6x|9rLVUI8A9gunoUKc}wgzFe&vUE%bJ$Ek9=fJo1t&*78Y7c+259}@|m zuP0!%GN;L@QC{@X6s0Stj-QHrYIum{c*3()3r{+g=)PNC{<&!Lma}@7i)7heXxudR zG|~EeP+48i#k!f<X6GgOydUnuo$F3BIW^cH-dgu>eM0ujUGek0lDGNK6?qcGUt`yG zM&rYlY12%0a*8Ro7MxDFxG><|<Qdz1UpF5$&_8o#$5j=7);Wc$ht*v!iMg-^g!@i- z<FHTs*c*u*Yfj8PwKqs}!aC^%ycb-zOu4Np#(c$S#Q_eD87(PW7Vt7O>@SsA(|naV zhetVawZp9b`lupj=S?dm7Tc}sa`USUS@uiAxl{1w)rDWUe|?$v;?NC-fUTRlgKtjW zxBib$LA39=s^zkrR<GXYaQ<-p=_l~k;PT}89s3i0eX3l4{PcmUg14blYc2<Tf7iWU z@7QM9tp~a*F0>rIaomN?JH93Ubb5{1-YH?bbH6z=99Xg`;NiUVTE3${wP)!2yIAC& zooc64GILFv-~nEK@mUx1*DYt~@K8R~Xsc58C(XKZMMKg0>HXXZscD-`PDNB#2EF|I z`*F?g6&lw6emr>a@0svy{rG!pEFQk8aoT8PdvTAwwzt;PyUDfY?DctH{vDZd;>V3C ztaASjIGf3SIK!e<*i|L3|K(3*-?ZM$djT59IB)wFZJKXz{*YF_YpCe0PwO{XB<^)R z*eP>cc^codU&$@oPTk1ak$QiYnf2$UuLoD{=i=+R_3iE!pKnt?pI!TD@+$4<0PFXq ze^Nukq)R4=|JzjYSYzG)WsQ5dEL$v^(x(b6(AyfcA=2eitbEV;yB}1HKkVk@&N`xX zP+rnWfibS=s>`>X$pW*4_8WQc3SwS6ZOe?9zmA_Rm%ip&GNG!#{eEZoyq><z>-r_j zKOT47^6Yl=RgJI=O<k!89RF>!rPoehyD#+aV~bfo_MTk5DzbKSoSByOZ}o5{m(NQw z)MrQ)#=WpPSAS=zo!U98TfdTCFF5QreaEL2Z7tvYWwl~v1X|VbN8DS*RZ-9HZN4eg zD=aJFRBBvRM$oGrxvG2DTHgvka&gVg^I5*mK|LZB7k>8toX@)b>DsN`#x7TlXW8`V zOb}?AX17~iLgw)vQMX;EJUx!5ew^a){mzxFs-Rbb{Z`+L#ATj7O78t!e(RY2W>p2A zsOHs$S$C(MytehTYV1_cxR;-IE?&$qIVX0SDRW;L=ltnS972qiJ!<vKlwMsnF+6td zcG1D-bNZh*KREQ=+Gy?6t@XWakF~qrE!%!GtZ#Xn+S1QKdhE+Kg?KglpL>z<Zclhs zkf^VV@b=H8Z+w<`&uYCE=Ko)4#hILsn>8=a=L;x!s>gP$&@JxdD%sbJmOabQ9J)BS zMQhi^XvP8!FNR~rr&r0JP<?x0$93+fn)5iX?Yz3iXQ@v_Kkvb7>?giug}pl}x}<{Z z>ASD9ZYsMUiCffHBqQ&>UAo_Q=F-eExrTM>#U~Trzo=np{FQqv|M?AFcEKAVPJiO# z;#|ZT`%kwv+Ht&ZSCMIItzY@1=-}>O)7|6hc6&}@32A5Jh-qfF<-DiZIL($jZe8U4 ztsDL1qI}QPdWs0Fj?>$GuEyw5z}~`LLW_Q;w-?-KsXwwX;#*sF>^uo(se=|ak0Rec z(G=sKbC%7`;4RaH+CnaY)f_t8Htnut3A5RAHs7ObaYEUf`}eQ8RW|UxnZT{9DqzPV zvS~eg_{*XNT~}srwc2q-&di22=(%rBf61?TT+7Pdl}%n=&a}5_W#Y`Tv#UO>7F4~E zxbs-t$#1+t9f!0ZscuSce^TrEaFIf*{_VJx6Zxk*tan?Zb$#8$my<<;3)ED8_Pw?W zDgILQe21C4fvxP+mTi3;nMWrW*Cu2rR_(D4w!an|eXyEyWzEOup57`Q|ID_`{?LE_ zeSDMAw<}4^(<Ur<qIhNbmIdD`ZindEAKK~~FTHT_@#-l$Pj)^zq9Szev%XQhvbU|C zk=Kilg1e&jW*29qXqn&Jw)c+DiXZ+b%FlnDmAHAse>K_jXL@E!N?Lw5IpW3Pl4{L- zRv>1J*!Geh`3Wo*ucsV2fAUi5L5B_9n|98hsky98#Xy=hH|bM-LoGwnvvbu4!gKBS zZEMWPp4V0U>bu$X(3y!%an&CsZdxqNed?um-`e%wmt((^H*42jIx8mq_F}`~<w=~3 z-h7Pgn`C?C%IjA-O7GhKrDK2X+z)HhWB4la-uL@&Ro5`;7OBYTS*u-lYVD1W>;BAo z*f4KBmkhtv(pB75PenWU%#UY?%(ROB%(_j?=Y2!j8~YWd4qOMX^2yq2pZMaPq<YJ; z{-^GwE0f%Ut0a{soZx7lK55!BudX|;e%rlMRDY%>?OJ@XtV2h~chgDFPw%CVd-qGu zkXz`#y!YoXQKo<&r;O8|JoGr@fBQ^sR!s}H#F43`Ywno}sh4y5KIZYzWT;7WuH2?R zc`k#cm4gN=gMGei-&M&O{2~_O`ZxbZhnOlJ6MC#v${)`4{b=M3mJfefJc3^{cU~#E ze=qKS$?Rgzm&*z)m)yRUq}%`Q%7(gC6&Ef=7loS$G>DwkUp8^$p3M6Hne(1;=Y>kM zOByHyy__I$Uhn_vpuB{22D*_v+w(cu{cCoVAK6^c{xxX6^5dWH*2P?y#?~IP!Zvx4 zgt<XHr>N!1159mMr6D@XYtl68-dle5sye<gS$1{MCN4wGe_uA;ncz}<;P>tMY0`@; zjeZuYr%(U?Kk@J8Gx7g^p6Fd&&HmHa{!Z=YH`QzJ+{r9{o@5^{b~3HxbGGW<_tDRS z?=%QZko>brb%P3n@3fl*M{+K&J}~pPaHCTDO79h>-77CQ8!=3o#go7wz_L*(PIFb0 zJsWd|uj6ON@Mozx2hDO#i;S*Ri%I<O$=5u&;_4Oo0u5)AZqcWrqEEGTG7igx$4=(! zi->)Ftuak_@-yb`8E)Q-`GnKO+FklIx43^l)+b|G^IlUx;8KgceXY;4qHVnMw^Rj9 zJ#Wvmrdlqf>4o}K_SV~56kKfW9-h9blF@X4|KU5w7dMyauXZv>%APU*)4my9@0am# zOj7uH@t(nrV~;{FEj?>je5C!RoEzIlA(_-Trq$k>TeiGk#kj}M_)@cS?7XS#I;_kU z7|sMwu$kM}-m^>O=FKiWeO`Hk^n@F6tc97$itZc?MyHNxILdvT(|xwzY?^w8P!e0y zHp}{#lGWU{dEspjcW>F9bV?{>@<zGm`i{4g*i1O5sjPnSs={PnK=qaG;);iVzivA$ zvwrbn+iIVaclz|QU;L=}KI8hu!*k}ne&1inC;xR-tVDgvRC$ZMHLIUjxo_90S-bnS zYIjIhU;do_$^(j-l8bIANXA`=t-q!a?0uF0$UmchUp_rvnC@(Pyi-MJpGJS$gD1T` z&vLoVip4VR)#mX%5%hSyAmYTSAI1K!bANC>->fHfX?gq_Y4feuJB3#*D-tr;6t`LV zewqK<MZCUElUDM6mpXXPWA7CoF=>^g30vl{OVs^h=RVwZ$Z*BlI+5B}al48a9(OKI zu*%oSaozLsz~dz6_wP6t@Jfly>s>tiXWnWhr3KdlrYfwvedXSZKd04$#m`2j?>n^Y z-%FYOI@g;%UF2TjSYx)ywd}&4x|_T0pKRHnKg0T*LX*t4psiio)`?|$>N;**m3L6_ zseRVL{kP)ZOb95bYTg%Hqf@Z!UugIahyHpCm(UNFr%Fwa{%;)Z{d?Im=H6#ddi$Q_ z?oJkYv}wwoJO@MeB?3QpU1&{udUlgo^uD_*LYI5!{#Ji!rz*STyvbzNqg@hFlQK&G zFZH_mG@sqWApX#kE%HxA_Nrawd35{!Qu()YZ`@@*An5pfS%A>}lxV*n0(aK(uYP-@ z<n@{V`I#|OUUJ!ez0j^4FrBZPi~kv`Uw1#VP-Mra?;DeaI4$L#o_-wvVBQ`Z_NMmA zH#hFf{N2>^#N*YDH5tN!muFvo<$kBKYjg4Gvk7@W%FDfGR$f|pj`jb2*~kmOE}jzn zFu^-(gOW_gze4|f?zGgv6{00?{^V&FEXw>W`{Y0bkHlwbwv@LjW-HG!2VNDCowRG> zr`Pe#ufo>rNIaP;zx9y4bJ8@v#@NQ0eJneDtWFti4w%5QkiT?uut#3B-x{L~)sVR% zTds4mm%U)}6LXNU?|R?z|Mna^^Bbkp&;3l(EWJPblViiLwR{mL&9jRv?;XD}bz`8q z>20eDwx0%Em1P1?Bvgg2TRi)Bk6oAD^KXSf@wMbvm;YapI=J5>XzGv195*ZR=!VqV z9r1l3-`$U`JNK-5^4vD-$BmX;xBl9^V83Bxf7Rp?>!Fm0xpr&CnwJQP@0hc9>J292 z36>|SwhG_4;@>P+-@L5*;)7GyG!E?iE-AkBf7UWVdG+o?kJia?EZ|ypif!$J51(x% zb;OqxCGYE95--GB`cZqY@2?J))?E)a2JqJM9=USYZQaDin1dy1Hx7zjnwYV@blxOB zzRruw78~j9P}EIOIQoZ$`{egD=LSpuDW<FcuN63Qyk+X8sMaf5S-UE16PMZS71>}A zc=<v=^&~R`wlgy}wQ4T=x4>0$!M2*jB@3Px`1O358azw)(nR6rEgKp(tn>SmUAkc= z(}K9y3#VQ7y)N_nScZv~UvAKafAcM~rfhXh_FBlX)r{f4Wc|Y2#dUJ`FV0~XS{{F^ z{@c!s$1{?empS*;*mP-Z=DTC>Q$IV1v8%!9c3jSFwbv6qafv8SpEI}APg=6_%Ht+s zqucejcSS9UvEI;G^hf)>cI~zpjgL-+{#ni+ocZ}5d|zp+!DX=6O-|}itkF)5IN1*I ze-;z|oQVDUeQteX4r9JX=N$3LR<G2`gc#m1%x`iv6v#R-NiN4>Wk3Qi8y5?+gik=y zQ<aSBZ8{8oZVf3{F6$Jo@9SGFk+i&!r{&hCo9|aHn;+a~Q?<8J=2nKK#5JBDhq))1 zw4JQv)qZqJ<>E~56%V&<ExX6~?^olp+=WLhyA`{aX}N8<<F_w{b;tHJNuNT&ds8@# z<-2Fq{onB-#cjIhqp&BYJd;(g<}Pde_lxn~*0P7&uBc`(Rxm3#Cj9%cHT!YR?#O%p zi?<oQRo!6pR`l+1`%e;Oe?Dr5m*4z!eAn({{`>Ci$exq`**u$>M=yPA^^+?l^Ofr_ z9W5<Cdi3hm<Ek+`SFwt#tE=@tl6v*%@%mWl*7rsXrcJz>Q=LED5L*(r?N{8?3lY}L zp3lxG+<3p$>V&vq^cuO1Y{qx%WS7Wz6#8@KXdU5_T@!mpYcXGh2-nn#9nR(s)#qL3 z9X-E_`Sk{-xX2qzt9843>ekz(D9&?reLi!|ZT4B-e^$>~*S%um%(sP2(|+hxCS7T& zILnsh^6XWF$x>^(18e>!)vnm7zb$`(*%cvq?GrJ+y&TWQbG<v_ZeA6Ve}1caxw7l^ zxvRYX@SEIEGd#a|QRK#>3kxEOZ~wipJoKy=#~Gf}1-os}uZlc>m*4o1(R|78=e>WV zcr`3leNx6!Jm;HFOA@2~-ieduw@NupFQ4kStYnePoAft@@d7y<rf+Az-!zkr>!h2c zjQ>T(y@yp@eF`O|!*`!@)pKmy{q7yl;j+pHK1}`QsX<yy4O#95t7l&PZQ^mvUHkg_ z^>5Cc_#kJZtr>0p^To*vZJQ<?SyHI|BvfUOy{4tp%(?gN=gb$Edv`bMU*PHfu1DGS zT}Kz2Oq%ENQcnK=l=%v4w@AHD-nw+@tsAeC3f-g<WVTfcY^alO`EDU+|F6C5wG)%S z`m>o=H>^2tcQ!4n$6dQ;{rz1xuYFT&3@Osudsz8a;ZL7Wd`GnFEfaRQJrZ9VsXv9u z&osySRm6$z*roqItmDh*2p3n&_{7TeUt%@GCBEvqbuTm4Zoe>}E9ukEzlYDt2Om|N zZdkz;@FJyd3h!)5)dcQ4_iqa63D3yebzoD<e+SpLuwz1*rt^~GjZHKvlQVABv2X>> zynk|)k&-djord0ZVMjhGW>%yJ{|orE@|wm^ZBY#+sh>)XNemIWUtV6=+Zwl$ll>NN zu5UnCYwv+gCkk&U3B`%02yZjzDm$I-AtoFjuEr(8c0`NC>9_gB-3OCO`kqJK-2HUx z%{xig&%8PBG&6n4bQ#gkmHNStt75M0S?zY9`(y#vZDsB+bCy(S7Ta3amUlPFyM+j? z+rxil<<oBrENOZgtjBe3v2Kj^&A2F4VEJU(e_e~4e<bWre2o&l)510HU~Xc!ZOFTB z!!tYXWbD4Q(tgXGvo}ALPE^b6V4PtmptbC_PijM6^Os$#pFMn#r9DM1?^T^@Xx_sA z9wu8iu4%b`z%Q9g@ZsyZKe`$W{?`;KrY0;qw7KgfH#gVuut@iH;j+frSJO>pnZj=! zJTSQ^p)%u&c+`|vU(aoev8r_t;Yj{Iqxre+B=eq6JC^rFEoVr)>HhM|pFa~Hm0cHK zdd|r4?55)95&wTby81U$rCHf7_hKx+<ze9yAJgx!Hr3zUBK-GB#c2lTmXKFsH`tU7 zIN~dRZIM~Wmfd`=%W^lzn$<S)4bOuWbrvPWq<m6b`S}6+ywGdS8*lNreSEzvt~NI7 zc=Ya-u7~ybJ)5W2&A6|1TAf|(md9+{XSJXIG-vm(Kl9ThD6I5hWpe(##)f56ez1Kn z3(R{`rTTLsW4Vwt@5c`Ly+0G4zj#yf`rA}_t|rlo{ik1u?uanz)=p@B;r*2>`Ip-g zmPz%x|J?sZuX9?*@<RFRymeyYm(Sc#J^Pj0>ci^K`c@}*?V82>>Cc_N|9CYEOW)-l zdegDh>r<rbhp0M}86wt2f8Tw3xK?_0y7j%M?3#<@r(V+Da4|)m@4k9OxR9#8XLSDT zMj87lU)P^xsMd0cRJ^{!^~Q-g5=#8b`aOIvD@n}gJ;AH&cs+dkcdZGIO&oIOLGIcQ zSlVAT?|5YqRd{dfjDXKaE?#(ZZH7v6tdU>E)CYmPP6r*XdM|%C?ZQ#_P?e=iivxO{ z<0dG$KX|-IZcfIBisA=5n&(J95ljrOymZ36&i0AO{RvGj|0jNV(VDu#B2GeFGOMHG z`=wJ^8&fCe?$7!gd?<C+4ZYU%Znn-}?<Y&ot!FncsoWT@EnUA-<PM+i%`2jpS8;H@ z@0?yey>sa#hu7;8o_m~Xv9X?TOYYKy<qvnSp4+=W)$roYcQ+kpMVP5r>l@4$IRDL; zOVOq}@YU{Lvu||&YCUweQQR`??~YEJl`8vHHXOWH9{<qxc85D_|2wh!wGj+Diz8MQ zZp<lIYE<-sXGT&?-M&+~y_@z0nkp$cJhKzKySa43dYg_+xAUP*e>PgnJed5*a?51( z%wmxn+#fhUmVG;OxsYK#Pqkv8q`)nCS$lm}jiBCRAr`v7)KV+gNd7#P#C^7|{f+nE zm<Mb83O5TLD)jukS1#I*OJ&lI(9X|qE9*;_lzYycdM`)dU}@7^sq);_lWkuXTz6l# zcH-t$3pp1m*F5VpmWmcQ=un)-KHpMEepP+`?}DQa87*e+N1rU?Hk!on=F6<~#PgGC z87kvu@vS-Q5!{lxJnyW>)c+4(tlw}lINY`U)saJUbIe&+eBZpSEJEI*B<R)jw*pq> zkEc6d&&)6WZhe_AFFrAQUgXzP>kMD(SAKe8ZF#k<db$67^{E_TWr9~b&mQ~ZGkcNa z@4Y+$CQKa6pSexe->BJ@EPH!;Xm787%=`r|cg{1a#)(}!o@u?E|MBq$>r?`m*L|3J zw(xfSGTWkUGmPJE?0dA}1Ye>PQ^t~wg^^qT8l_MCQ=^%{AwS*Z?4hK&zsj@HlJD?c zI$ybPzrE*A-nBh%q{?4*x$Kuctl`_-?DIUvud2VRYPWOZTYnpw<Yf%p?V<g?eCzoB zf6+`TRdj5Ku~)FmmhpbS?`K}B=liE=u3PvGkDA>Jwv`GB->@_`N2<p3#=^y$z0S=J zv@!A7eXIJ^yDpb|f7UtQ$WEF0eEsdoYtKsie)Rsj*mdFec>yaPJbcX9w_4<Koc$^r z7x()s&E)T_IGbkV8}wi0%U!-7N8{bj2b|v)uj06S!8E1S71tm7<QvaD&1bawV8er; zB{H^cM%=gS_NuQH>0<M8(>1yuyRy6CLAgj>j)Ad~#I3G(N)7fO*Ze4(`dDpe4BMjF zOM_A$-90E2-LhfAxdOSEY#zDCk{av6&OGhh5v(y=bDc*1I<JkJUY+;O3Any8N|CSU zV@rSJp~?cTgAX74_lbSp85%b6Je%2nr<Y8+{!71Ce_6h~FF?|_>HM}cs*T^{<Pvu5 z*3ZAbuQ<>n@ypxk+V*`vCNZjY>P_@$wif$QFzss0rIU#dC+F<ku}@>s;l;BR9A2H; z>>?;^E8J$ddS5&%he?=bmqE(9vwD#{JkO{8-1E8g)w{AsF}C?9YR)}z-88xNLjp(r zzf}p@w)@`KRHQaO?7pd*ZJf0I`&5}H^92MH9?m-OWc?%-2H_bi)6-vgSvYxfM9pRJ zTYRf}?uQdSauecxeYT!kw!Qnrq?))k8`adMe@{JmvbD|n%7gHnmz5zey_@QrOCQW_ z%wBR(vs^pe+&V`$Sa`Y6lr5*;1W4pu`XKo(s8cF2D>=7bT$}GtVTZ2N%fpPRmLHW| zru;ayKt=h6h_k<}&e@E;LYHpOQeJvV`q249^55^qK9DW=FQ*=O_S@ew@$S`TQ49vn zwsC4sPmZupx!A5NWjMjw{O<v`wjaUy-WeSxYuBb<N?F-6eNN77H~U@pISYh3)nY%? z_Wk)+@#=HqpT&pMUYwP$@cZg6^Znp&-;6sB_wCuu7T-Sft9sI$)PpnYQr|Jx7_sH( zXEFyc++WkKF`<wl`r5*PvuzgwKb>aX7s$e*{%^mMv0r<hM9;xVK1wlp(@%KTIbTiT z-GBK>)0wFs)-szoH~1gic&se*W#6u?QCjb-wdZ(h)RnF7VGw0Ix@q3~3l}zh{FvG> zxx%-Rb%M$hDFJSSwDu1lTO}s1vgc=!*tg~9yinI-z7H`k_&tkH9<Mlm$j6H_?H{YE z<IcA#9Zd|cUhI7HRsHEg+1FN)9&;rcT+DJAR?ie>k6<_`@ImLkrxv>dV|D*^JquN_ zyq26#Eusd=y1}Npu5PX$9qVo>p0K#QZn@>BON(cv&zsmEmmDQ&opSxs@9q^1z3TES zTtseGUicmpZ*f_VYtP0<VgJgOvuJdQUC~^Vt0vUCmTTJ-w!$C@O&J$P=M7GVmfb4~ zI1XJ==QTLCI$5A)wVn7Jr55J~CC6z&71vT{yt(OnMd`@0(!)-i7JUz2ESaz|`l#zv znVw?xP=N^@6E1vbGHCF1*<9nEGO6#f?-r4hoa&khmK(id>-$bsTl`&9=lB20m6(Ly z8#AtZ^&V(-xFaL~SI^h?s7Au400)ylf0^s%PIp`SdxC>WQU1Rd_Fe%8o+vi<zW&|w zA-hrazZ%oUj!8j(QhH}?m!6`{676#<Jg!uzU4?VgBd>o;wfVm#{ZTv~;Vd)x*_=#g zE!N$&TLTO@H~yBH=5lMb!;hEm3VZJS>^LN=;42WUSjtqAeLgnpn(ZX3mtAF^3^Atz z{@?%k-+j)(z6IADm0g$a2sWJ0y{<8Je!Vxtd55E-Q9{#QXDnIc^XNx`<mS}<3Kti2 z2XF-5vel4t5PCbCan6Y!)nQf>p3d-LYN)&QM#SFdv!P4$(W^Sa>1TRR-Tk3>QvJc_ zO<%sO|0I!QC3HsY*{W&l{PHvXPG1)E_0P`pbl2r+*Yr=8oYs*PJ-PGiW5b&q#{16+ zUlIsD$@p&P9>x2w&a@OgwA%bND$>l_b<ah+P(9vq?rF>=yN?*$Q&(tIm~mC+^`pPL zj*DGidnYdW_IbW*cNX8R&G|iRRs3|NtaCi?iz58`Zwo$8*lB#2-#jnuZQJ>z)h9$# z@7}Y>Ut1Mr;&pS`=1KQoMNi;8xR3Yx{q1~3Nx`dPi@MF-#gCPLHv77*Aa&#H#a(jq zb4!ifFIlk&Oxcm<Be=$5hWf7{^E(@I0(Z3vJX?N?H%inlwB@lb_uK1pCdPH7h-gTx zxZf!h8n;-s@#Eatf8Rxk=e^|OX)sP!+`fvbJo>?ue}W$S_a#M^uY6wLbYXS&tL)my ze2L9U+3XBrEB_zN{Z;n$$kSc%(;d#$ZqL5HJH}{&<j(gt#kS(IhmS6e-+j%rus+4+ z!=|n4SFXF^-`f4EvgG8`d!~~A6AxIFyI<xh<ghR+S(Mp$`e(<dPf5$)uG{@l?+YXA z9j<Eo95#t>%0A1K7s-eE?Yy`q<qm72lJF9S?+h92&n)a4Up+3{x^h*;DSK7PRfkd- z5}vB~#5Yg>dhh1z?-CPEM&InaGPO{C^W1H_Q{U9yoAPIC%^}&ul*m(D{xaXza2K!L zu;J+Q6CaYFiRJ3%C2vWR{(SGv?$BCI$34RHn|x09?EPdi+1Muj<(+A-GJhX>v@&&4 z?C$evt2cZK-j|wJxQ_R6D);o-nm-~19c@2We7kR%Jbfwq_xZQin(cjYWNpy?b=}AB zg?zQrXs!A9sF>}V`8B!i7EAIk{Pi%;zp^>tfVf|Y)%CXv=XE^e5B_}R+_xKSKkHXq zvU&2i`f~8s;v>PAudlP_QrJCbL525UnbR!A%`Uq0A30w?Kj(Yo+0}dXpU!2dwTt-M zr=U1#`f10vt9$KtOkC-lWjw*^(Y*ti7E=P63>&RD-(|O%wR^pH^NFlwj$eMVYWL#q z&DISC^EiI!&(<}l-{M%17XE=p|8CF+_2;){2ktv37Fr;#>vZ$g598Fx|9@gnG^gm7 zmz;atFymfkxP(HV{fk{CvkPkM&eg8XZIH^b>EE*X=LGJG6^kD6`bFhVk?~m<6|C;C zA?)yq{r}{Y`$`3O|NAGFD#(0-?bWOE3`=qopIWQz-u>#L2%mKs<C70-JfB>7m{)L- z&AWs9O+?=ehPN6=Kid7)=QffF`uU^aR|TWdAy0O`S-Pu_JqWXQYPHh3V}J6|?4rl> zuce<46OdWF%;&1cmFXd_9j)?#9#_hEH^lnocWrX4UDB<ry!gvb&&Eih8unG6=id<u z?OeY8+}SFtn9vuClxI&5-TXsKmv7FNzddW*>hAl@J9Ax8GyatIq^l35T^&pn?W5Tj z*)E>N9<t>vi~jc`7ZMKgg-71um0rz#nRj{!@8oCqUiBV4YdK3$!F68lbi3yKBL@WE z-AQFTYaG2yZ0`Z1@{{i6^$k*AR(IarRC&$ejOq3Doh>KSy%_4BojJ3=`TnbHi3zFA z>(&1$=b6u2svA*$HfdM<0#%8b@%OLVZrdMaal7Kgqps7p*IqyP&PLkK+F!MYJFt>1 zc<%B$H|+n;nKj#B$(2u^yR23l{n<PD5K}VKp}X7~`B&CN-?RO3lj93Rt((gJ3oaVx ze8tmPG+g%8$Q!sxG1SEzwR%_Fy+N*CBjN?C#r|JLjQ&mjGn;4KX!0<(e7mUQS;&<K zPI9J=Fa2+tC>EcYc`$GegZiutQQvoBkpinPh91k7T;lPMdCqg?g;uFIwnbj4;c8(K zX81gF#;2dx4~uO5Fj4&-<9v~m7s8IczRJ3BVxGxQtyw2D6}p7a)caQPvAK31+;&(q z>sO)wovaL%&V{|}S)Qou``EepOJlBdfZxZ21#cVIZvNuwZ?I3UW&e|>F$KzPrqTho z>==}lj4$i%p5b?PDxbxZXHp-3Z~vJY926AU+J4v9hv&$OgITRFj`tTn+To_m9`fb( z<BaOuM8yM1&6~`_nUa+5OGw8BKAtZ3?U_ce3DcysHz%^D>96a`<>CEZcjL*2?;BXT zEE>8SD%>yS-C)1q#`Pi~%XR*mNqyJSf-m~EOZ1*vev>Qk-H+I{;!Ow6B%7KTnP|$+ zyTr8V`^)lo>zm5nmve^fNO7N*DfuM!nZ%o?!q1-gJuyBnF4)(0ww%8`F*4z(7keSo z53M85`en8*Yg1n;Ff*)}XGzpy;VYMqGyMG;{;;um(hRPZdCcGStY)uuyuEPOqxlQ6 zGgi!I2$U=mEvyr}`(vkLc$A>Bq`ln!S%(T3Rdwr^)w^d$9uQX(Rr-EEt@K$zi;6{t zxXk3b^RvR)PgNFe7j8KI_3BerfoUGh)mx?AA8q+R<y7YGU8h#6oV`2I;^p_1;uHMW zeltFP`our^nWcZ5@85VFqrZB`R&Vq3k?&U}BpGkiKgV^hV9l+v<c*b*0ReHl_;>Pd z{D0_f>Fo~5oPZ6670L&Mq$W>fDAJy;s`0FB>LniY-;KJ#`paEzwK7~k?58fqApfa* z{i}VFD_2_V57MZKO-c&Qe}8Q?3!_n@DpS<M_U^`W{o4A!r%Y7r`M)`l<L=Dpw1i#p zL5h31A5X}N{%>NoxtQZ`db5F@@?w>M6Z1I)CN-@2puhA(>&7+tTjbS0GTMFIo|ABS zgY-Mc-@%L1gnKedG@j3zymslwsVp*AHub)2WMIpidA!noIrC}$D^hpewpM9Q-n(tr z$+qMI0lU19FD5?QA^K@MW7%ZUE%v7q|DByJ*uJLl#o2X*+|E}XiDn%-JDb~gUBtq= zxaU7~UiD{}r@GbInjKmEv{v)*mCxKO?7zsXyy88e&i?VpkvkLj*hsZc>%GqB`}h00 zkN3BG#VF+Etl7sgb+xqA|CIl=ce}PPJb35QjRSWaPfg?65xpfL!!IN<=zYg_vAz|4 zS?Bg%(!aH5>e=<*w(9NeS~b~u^6D7|ZJ%#GaTHwjeEIX~xA;3mHh3&ITw-xwDaYPT zW=X}0j)Oh1&XdEVW*wYYUd{h*qO?-7!n=;Vo7!nV583Yi{VT>+;7D@T8^#464~QQ1 zpZBE8T9IEVC~I<Z&Fte7zNp<!bJ@B7Qs1h7>lQov>w739w6D&d6`cB7?U8w@hn6bi zzvWllJ$BAr^leJ%X8B1E^;%z<7S-_OS8s8Q*3~<D%x?37w5r|7yAQ3anR0C7tS?KY zYlB*EmGhX~@>yzBtQZl}vPgNiX6*71lT7t(myLC=Dt<Doi|5QKHul^-U#RGC+9jn$ zx19rWpPp0*Xg@kz%~k)*!u7_@XX1Uj-n|T4R_vnoQtSE#{ffLSkJ|@s*q{Aw`8H&u zWS5`w|7k3|m2-qdR!-PAPvX6*(*l91{=0P^uDz0)TE>(Y?7ye|H(UP^<9qk^Z-_Rt zbvKDM_#txN_1l`STXaKj>|NN*ye?w>+r(R9!m>Kid$jb{o7~tC_eT8xLtTsNe;f){ zTbD^RI{ECGxW6VmT`EYx?1Na{+e_)i_4YQE6+0FR$IrfdWp72++=|?;#mnu~JuC0C z=k;YQ%(=0%?l9vH-X!5eY#e6(lJ@^ACTx&yblMVif6rg0%~ozp+B>dlHtsv|?!@m; zd!!SlE;koW@tb8;yX3E~<C4|u*Zr8%^=)>;#!rssK@YFhK0C&cxqtieRBfhKiOloM zxis5PR$Z_wt-pNft@oZSUyfh2_&z0T?~II};SmyVzkP04C6YGHV#Yc3BMkqhy}QXF zlEj{Oc5dzM3(?;#(rjPrAD!p;?T5(RJ)4B`5;BACnJqn@^-Ms6B{XGm{mHp?JsbWQ zxZOW^{r$`+bxDsK#^p&Cu4+H~gqF02-Hgir$jWwj$=S@3|Nfi(zPt#$KI4k;<<uLK zSDd`6`tQ(h2VLiYhc>pnCQq#oRg^XyFnyj>Tx(Z9aelnX)lYv<yT)FvFBjC=pQ2T> z``zK`%T!WDRkEkASh42K)!Z6EhL=~~O-|%t;1XC6T5Q5RH|NF;;g^?qc|?;Z-;!-H zZk+ONfyA8^Y|NE<KKXvnpFB|iXc=9Um)q(&tzhxVIkUNM?4F<W;_s?JA!*@_dAggr zHM&oq^jx~DORdH)>Ri_m8Oe>@JIi8SYJ5IMmy2KBz;7-vq26#2A5Uxejj8<6rL#RE zS+zVZH*>CT)LH*u?d9)%b&>9D3-qmIbke5sDqIyyS<R68@tHM)e9Zj~^+}HF>V0ea z%~qD4;N<bzJJWCfe*Z3eDduF?hBJ@O{F>vMppo<Q%%5q?zsP5Ge|Kz>F+0lcbMtej zBI^TZ>&4C<4D)&Jcvcx%{dy8-WcfPx+-7H|$`vmb{C9dMa7OV_t>fh!@p-Xb{a(?G z0%3D^yMOz@BI&h_A@$RW3+hix7H2!}`t&}G;TxY~i20Pm`SsfU`i}1+Ex8$!C+s!L zKb0N#>*&-4N%QjA?`IwR7tLFqb8h*QcH`@R4z3rT=YMYcKAC$Z5(05@Ck{r~KkFAM z;C^*Du+gGz!uwlnJ9BFk4r~^QPZwp9l)dd&xAVDc<`m87MGd?M?sYP#F8CvJX7eS7 z=ks*F8vai&TT<80^kPB!Lc>ZMzYU9g<n+=!cVzw&__ypub3VtyQ|k?af*<N~R)+N! z>s5YjzZ5w=GEtUy+N!rUpKe!g{&elj`W5r-+>)l<)t)`m+;pkIL08@t?NWbFw*HD! zIB2wo{gF?<*t0z!&rWAQ-gUaKjc0}0`Q3TeoXJVni}H+Wl>#nl2K>H#Ig!C|<qKI> znU6QFyb4_wS=eA<vWM3td{Ilb?4nLDr@7Wk{oQla3TAm1d#!c7$dKh69scc3pjq#U zDam$Cao-PoJZJWhXUgTjpAvFhGBq1i9yaDK*^*zLsIx#zzxM#!^!w$9ZY-L5uA<_0 z_62v#HqRv+`_HA8Z(ZxkxJc#oxBh*X()bq6T=9DGm7Ut07msY^bDA>g9vc@gzrbwK z^nDwRY8m*JGcZ2QzrNXH#nYv!A}=qLDfa57u<x6;D*aHJ(vr`;N0qKSsb~3j8T)n| zXqMn9GqPKf(J;C4#@UN!g1$Iz`6%zb{qW3q{uz@!{HoJ-%qdRXlNR@2=NsLJji<^O zXSek;N4|=b`txvq-`Vu_k3SgR|9&ImIv109xst()z*>9z0$r=B=QdVZP3Ld#5qfy$ z-PxLZF0re{XNx}<I%jp(QZ~@l@5Hjy{JkP>EAu!*=6z1g4`h2)?~#}Idk**Q^TJa* z-%K*Rc8kS%$%&Jmo98;kf88GS=HHpGmJa)si#A@Zew7<*qLgM6EF(X~Drmx+`E$f4 zcy|7l2>*WJTpM2-*JG>NRo{*G3YV+Q4KA7aYtuHH9_ilCcJJS2Z}M8)s=k3!GGv)b zTD;$rXC)IYYU`hzJF)qtkY)RezVfy?`(#CQck1@;v->T*@XzxZCmuS_2)C-RF#BY* z@W<lH)7P3`Okd#sZ+7PdAD1%U^`*;9ZF+9Hp5NAeYWggh32&~w5%+Sr#r*2-tG`hb zU3S<zeRgk}-*wa``s_PDjb%-1a^BSCvCMh2`PYBDJ(qt9UrT@RTZJRw0pFWfTmL@U zrI(TX?A_Ur6J`M^-%9SY-BJI}_Lj?t_3rLdPr3OD=C?IS$#b9JHY;US<^ArM{wQpH zo`am4^`_INtSc7tZRuoJc%dwodT`l-h2oz$Ov-M5C{CZWCCll?*{2u8H70DmDEZ~^ ztiKzsI7-E_h$@&V|G4&P56{Y%!ZqDZ1<%v3xJ#UK&tVg_$l*vx5&Uy7I{&|!OZBOJ zA9Q6|7+&!1El_aHXJ=!O$$kFsd2`s;=ILzfYWprI+-q^UoqT%sk+qHU&Dl6u<}O~| z7&uSip@l?<52I%G=jERwkKLGDv-+XyzGv6IHJ|(Y_;k##jwc$kSHIc6D=KdN>#3ag zuITUx-g0B;47hmeoIv5^hwm02)qS2LxWgjltCv#m3(tg`Z~vB;Ouu+RA^dd09?K0! z_qA>54oTkM8lr2{_G<3?)h17$N?Dpmmx_5P`5ZrY{d)hhx9iMH7}bNmyUu5PxB1EG z>bHq%&wZk5zV4f||6_6VEUiPz!Ea5=q_+0oG1||;sc#cL>sW<&7_*r3BX%CnWgnMq zU96wQoVtZISnBez>eq+$TiiLf+-cT-BY$)6wA}yKRdjwQ>ndILIx%7M*SPC5(+}P} z@jGZs+b?zQ`A&9|o9eAze9sA3^z*n;UE_w(?@?Rx`F>oU@$?J-#{EC$eoBg9+c&d} zG1z^E@#LMcs-|s!?mVaz33V^;o%i8M>wiXer$<$7$0l3zo@m>=ct@8)@c$X2Yo}Fm zCMaGqf7WwkVR*4ZgR)A>+xZUX7xBAre_V9=``7pL9^YN$boWEuec$aT<9(j?=AN+@ z@RO)N8?s*c-|L;`ciWD*KPjD)-<+$v><+(UL6q*~6(=vp9bCqEL+-eD;Dt{bSDxNE zu{UGG$A3TC#PwO@#LVohUvK@)X0CL9`Fp-T)*=q;KV8BhSEsykIQ6Dha-m7oloz2b zePK?U7uKI!HOZ^~Wr@Y-<rBU{vNAb2?0A2W*(U$~Im6p=7cw2J64T@wuNM~?eO3B1 zZJICRyQdc`h5wXHka+Py>C#@Ny-(M#$~T|H^SHpJe%C{{NN%<66CV#`v*l`CQ-00r z)!{wky!X#Mk1okebvt%kl4BPUioRILvFdxW!c5hIypAk`d4|7^O#YhUxM9|!Wt)z- z9bmq2zh3vHe%xl~dETcKFWOvQ5g8I$Dl}hKN^!}@$zIaC&Mo}6hI<>oa%=6C>_aUE z1^E$;O7+{dE9_>hVJ-Vt-W<{Vd|P<)?VURx=t=+oc`WgNt?Q9_UmITXbWXD6aSQHy zlp<t%?R(h$0{d6{x(&r^r)+$E(BqG!?ZKFDJoN`HvV`JGvh&)kS2OKzF`PbA*t-2w zEpNK^_3&MFjqA58{qSHXQ)Kq0+p!H2F$M1u9v1x5i(>dLSpN5aKU2=?&C8+|)Cg<K z<tX0y{n#P4Iry1hzP;Vtd6Soa-1dz{dci^!q3+cux1HoXS^9m`_7f&A+x)b`ET$<h zG7mbHekpDb`_^jfL$ZFcjQ%TTT@8%ko3-EY`SiK3gnXw2W~fWtexhJ|xP7J1?WFqi z=B}nu%};dKo=bby^mAo5Ux%5?Er&h-r>qp6_$a!Gt6_ps*!6Vg>mttI7n|pV+xxq& zoBLO0S5^0g+N*Kv?kp^QpAcPQ&+@6>U4Fv^?t9|ZZ2W1j7j0WIf4NNmgQKb~YyHbu zS4-ONbrimt?t13Rf`&CuvOfM-EaTL%J3jIKOv${2-{(r!{Hee9`nIpI`ONQgUF*z~ z97_IAw7z;Rm!nN5`x(PYAO9N@Pb`0U>ZC-9o`%^wOIa<o)jD(j6)exWY%)7pL#(fF z+7jR8Io1aP59xWDO!}3>l6z;z`<bct6;GYjQTgPju;kWz*@&XXUl;GJ_;SFB%^)W1 z>0%=W%eN6P&vze94PDlCE%VgYlU>T!BGsg79vXalR%2o%^Tt+xD|hMK_&LvN%m2Kx z4i_?W>fN?MPO7QL_LB3N<zAT*mjC&8on7^s<;}u^b*<ZWo|xS9T<W9VRLK-Oo7&TJ zl)K*F4ln-G&v0~Qq`khx*)Ne%thV0oRg%`f*qa>5W69o?eBE_dI@gcNZ;i2!cmo7Y zW`?=ydY(VqzqheNuhBEt{9FE=IV~>dZhWyh_F_^%VEtlMGu~%4_L(wUQeJJ5(f?6g z{w|!`gK?Uj)17}C{=K$iU@N(OK9fP>=k&aQn-X_-&RX{8?S&8dxsJ?#<o9*{RO?VR z^q#oUZX>gBtY_&Wm8IrtzvI5%{dG3>&*b<W%4Z%N^$))HTy~NDu6;UO(toc0?iW>H za4FIA`7bS*czM&>H+?e#w5JvI|NHew@nh+KxdmtAC8VC+R}jCwb!VdW3mH`xEvEO= zbN1ejuTBhZ-SU3@M*hfiw;oEgUAm@p|J(BB$xpUxgvvXoL_aF-c(L`^<@FY2=Zr&h z3N*L`#Wb7dJ`%OD{adj=S;p)ofB1BdX$@=DqIoBH>a?XllGnX0^7e~T=K`gAU$G5K zrp@tKx^>aLjqYi^hoU5BUT&(M#jJQ*>BaIT)f>cf=O>3OtBUfv7yL^7PV%zc&!OkM z*BE>H7pcGW_-J-yy1YbDs`rNd+vBEhVD;U)Z2g*>KeE@{Nm2CXJP`Hg(B!SAnhPs$ z*nAeZc%M+8%56|7^h0z?xOM=y&pNYN83iF?DsGk6O|Q17Ue5~u_B39|=Jvn1``O7W zV_l3`nVwBKqjdQ~-t4%*t(E^4?LM>2OZD&Op0;PtC5lDX+~8MYu?)JV8I*L8>BfPs z>1C-b@4k3kVrzW;q4dT37QsEi6Jyh@zHi!X&uZy;Z^`|i$9Rk<)~)boSuVEwcg1df zyQv&uc19D84)0@4%s%(Hs&my>wbHb|zh+)BXJIr-4{%?3;Qi{wS6VAye)aAC;%v{h zfbsfvkNrP?30*$w^y?~rUNyVfX4|$0={b+L-W9z3&*HYjm+<w$HhmoYvO;nPKW~ru z@-M!4_fNlXH)mOQ@`f$H{6B9-u$jcxMU3UL`iJN4J(MNU{MPWWvQX&9>!;h_y_;LU zB8zqP&&QK%9DMFX-Ka2kI1_u!yi>NUHIGrMd;>G<3AJbU19i`GuFkvjWc7_7x8_(& zOZ-~jFvsnK**ERfbfKr`qUGx?ismNwe_wP-aeCcHow-q5%B3eOkMl{npI_MO%~?8U zdPn>8jo*~rb$;xRY`FEZzPo&n$(EHyelzyA)v+@+WaWSCTr8ey+GnZnto84~$9Hb8 z{vNGKGfiDFtBqsJhG~VCW?PChQ*LZ+nXj?tolLoA#9ZT@T*soPHZ3l$FLZC@JJQt> zuU&KF=lgx}50Cj=y*=Oc*n-_>iWd|`@2F37`g}-J$0DXsVhQ6R)?oi&=8F$R(!GNN z*d94*&N2{`S^wy%K{k^gN2G`D>VBS6g&nMBwV&O+XQ+rau6OKoO)=eAvuNS(H+T1U z3;MsiC++*`MAf{YCo}v*^$jM^>@*kt)ZzN=<Zs=Iv`Z%)6;^Qn6LGKSfA2o;q~GeJ zUH5pbW__$#r0?!+6TJD0N8wd1p{{o~CT_CP;SsYe`K33fN=SP5sn^$<SMyC(3;bTi zryKi1QepL}4uA8U4J&WXnm&Kl^XWRZ;dkH5ZCY2Qq-f>&s_EPA;z)DH%kk;U3-5^Q zaEYBSTolOu&;Hj(2ib?-5(<0$ZqF-u_r~L8m)&3fQr_INYuK0b*ZutayG{G$@A^aX zceTp)s9)0i!1e9Hoxgv7#tAX}yUNfZdC$48N7J9{l;ZN{$qxjVwEj0a6~AQG9fk{k z&n3T*ZMf@m?P7wY)=86NTD=RyGo&?d1wCUeVP6{}Ds=B~rlQZXtfdNq7LqGBUjN;y zWpgS)s54gB=&alOs+pY=Tw0>8X=^QCnq<$qTO#h!mM+yvkGY@j@i=ag!Q<0CO=MYI zux91Lwy$gXIZw`$Op{P_m@kle_ldCd)5!@^=ernYcewn`dwy-ntb+A3Dow*eTdw*k z{Ble#OiJ}#qu%M3estXwm%@;=4X>tUnYFH(@U0=5k<(8_s-B1As%fj;o1X?VnB?1& zj<1V;)_ywlW!9cK4;M->>DbhKj>@01)>QLWiS?beM~^ihP^rA@biUT1%p+&#*GFrg z7YDtwpU3{(UPeA3et%r;gAb**=k7c6tSa&P;-~!^uHQ7-yyX|;@e`Y!TIZ#I>Xete zW7v|rLPa<4Z?B8}_T}dF)ruPOoC~6yZf~^9{lYZ=#}}Ib``c>@tHqzT&YD$r!74EL z)y1;=hwfD!w|wV%xpQgM?Uc;h-AiuA9u-^{HSZjIe8v50!2*GsKW@CTdmesSc!^0( zk&;3}QqaZ!6`S*aI)|KnI(^0r$A7CIl(_teWvlyA;CpqmT=C33dbKt$o?7%SIen6| z`q|1U{GOs*7mmO24E?%jq3A;Co*KJ3o=2a5)1FxI>dW&-D}5}^nCI=d)+=q8RNwD< zWz)I~>npBC9C`2dhU3lb6)sEEI`_1tm?l==`Cs|q%SGJ<H?p4z%(Rhv{bc5>ismhK zca4MYObJQrxok1>Ox>OojpG;eUH%2jajBgDE4?U`eYtATGp4`W(u67ltL9Cg^!r}9 zvHAJ(UAM&c8lTXvc{=-;h4{vUuTCWB-~S+-ZMpMb_RhsS6nd>*<i4=tOLyLy8!)AB z-E8ZVXJs!)um1d;-+JGBi(u(m)g214EaxYy+i&cfeR}q{)!)Qs6ciUT@BAr#I@EbV zD@U)LV&Zu-wiLE5MuGE*o7G?2$;I9_|J7kWBRe`_bzQ`#wKa>J?fb$+X2|a`KD3@c zh5g!R_jfWT*Y9M%73ZBLHT!7x*ZnmXlRxhB+7uFN{^M=ZIi~p>qT07#yRH9O%Kl=L zn?y#Ja@58>-<1uswkqDP-w>7X`hDzWf3ZyqcRYSxZNi-r<on&A)B5b)rxk6PfqRz5 zKU^>UJ}iKx_nY_W)R^xVcl7K{U$##1chUWvueSnI)N7PZT(;O}(XQ<F<;$c)LA6oy zZL`06s&Y)Qv}Nt6J5gDzyyoKaU7@q{|J}Y@_p$ocGi$f%cM&hom#q=Dsn6xo5L&-7 zc-rYq(YuAFj$D&%b6(6pdZ67a<mZvKh0|tx2qtWr)10U!${;bJ!(5H&G(*E&=X*Dm zcR0NIRj`Ro<8NBiQ(vw-dp+tOsQHxy-xV-4)2OI7QIBGBGfG~vAS7RV`MhlDziJ6H z^+hH<Y^c2Cvi<9#((f#q=Ph*tKg`ux=XPDQIO)ZLMa%{KU2FXQ=e+;6^>5*OCAM?# z$~@oPJCM{Npy;~#o_^Kt&Z)KekJwhNH(ES-$G_K&$_roSt@^g_Uwy;+CozIA&o3<6 zeE!jS9}aGx^0O|Rx`WhbyY+rtk$dpy+WI~F=AS=T7!<rK_2{Nv?c`gBx-#=8dK`_C zvkj3^@6mtv_p8tz(@Rl4H?N4ZFJU<){_}d{`)8{}Uh#<E;bc7`y7csa`;C>K{ueFk z`&XRHD`0B#u4Ut47r%3hHV7B`DJ}N%oAF}xF?XetDdxxDwzmrCS6FO3d}N!I`u%^$ z@0HBGkw3rFu<u-=r;1%)SO3Q)akssnpX+bG?tQZM)%?;F^@S5d1S%4~yt;beds08Q zlh?8J{r2<Zw@mw^@`Q6{(bW1-XSr^B)_A$_lK&Blq}mJW@4w6W%byl1@_s{dUO@W1 zRQoj^KhHE5Ub*}5wAIesyUS&7Z|iT5cJGMXdZemw(;Wu$dk-y=JW?t@hExVFk$u+j zxy<Km#@uadLRM>P2R^=7ERnXTHr#HlbmpNP^SB+qEDl|)Dy@9EY*WzJK8Z(GT$}%{ zzSIAzZ&&)ef8UbN-&?=`d(;VE3HK6riPqx#_V4HY|CW0E)MduK!A0CPf9B=eKVKWw z#HV!VoZV$v50+r>?j1(P)@x-2xlDUE*;U_My?Xo2_NO;4{kmjmQt<Xe=%uUK(~~`K z#NNo<8KyV;*vy_}gWU#~jn?{f#qcVe5RyLpct=m{jmq+Mtw$u}?#H`6E?s^1xU`|k z94&pTopRR-Zhy7%y|Kgede*;oj~N#}cHH@5aJgB!*6V-ok$wgDw52VL;YOELZ-)K} zDW92HbI-BxLci4gt%?hOS7vuw&*`t?Te@89*J2Cp(%+l!w@;2KHE>wGf=%+=k}XLZ zde35tW=#H@qqyZtukj=apA$Jca<|2oR>b+Zg(<CFX&xtL@~BKh#+-W(x9^(vAoGi7 zBj0LdpPJ09cTFmq@6n!XKEE!^U%vl<@^4qOVy>hm$E=Ph*VazRXnv@1Z|Sco)`y<Y zlbH26#D3n*XOsUeI)9A&qR9Jyi(OoP6j(+?Z~pMNzbbC!KkJ=#mH+qk@%^5?ZuXtS zvx^MZ{pvV-|J>W+{jtS2dbS<C60|$Z{a(}V^*{F&Yg-wb%6&Z;Kk@08{MOG!>oxV& zJkD;sz4VlIyg=en^NsdF^P0lG$8L1GpQk$e_}3r3KN>hv#3IBQp3IMMI$yo?%7$m> z8PlfaZ&uj)q-M9t2H$Lx)aq}6Zra8>I$noXA1(Ugx7?HMYweZ8*Y@WH==RREp8ZRu znYGa8&aOk+d?C%-EW7Mf%R4zbI5o;Vb(xo`JIq}0sNkEVVvv-<ne`#p+Uni~vwnPf zDIx#XXL;^#SLbBUe*MwhFM(?hXKMNR#bv>T=c1Wko2n)z&bshD@4INpaqjPXB{we1 zdhGIhqvh4IrStuCretc@O3&TS{OGuOo0_}Z{149M6|W4gIUX(Ksx9q}lZ)2bcI=gH z`KO=m?rz(=i&f7E*h@;zon_NkbyGQb&gy_Co$LGhcBL$j2^Zj$<UW$YskH9L*^tO- zX)8ON^3#8Xi7fDLpQ?6nY1M9Jo{1TGPlSz}8z$8~-@EP1oyLo;(J9jyOPE8$DtE9t zKCcYWu<^QKlByyi_vwPL&Y{zrlqBpwH(s57;AY*w-(@LX7Iuen7JALS^W<}rl&GAt zvD^<yy{Jz8lZ&Q3yYIdzpka~uZmzq>Sxp>gtJ$YsI1tNptHgWy_U*E=drBJboe8VA zzHmUSLO*VPsgBKzKPM6uerGbwU@!c8aPgwP@9lpsy*-wH((=QtHwUDzI;j7dn{9S$ zW^UQ-2j2wW1{5)yZT;}ga#zdD--XJ)7AcSSo2)xs&|K+sX8DTmrc$q7Up=YLd2Zpf z>N!qJWYsvu^rtjt_X-)5t3UaDcBQ3hl}h7-W9*LiML&E?{CrNZ*=rBi$(+5u4(&Zl zcWg>XV!Lribc@Cc4!!OfVhkY{wq&eVmOPy2)YJM!bL}smJDRb)tG3M2J@}k!Y41(7 zo%)`=nial_0@r<RVpaTf=kwp+!M{q9COum;o##-x-G&VxcH9;|kihe*G9uzeWk~E= zyI+r7Ed^&x{PenZe)pVG-l9|efvnoEPgi7%+Uu^`#qIaP_DbMXtyJ%cDY-MOR&`aI zuYa8sw$M-h&{X5M_qlZ>9`zS4JoJ8JVmsTS?)?0_m5YPQtS#K0PLUTmHhYD3aN{ek zd$)dV>X8WznQG;;Y1>i{&g`YC#~NQ9X#BEr|D&8X)xxL@l_wA8a5An~DVn}}L(9&s z%)2=b$y79aal0k-W$KEWH~SZ^3vp!WyLZa7B*^CFFRy&=1M{EHw_E8|=8@O;#f0@m zRmmmpyE<C0ZyuJNr?<{&@wcrn#C+qd%nrWv+I?O_=kiwd^zg&0_g<fW^pm`FhI*vd zn(ycB4X&;H;_D~2L)7E@pTF1Uw(tL|EX5Qm{ytPU@b67O-N}JsYm(>QlhTS(S!8#n zjC1GL^|#)>PMN)Wwchq;HZdoS-s-Jh(;c$o!}=Wgy$>obX;_(>top1nvsPO#@{rYA ztro>zPWEReOP_qw-TLre>8%x)7?>Sr6)JvQShahF%-s;n$go`tuj|f_6?!1Eu%O#X ztNFS3vel0#2P^a0+uRG7mF*{X`jBe&S;JiC&u5Rl+&S&s*UPfkoBT`ir|hm+ud#K- z-~0YbCye<+TbW*-KQX<!+WqU!f)?}Nzl+~)d$L1Q_J=axL%vfN1NLt4asK!_Omq5E zHs`e2-`?dKc|?Dcn6>U}!R12k&z*l2r`=d-o4d8${o_-8;j(ROyFYlfWxsKAaM$rU z-X9s!u;Of9@KV)a)%B{@UXQ+?R^Pw&X=>E}B@L!;tlL*bu6`AHRop~G)=j#q>S&Fb zk)67mI#0;*Cw<>%q#v)7-dS6n`@X22_wFuFi5MY?ix10VSHBBd^?zF0y13H9t1D_t z)589!b1Hn$cN0lo{x*{T-<^5Q0b7EE3$(o54(!|2*dh>_H9vfvv&h_Ho6C3fwoZ|} zcwzB**2jHm^30bn1Wk5a@$%Vp*X^Hu%5pZ>_2qt-x%2yDV(10IV?k~nOJXZEkGzaN z8?W40{>e}*@Rsq?JH^k0uBfeg6WaLy<*)CnxAtq9Ep-2KCF1N3i;3!6Hoan<cVzyF zl6b=zxjIiOw7t{ompzdP$zu5I#oT$?`*iKU;FAf40&8Y?O0y|A7U)cixMDal_maPS z-YKTYch~&&j~qF~uO-?ad+ULj#DPBtT5VH>4a8DCmKBLDOV#ha<*$B?H^_l)yZz<$ zOrOiLmBp1KiXxV?tb4ZN&5Kuc>&)glmu4ne&N^Xv{p#7sdG{3rY78WbUcEhf>i_NI zE0cN7@X5S!*WUPJ`rDiDIPNNIzK?nNKKy4d|L)p!;S83`x3^A7yFL3WZ^x(Q2bh+G zhc1p0HLEY3H1qFj=AGR+l?!|KWnXfhA}i9Tb~dhee||~jC*5UBPL_ST-Ffwd`n))w z%*V_59x$6l*KfOaWyhg!?P3M1e^36IT0BSk_M^6?OqC0nA`2NgFAFs5+<UNc@|E5V zQ_2spHaTr!yxZX}p(H(#%|<EGX@}pAJpvzINzM8-y&(Lo>6PAfvbCcBw^pUETzc}L z&6(@_mW5gE%zx+Yy!i6X`WyC}wS29P#GKhK*sLXg>i?;D`)kvUZ`=>;%H8|dJGZT2 z()!&yy3c4$7F_-AM$N;w1!>9qGsNa@4LiAF|L>cdYB$WET9zht^4O76{Reh#?~(7| z7n3(EUhtjq-{DWT&z!9||6McEnf`UUuFn0aSN@&;<@E>R845%MQ(ad!ghpI*mN{mn zbGGQ+;w3Lzr$(EF-<soeFgl0-^@^409%^SMPii=&8_ghl^?df%(7@ZO*R?Jm31)dX zEoZ&E%AC$^vx?VB-%m7uk|!cvFCg*yl=VEu|DI=Tx3lrx`}3NUgSFuc)BCdNOOLbN zW<H)!c<uRX#=v@q^q_6$9y{uDy;=2HSFF^^>{iwqHNUeHHYzj=&xq6E@-bvKjp(Xf zUjO%M?Dcm_{RbDnz87_L<_iT&0e1$LMbc%5{;#O|7%zKAQ7K55Pka+sXVv~izeB~Y ziasp6$Dw{f=eo13iI~Uob~WDpX*(vKJz<tme|=4UQI$v3gFu1#bq+2E9CQ~3{gLvT zS$F1``vHppGsh`)3i}jhRLRCY7yfj3^YSIkMglWbT)c~AKQEv1GcLGBsB)Hq)&^aU z)At_izJBr8v*hwWG56R~8P_`0ocSeUD8v2zywmAVlhbxhk#5<+(HypT#lN@Zxt@+n z%vk}sp@%Eu7WG#Dy67LOkvNfGXWrR`7P;FOz9<(zpuT<Hfpzjm-!!kC;7wY8xz5;r zW1qm)@E=oFX*k8Y?7C!RD&%hQ%gFvrC-ah?(j}&8=`-pqye>{)TrC^DZJS)AtnSQD z{}-}u>MlGivH#ut&U-b6CX4l4__g{<EX*>F_xb&~XP0(6W067MKj(ja606Er#MTIf zx%y38^D&m?_ro87FP%@EJrn#h;k01DF|of_b~Q>am)yRKdH?Ji56t@HS5&_%{B0KL z*ppCuZ{2^ty(WgYWwPeiywa_4WAMED{M_>gmwwC@e<;2Do?BJMo@YPj+_}_qZ_`qd z$uC5Yye?~LH{5A@;#RSs=H|^)--n+z+a(jX=VR&rdylt^w=>NOigqooN#EqWO-)Uq z?<lXYzeUmO<-Ups{x16QPv+`ngX6A?w{E`qW$x{)`^g?R^J*K4%hl^7pC9?Ioxf15 z_kn@?YUh@=oP4&kyvNfnPLcCURXfM~GlSJ@*8b^L>uln;|GYc<?FH2ni2^e=UH)@- z^;%bLKJ@~Aqf^Vx!<K0<A38R-|K05@>#dx&xk*y`4%g1E$$N3i@4vE3UCfE_pPH@v zVwQHiURd_H`-jv{H(jkl;VXG>*RGoz8M|Li_v_8>)@;^=UVcj&WETjq8z^P0X%b)R z7V<<aYJ0BegAKepZm%-t%)cR5{wie6-Lj^P_WxVHl_j4oWBe4wz0I71#q9F4v#P6Y z9P74Uebv`6;~UGAjKJ8t$A8}tpT42TKG^tEdUK_zzMhVeNc}_Zd0!4DeA0h#efh)# z4p~b#U;A?K@2|~n5)KSkr?sa23=MQ!==@37NK@;0Wai&5pNpmyaxa=PqwwuVtH+Oi z>@EJ8x>C!tVfWV3z?2hL4xap5@LXusc0K23##wf|-|TRE_VD8@tH!t=DWb0zxOr>7 zI`Q{Y)om>g+nqObZ%6Nb_3RPzR>p*rD>)cFL|(4@aB9=(jhSpsoe$cxf5+>|^U42t zJKv1=!RixY_ZpVQo}c|X{?6g=@^dPWIK28fO=Zb7y~JBHw&gdOpQ*U-n(TgBBXVKh zvG32%E{)yqC^+qd?!;g2JqIQC{hxR1hxtVQ#q#_53Oxk0#La$jKMshS&n(1zM~CmJ ze#{Mx5G$2EWq*wFlQcS;KIk?sn(@xRotyu#Y_k>{w>0a+?{ive0%UhTy~CFNv#wC@ z*q)tJUNdd5d(k`B@4_w1wDlSbQ#0Pgyp#UwHr-<1{ReN9&6n)!;}^QuvNUFUlwa(@ z>W_zZE6-DKc*gUry5O+v)&Ef%m0CVp98Z_0Tl2j<9I~rIG<J9Ey%n4IH}H3@)9FoP zeKx0I#nC%{9-OwfFS}|iYK=CY*4G*26#C&T$DZ~~6{S2^mAbVtyB2o8xPIzLsb%&0 zl)vd=_19;vu03aHZXQ2nd1=g3_itRQQW`zxFK~GjtIqi`b*u6H_lke>EzflJO*~|@ z<vY*+)!B36o=xN38ENgN_*<yCQYy~5KHYii)vKrP-QIUg>eu&ck5_GuIU&B(!q&}y zQdLC;^B!)Mtv^Kn{rR&&m%Soj<LbJj)+^4KRfb(Iu1O4C)iyJ4x?+u#$n<G%K3}m` z)YdEfx8{nay2`nu=j@J}v`uGfTNOGZ;j4Pk)P1+aH}V#%uZb4?CA!w|V2H-zC{bAf z2}#)#-5n2Enbzd>{ERtiWzT$GH}TN=V^8*4oZh_0`q!oe?q`RdR=KcUY-*j;vH!G9 z+~H*`24~J^R46|yUoJf9@1keF7FcB7c>nIY>FS>kB)43<ly#VGpMc&uk?tB-ImXQD zL%eMtY?pH~snl0}xHvuR*g45P0$ZyTwyfK3_3_`Wt>1-LnMJH+eZhZv#f%-&20#AJ zWBtw+xBWpu^=y5UY1KE}U8h<sS**<OT)S0?<yKe1Nk-RcZt*%P7Sk`CU9329_J4JT zMH&S$dTH4&wX-hPO}cQU|BlfVso%fXFD<t--(A)lv!zd|Kvk*hz;mmezxLhVaa8(N zE7R+mwRUB`9J<F(x2{!K!Txk-vz`P0mJ5sSNH9%XefmP`j-Oxhx1{g56}xrwbES1X z<?@dme*D|1Sv`-tzB#tynRWb*oXyhrQ#R=_Eng7Wx!-=yHHF#x%}>e&>Bm>UJ9qim z#M$S1E4JLJ2<_6JbUs9VXYV}yxNONCmv_`&PB&(Jc+b)%WcM?Nmv8b*t^as-aZUMt zKP_{vZS|YYTkWRbOX}Tl`R)m^M=yI<w=Mp`W@RMwuj{DVpG`gUbDD21>nY*<{U+C@ zD?iuqlYE0tsc-j}{fG079xbb!sJ(N)w1>V&=$vz&lDV7DIWztXbJ*xDHFLFp-N8>^ zPB-_+eO8+%x7*j|Lo$m|=KUY_PofquXV)Fey!ErkQcNRS`R9B66y}*Xn!iUGBpPj- zx#M=(Ls`2mNB5epH2mCh!8EdI)$h0Y-wi8Ml5FR_yz|Izcbyae#l{^QKk4pe7kC*t zM@>$3&b9+g3v){rNxgaF^G2~nEa}WlgN}8)$%QZ07Mm~Fy<h6{{e#aP`Hoa6eA?;Z z*mY#{p7!LsJKdOO2WZ63zntwSEYsQQ;(q8k<7tz$<c0-mTNagP`;_{m_GSyt{n~SY zEojwW+doShZv<*~T6Dgw+m;i<CCK%GTXDgR$4>te3{=~sIu!mc2vHXBWHCB(;NXTb z?VNM_SZXJ)+`U)R@xKXgcB*@!%)A9s3)t-4q@<Edr`v^37L3W?zodI@=4W2s&%L}G zmo@!S(E7&g(AQh_;6~o8OB(K5_HHh*`XPM7sP547{&h^prs?)HZM?8<^R#!{u4pVa z?7DR}``*td{r6p!q^56^S#7annW@hnW}(R90<E%}WlxnZh9BD@y2svbUH1)BH<|8k z`OVc|3fb$z_<KulmPV>g=)bX8z{8Z!THwezPmZY<IxOtY=`LwLvcren^6RX_9|U!J z&M=fj2ratzU^ln(^!<)S$@aFNg||iX#s8K#xU&2PgTX<zvae+kY~1#?r+Zs#q<8sb zP2Ewlduq4#od0SZ6P8ce!Jt0>>6VkxAD%663b$Uy_Wkzjx3dnOE&FWx$A0G3EZ*3H z4a?RDUg1c|Y<j8F;a!n(L+j~12JO=V-luCBE8Qk0t|>TS#=k}{BWX%sCY#I&-^q#v zey<Pi$@w$eb;F5viS70|lP$W>r%nB(8)}i%cuVc!<6VtSb3$5`;xBDatEea{y1Z=j znbu!>_As-%#r$RZ{AQVN`rL;PO>1}6v@UX}xm^EyTX8SnhqoL1vsT?Yy?b$q@6>Ac z|DvK-BShuf?SdaalGdK?bNyJ$DdptFOs<{M+m8h=y;0FptdlUGfsvh|xa!)B*`8T~ zEZ<Z@Su&av-xa<7%++4J&D1&m^P)GOzjJzNWmu+&2A^-5!Yt&pGE-}T;#9ZaE(XOX zMEm|+x>FnV==z&k3%4Dtc~!rq`O^}ei_sIMPxHGy;b)S2@?!7b>XSiH_wE1x+i=@& z!oSDHkLI4w`~UiY+{<6;7w+!Pw&K!k*#2Z8V?mG2OyS@4lWv#xrG_y08*UO8(fD~Z zDfR8NhvMftqS9weh)mt3V8HACwp=*yp|Dry-<29!dFH$0=a^QX4>bK!Al<fdk9NbZ zdN#4hc(D~7q3qjMER4KdTW7fS*QU33PaWaisvEL=LMQjR^m|op+=5pZtg-$scbBbe zPTO0%rf+-y>~EJpF7`fo*M;V%d8RA}a-MDC%J?zisB4a)^Snwuhn8T*hWvfng>owv zxa`_KLpSIoE5p<edtd%MTyXs#BhS*tg-iKZCkONMeb4-qnHhShM!`z?u-S*Ysh?uc ztY&kOX`dbTegC#=7th_f{xbR3+n!|)dLC>|xbk5`Z)kmXcIp1Wh7if^n<VA_9lUUB zWBJ^|!>$ZJ(scuUe)Y+;#VB$KoSDkFLZSVSjb3}GTdm0)+nCcAh0koeeq-jkmu>$K zYuiO8sxo&A&*6(_i*c2-Jh8uu`DFa7fWRBCUM%*v<;Y?^ZGO&iqSueM+$H6g<}K`! zonO{9H~O~2%^k7lj_!;+IY%)1q@Kjt*`k6L+qNILEb;T1XHKWLImZ+!_LNOQIa{AS zi!$5cs($3t<Wt2<GNObZey_PcDf2+qXGZ?pY@fgSO@3F?W0h!Pt8JTf;rF!S)hqVh z{TVjBtgP@_@9u+%roR|}h1{5=(W=`0(e`5I?a<SgciL{c_qw!UiN>!N7rzO<e75v! z=e~|PUt}G(RZM$WKB-UOJI8YG$Ct8hJ>sn1|Jbd%?tt0%!xh?Wx>i2>>{O3UfBQ(a zB%yR-3uEs>wOQK(w`U&C^PL%^bw62jzSgG?7dJNi@{0N%`z`Bw!{j{n<Y`$<bGCn2 z`=(Y|fK!@ZA(?a1DXp2c$NT>VDDSPz=CkK<TYJ={^zSV%1<sVxlmGe-S<NZwoEGq? zFk9rxqqKwtQd1`0S2nuce3bEwg2K0_Cpi~8{15-37j-I@)5$QA%`!IBb6%Hs!TYrg zW=9V1)v(~vTG=knq&V^F+OKPueamQ_y4{s|p<N!|i>yt%ZI>Cx?KN&={Or;D|MIUz z+)tRkGEHafX3b6dJ#$CY^N6a0Hgj|H1!9@@3P`YcDQ$SUr2RruMbM2Xk4~}NcB5=l z&Em=K%v)R^EaJA{x)qXV^;YS+rHI2DV~-PYqAZ<et1~7olH?2PmfhG}mtLI9-95LB zlkfQL_qUfW`SH{1uI%nzbI+G&T)4LL-@F@X!iKYp%)fHgJ}s2l+4XS4#D=?ug&faU zKJi$(@!yfns%CXz7wvpzEbo5nxu|>h^is=nDpu2eNw0`t-8X+Ko71x&)wiC^P%qYL z-M?&I@{iqzTejo~Szem@dUcVK`nA}ix4++)|G&`KDC+yPM^Y?#hso^&EU#;feV;OG z^YPTaef9gi-PT<vl6#)soH~7tgY25!+jp%fzfxhCbn<`H`~P#_)@pKml@P5_St8L; z{Nsg=PsYEqn>O?uIUy42bz|q=B@vBY0>5r;RewB*q47?S>eZWDSu12pO25=ETa)s@ zz`fue>tglPH}50Dr`|ZL-g5pEpP-RsRp`#_h_Yu6VQDj}Q)V8T^?s9L+jaTen(NG; zyxf_Nxahrp;}Li7MO%Z9^_NXM(l?$@S^d@gjM$&mk5B(SeRvhKnAMb5cjgtm=2&n2 zFH_5Lx8>1~{`E^wolju7v-rmS9c>Mnl_hiB8TW??Dt6BJ_VVlNue?D^*H={ZxR+k_ zTy#f6Po+F}LtEqDMUhRbV#>ObMOu6+BfH<L-Q~RS{^jn|RaVtYo_1UjWzdK(_o&R6 z(s+~8GHhy_`7Cu4*JGKF8L~5c)~J0u#&yg5fBQ9l=3_N&f7)s$x5VlHogyg6P{_PZ zZ2hO`uf~@*n;hw$axuNpW7AgMA8A(_&)ohSzL!HqX3g#Q7mIH!eqisZn#aEG((*&L zSN+QGDJRa(%3sbe|HJf6^$y#*$Q=rIy#Gh<(D|5O*s^5Tj6Vmg3nT9ReiJL1mbNbK z<cfytKW;9#9iO{8Ied}FJ|_PxR^LgA8|Hn8>z{eB{M2y<<An!g&Tv@G$yN4!9^KD) zj`@V#fA(wqf7}=UJufgjGJE0I`?eQv`ZoHSFim>UeE3o<Q%p3|s+TNFv>6uHx1>+~ zD9tRrlBGhrzBpobbN8XGmJ7Q44)C}gU}Nn#a_e;Xw6$+vaOUT|&*OhOvrPA|5!;fN zR_8Bxa+Y7_n(ny5qKc;?^rcIoQsqtSn-(`e*G@2fcih%a`E%zqs~rcso<v$r_2W9a zK0g1=Q%y_7;0)=18f&h(bZ&H9Yhatxe8pkW<si%Ru?xkdn-`qvcsi4nYhHv<Mm@(_ z<Mcz#7nU1{l^RS<jk_0htUyIeCamYcwWV@v1$;M3&iN<)YyXam{cpY14fm_84Ha1R z=jmc0-j@O_DotG4bvEoy7Y^%o{_zx8bIzq>o2G^<cYAEZ&H9$o*xJ=A&wpE&9(Sxa zs&j_h)}#8d#+()l^qZD$ypj25yA5M}3;!?fgN1w|0RcyyHiebG&(BntufHYsBbVnl zwagFa167T#hn$_i?wrZ&MOXZk*+Q%2XUcx^*skyC_;c;6d~NG%JE#7b7yn?2|7-W? z_x&5pekjj;HSy|)F7;CJ)2TI)!O_1B>P#jGJrz2#zu4_h%8&Nf%bnyr)_<ulD#{AX zp7}AhtnOM*Y1#UogI@hVrl-u9-@W(prZSe)J^KR;f4^*NYhb!+mvZ!NsLQ@TQQaH8 zCcn7YyERbrXH~D<yibc7w^UszR8}ucw!53tuz=~u=9zz=RsW9PKI5<GThFtHqIw>S zH^(l!{^R;JWyfnvS2{{coXhb@{$uMT>%+d4$K3XZ$%*!NuW}pSeEcdjEhh9?Tr=;E zwC25quD5^5&$^~Fdqv^b$(8FIlve+6pB&`Yy}jn@pM#ATo71b0+Qz*Lx;$0ws#@~3 zbcyLNL!15nhtG(gEfXa@B}`z8>e?s&%r9)Ya?<Q>rP-zk!|>_X4s$WjbXayN{yA&T z!L}JsdOxd|t<5*Bx4S5JS<`pp%*L+=Rwa}sC6!L&d4I`urhIpy7)xcS+XZ2v7rGOF z^j`n;`p>MJ|E!YtF8v!Z?OS$C_3amW($>bzPgt1U`)57ZxApz0VZT4cW3A7$SyCE* zmLHm(ch&yTflFGGBVRv%ZXdL4>2A4Wu8U5d{MgvieCEF6hrTTd6P=4(zHVYu*}5<D zi$s@hPrgXL=#z{n_ca<_mzfWyxn2JB?U8Wi)Wh@sUwOh}aos0#_gRTwhcgr7c8dMv z31AA-U;J*5#N#WAzi(sH|6hC2Shnx#g(HvqcC0yaA?fwr#Vaea9&CM3Xv?Q`r|FdK z`9c?4{bQce2T#1yaR1R7{4&;nuT3ZC(u5g-iiL7Zd+K})w%VVv&CJf-yTD!aqdJq$ zrO4PB7Zg$&R1)<i4lgZ^6AaKbH`mvAbR}=jEha60+3>(wTjwllI(wKQ;%V{xFuyRl zOU@ysN-=kx<Mv8P&6>l*E1SJOcJ=DuK=0H=cVs%JedM{Hl5n^AfI_Rqztaca9^JYp zW>=T=yf?xx@4Iw;$eXXcnz=YRX;ti&mDb&xzAf>)`*%m-dGFl+{Y_^B7oR`hFfH)H zgZa|djqmon@UB&UF8nF!nnfzR`*PM4mTkMIvVP%T9`oYTl%=cg3fpDMEGjgV>vGs1 z!`&&qD&u;IpbP7@hyR#m`|HmbF8ltLJ+<wp2aCg<OY!CVM0c=;erag#Nbqi1s^9eB z`3#M-Qrm?V-+cAUXshPUs992z6YCeA%$vq>xnuH&ODfr2f7<74J`yTu)Lb5Nt?|(w z=Lb9jOEf+nI5$buT_~L8+y}0^O5Ul3PZwKje_obe<bCS1?P{%zlZER({@b@`Rl%a_ zgBj)L*1O84J<2cRF=FQ|n0UPP$DL`bcI0{UIeO^sytdYSyPVC^hUQKuex@JyUwS;8 z^6x;#lQ#$SO)gATGnDzuWqsnbQ%vU1cl&(h`xlh#Rc%f=98{H^XO`x%)-HRkcuAuA zldB1r@*~`TFI7?79#H<_pRV@pw}new-%M!va5?C`(2C~;m+!wjFL&(g^weMLY-UvJ z9L%`0+}K9eKDyym?nS}#C#-lDe3hKq`TTJGmp8i3JVE@o1*7?2URpItW{&KnxUC;s zjqBc|9yyciXK>B-9aDm6vJ>Y%jo))-X6>7FqFaq)g7^vB_R~y4TJavaFVtU{d9BJ! zGSPdbZgnbfzIAP=&-%+}&e_WCE;Ia=pmQ!e=l7)T#o_0kZwhl4*(<v8^7$<l_Em4L z7=12ZU-_%~vC4<%a=GPa{-s)e>yK@?emhWW^?@8a-B0Cw8$`cOREib(VXJ&DqpbQ@ z+gg@QUo(7*ZYbxQaQ`}b$*9^po1ZtZ;lSij^Epa?FS9IE>AC!?Wc$4X`|8ct*Bfrk zEfG7TkbJ1ttH$!FpZhoK3(H)~E}9t%@IDc_bmhbM_#5u7Eye%;biAE1;bkfxk6c7v zUfI$qUCta=i{jtDiQ?tuh+T8$<Mu;qGj`9LAaUnL(0!fQTA_n}4+VmvrF~9`N4n38 znk;#-%4^NBWff*S*9m-My}tkCB+HW~nO%o?+t<6ZSgRfs{;BLaA@}(HsXe0NyLo@w zZ(*8KI>G$G>-6v2bD}D0KYqE9zq&20EXp^olV{QfW~VHzy=R>{4rxrEQhoRO!`JB= z`@UplY-ri)HL<%tzv5w|G@tl7wf(o7FSVykdFAA?H_R~H<9U9pe0YWF%q>pl_Z{7q zyMK1=E%>Q?$x{1-{c#PZDU1S6ul~gNym;rYI(f3Hi4rr{{L4G<{am#6ZL4G4rJD!B zu2l+O+^NQCkoi;Sp2USSvO0&)Kh%HR|LC+zL3G-?xBcs5?B?IrySLr{4pZ;GM;q!a z?r8s!QM_sRg{%Fm>yyPlO!OJjEbP~8Dr(YxP<%F}km<Mh!FTo2Rg<hIA1l4La_-!f zF}epX|J?Gq!FZASd46R!u_ezBuGdt^Kb>@STW)AVG9%BOp1TM3&3c%1?p><>s@O9; z4s9*^wE}!gn4Pw`K03QcT=~XciQ<1-dHmMM?C!3$V`EW_u)1@G-@w@AmXP7<e<i;+ zi#vx+@BIFC&6V>O6(<EJCg*=p*d056TbuvYm`&9QQ*2$FC)X;o>s(OkpXYB;^y<*_ znUiym>+gs?pkKY?|4!y(oT7@#G8=Z@Ka(3Ve^uB1k2{M`z4*j%Kx*2IFv*j9yI09^ zh!*^Ky-mmNUQJEfy?*Xj=Y7%+f2;g)zApK74D-Bw)n6{$eY5G&5!c@MPSH&tZpJR% zo4p{vgL^ga#hs`AJ$=kuRrS1m{o11?4%=Bc_r;#ozh6IB`)R{I``a!X3f9iM=OS`< z)8}7He~OEr{2IeF<-v}-M`tX&!qIqRTC;jo{L&Q04Z^wX{oA8LKR?dZYS>qQ-z;rK z!_U=!0zc0?DPG0Yxbvr@sej!{PRHZN?(FGW60=uw`o*ayrXSlnm8DH&tLmwy$6d2` zGTzvou5CQw#TT#XEEU_5zn%;Z{gP90A^psv^L};iS6J44Sf%vl6xW%I6zzKPfXM;L z`~Kgb=Juca<MO(f5AW=sbE}E%KbwSF-ZsuZWj5zuRdT!ile}MZwqExBmoxouR~36_ zhns%CWZ5{`YUexCp1WIqoGxZ9y1OqxG1PXuVzcsMVgKjqtjqeWUq_nPYUSsin{|3W z3+ttiy8avd4Ll`Svp2~~=}yq;e8$xGV(zlrWw$<MP7ut#v+L{K-MRfwzlNF2JNxxz zx#rwiT4%#JZTWWXwYB@Rw)(;CsE2>~PTe_QJ)POHnPJV5-I2fh)$#&2D4ycr;j`RX z9IJoO{PCn)YwxU_W5=;C$K(Cym}i&T&wr@-mvXu~b)R)p*NGs#%~mH_4qRVR9;*J# zsJEj2-lFLj4Zjpwg*`HGllyYIV|M98zo(yXzVP_4!G5Z%+lABVtfvdFZh7X+9)0Y& zY*wCS#btgg^9#k|E*E~5tnv4}#qebD1>M#u;U^W0yOn&E8fwh8Z5HyLoE+~c7vvOG zw{LG)vg@hIQH+PqYfm@JiHNfAS{Kh1J1gY<y$$=8lpH=Pvp|l)=gr59o6m5Z`TZbq zMS1m~_ZvTcPdvKuw+?gR&2q2TlDkT`RsTIayZKk){aY=UUd`F|ChX_cWmbt-%(EVS zIr#CbIiG*pJ^stAo%`OKI<qK!_-&l5!^QK~`>E`At962F*I&ES8+ZTi_N}?g_Er~{ z)RaZXhIL(>@Mwasd!k)J&IGM9PyEf>m_EM@H%PnHc<seIhlhEUpH9l}_qSmE$~19p z*C)x|k41J{XB2do#stjyb7$>0U8W!Fb(!ksdM;d}>ad?fsZWo~@B3%@_rlKtdb?UH z@5Y8*<6CXotDdp%QSj0qi3aAWQKf4($ERO&zBXG;e&XW)3qtg?W|?Wlia%I&r0j3= zt0{|C#!Q(tse9G3Gj^;K8E<)qul#c}hbvTaX7aNINju(Y&;QiKTBvkJwm-zeH0r<( z31+W`b0y2G4hm*-#3+QNnm%3mu(<rlWx2x)1<Bu3Kd$RPHf8zLoyuxbmm|A3oRr}a zwLEj2r{eDt5m#4@6>5_ft@^sTf8Cjkm)k-!eP`A0_qe}VFRJUd#g`&W9c$rJHp(CQ zGh)ScGo!?RtJ^KOyt(*vF8}FmM@6Kz=YCi_SL|i!)wTD+_a1VwTkq1;qPwHso9l9k z|ILaDznhnst!?&K%@F<hYs2j`53?QKF804!RrTkSI7{fE&V8b*LzbD`<jY*oC>tEV z^%IkyUaqa&MEB5)ebuXMSB6T}+F4ob2#^Z?wB@G74GET|I_<7*1=CEX$h6(Rym<O< z3B$Y3Z&)s{>8$i@cbS?m^pAb2`bk~gr8iSUZ-pht-;D7-A(f>6@KW=s%NttW1?^bm za9qG>k@V+#%3r%zg&zCGkr~VMAlOOTXg%BCmkCY+3gNP^lshz@hh1JW%~_pE<UQN* z;EuVW^A+CxUw(0xr}~9*))Tj<Jo{nK{Au4V<yH&3AAW)bNgi2|zS_^Zls-(Dk@ak5 z(DTTBXG{zYZBy0q58DYTJ&-XuR`f>T-26JueN!IYIV$w$W2XiapLfTr|5w-FI99pN zzIxG?7lob5U*D`Ld_Hq-V4j>y;m_WgZ#w_=J^tbB*{wQryVKP3f7~zB+dH+dt-qh? z61i@B#{0URSFX0*NPB#3zwl}HoLz5Es!n57^0{aqla(C&_?Gt6(5#a1xX9Z#SS12? zzTGhKpuo4yo9Aw-Jagua&o*6t^U!70vBsZg*xh_KWx`L9@+mCQ=T2DP{4-BM>FJV$ zDZ4{=UXHX%=AZwmLfGws+s~&v9v%PR`&ysXrA=(_Qb|tke5qaW$3hRub0(?$|Nr8^ z^xHhXKmR>;>wW%IOV4!O^Axetuf27zH@`TgtF85};MB+5gvz*mb|)?M^!66lK4x(5 zImR9O=gZ`4ErMTvpL;khEC1TbCf+rN_awb7h<wgf9lo@Y(`-X`@$QFhX5zx9swPW? zR?7X2o~QA9``sU_Yz_V`Z`4V@;&QuTj-%MZYE`A3)w4f&{ujHF^N(Zo6I=0#55LFp zn_By*%Nouy^4zU$7wNlm+V#Df&lW~ajhR(ivbXl$?Zy=?|8+WI&j}xR*UqZ7;w1Z- zU#D~0S1-wV=l19D|FkP@e;Q}rRKIWb*hVJru(RG}%d7prtrx5QcBs=-J-+5SOUmrt zu6y~<p46sI2z(U$>ftZ0Q1c|=YqK2w?Y`h}H1~-7MyH;e_R9A!&foR=(y^B%O;T%} zP6ljgF$+(#65~vAf13C$;WA6)j6LjE^3NH6zg4xXLwo)jmA<cQf?VIk@720`M@BN@ z^N#B80j~>Gb#Hd-Z5DogZU5P2yc@6F|9fds?drm9tWv=_o*oj9AMetOeNvd=x0yA3 zo$fi~HSHGlS9?Wee>6whpSXJ6YL}SUobpZOo6de~yz=uTPg(l@*=NmMqW@ny9r{*G zc$&uJbN9Di-!}2YId1NCCql13_2Re{{;WbZ<x|YLH_s!vjQ>4-^Yt>v+!Hp|7NUP8 z7*@9T_G!2?h^_TmwplrDU3#B<?SYuY8=cp#7F#~QVJW@l_O`zPORQus<*YV2r&)aD z?Lu)k8TM_HFFn3%VpnwVuHF%=qD8;g7Zz%t_;Y8)oVwBt9<oY3KlN2i{7!%O{=|8) z`niDinxegB|MplET@<Q0$h>~%#oRpquEUM<4U|pZ{k(A~daFOLSfQC)-$sM&KlU{} z7QG-g=h?<(_Io0x@w=>U4qkf5t9r6m@R#3RMf3fF*F@wcN;ysKcG8}-moF+}`dR6F zDQC{4?D;ug!Qs<?{#V8^EAPpCeAZo5%XdR_cI)bWB`d{_2Q6^$J$^pNdsfza8Lb<| z=`~%<bDujLb`Ue%ZrOf#@@<V3=g<3pf3iORo7k&|PhA$sGPe{Td$T83X-UpBrqc6k zUT`}9aBe8B`=#Xn+vHK{+(otjK3RGQaQf{!Ewp5F%TC2VVW}d&ey*S6IDPxJQ!jab zo}Yh$``@$YFESR)HZaih%Mr+`uCKM=om1j_PWFDrJ28%+jUhk1Wp)G<HCYKQ>x>J( zFXZLI5VKMI*mbrJc6If_nB%;>hs|FcKfL%GZ^aG2D+fRGmoOLJR9M}5qGIAJK7s0j z8C5lw*Z%x|q4?>{(*N}@oPXK>o4+&Uz{88PHa@-bIQf={#rlKNt9G&V9B`F9%%vq# zs<tS&fyu>x**Z)4fOAh*K3gf;9CBATHNK?y)D`yV<rcw?RqiEPCC9!tEfe{YsW|mt ztF?vbBI|#4-_5>xuiW=4HhjYBMNAJKYMD63%dK(_oVBs(tmG{XyKNEA_XP1B%gU~r za?So(k%@f0>FuYR)5=8tMIO9zRPUnR>;JF5Ua92abj&*=S#9m!Yy7-JL^f=W^h&ut z#eXM`Y;KQi-Cuo$`+3(B-VI*jr3<GE@9mq}YvikI=wT9{G^23$2b-F_E#ex2H7QIT zmxT>pKMK2dJ8(zQ?T^O(KKdduOZyi%i%iSxlKA-S+dF<OE+OIV3Jv%79(De{_3Phn zM)53WioR0={Qex&TemGQq@c^)#$j8^e$hj77s!`A-MWH*dXZ)Ar>S9e(oH_{@2;8^ zoiSQm5o=W}=CS9{`9_xQ^1f3y2lnoq@#wz4Sm3t^4@c8--Q{gP0^g?pEjYMPLdU4- z&z8+;^*t{4@?RytYL{CmuUnCje|Kwg*`9wtZpu8_cX!EDDI?8h=QY;HemRG}Y|G!R zvZbm__ta_q%dZz7y7O>Z^h{UVuxwqWt?5BE9+Fa@ye9Fsl=nnDzf>E`vcDz2m{~=B zPmQrc&ErJ7J$4&T82&IhVLWZZeW5$ggF0he7tb@-P2UnRZBq2ToSQL$oGa{(YH9D_ z|Lm|+VS-xe#S^B=AC|EyHFG^|KYh?}f`s%16Nxum-R+rX)?1p3^lD1iM*WoX{%Z6- zu*-4zthrOyt}b}K?Z>&wWIx}Y$cwR#f75=<))9P^H8;-l57%!4!?!c5z4uQESiqXL z_Fi@Uzgm6?PE{F~YZgcL+10H%xT^FAk4NnLpLbqoDy=&6e&xd>PrP58ohY?xUV7>N z6Yon--dtev?b*32S60Lrh<(}d^uff^cM4825gu1#U6YLr?b*tz+Ak|@Oiishvt4?R zblZac-G><U7p{FE$I75Rb^Y{fck^re+G;IJp8mMEq_|PjcG8SLS?6w56p98leR*^F z^NLx|PHbWHc>T?{MmR;p>B-v;za<P0R_0EBeJ5<jCZ(8nMYo=9+Gl#Vxn}v>wqqT3 zhxTSAOAF~}o{EeS;gpv?5m{ihSWDM=mbA*oF3J9~m*&6ESGDYzo3OC<e#xQImENfl z4dD(pR|A=jY=2O=PPbof>yBfLEGOn1wAp=rkI>7N76IL|?3(k~0-NtJM(_FLb29AO z*D{u_JeS2vxxs5xc<z4ku)cM-_Gy>u>AN0N=bE`j*{s;iFyZ3%Y1%!49qYDAO)2wp z>_4@8T4ac#pTBr`xnrYQ$00So6(J5z`OfomV%8g6Vq!{A{GM;abD-<<g8jFG4rF`z z6|H31|M%b0H{GVOd-nTXF%a7K>GZeB>38l%mo8@L+GIDuBw1ErLBfVhyZP8O6D68w zrpCI>*u|r**j=s7#Gt(W<t=5#tZ9wia|@qJa0amQNnYk-a$uHl>3b<yXn!C<sN#QG z$)twBGg-<%P6sngUvyrMD?{V=o;QaW#8yP6t-8z@;-{YyWhr&(L`SNu?WwNRh8f%k z&d;BItY21oIlqHoKBI{4k@cpTfemIS?-YK?;Cyg+mE+&@Ob0j5;X3>8Tiw|%nOk<# zSLSqF+qR{5i9$;IRPFk>-UHf7CJT0)TWzx|RQff~UY5|5ozDWgue>tu7iKx}DpK!h z{U=FwK9j({8!5+bc&}#Vm|)MFx9G_Pmbuw?gqZ)HToN|%#zos}_vd>g1?m0yZ)T$$ zGWW^1OD?MlZagbs+@JcWchk(GYR3N@)BN|oGj~|d&vW&jr?iB}?qKT{i$5QhA3WB6 z%WJ>fT`Tq6ndV8hd(MCR@ow+5ZPwq<M*lK>{-W>F_A1>g31X8Pukf8Kxn<j5WAtkE z0TCC0lch!sN5$OK8+{5>>mOIV`PS~{aM3DthfvfeCjp=Q$L+WC*=zHijhm-mknH+Z z@HVRB>md*4#LUpue|IlTWnxO%YOr>}wyxJV+dm(_Gh?EUIYYy*HukNa4Pw4p9)%LA z%ZgVVI8YL_sHA^OQ|=e>xt%62GgjFMe5sU-c$U!k>4eLy2<4h1Qsw_!L;8g{*8jY~ zr=dQJ*=|bz7E{+5dlfh)EZAo?duCa@zr_R>*`V`tHvBzt)aJH0?~&z;Hq>tYax#|7 zTAhU>PBMsXiryLNrmrboYkEJO6}FwcHTh6&&;#M!<@0CQE7T+%+G;!btZ?tAwg0z9 z&&cAvQOc12N!OTn$~zSy>!}vEcYfb*`#9xk&Abb0{v!Er(^GB-m#jGcZMU-;i|MDi z5C3TPc5atymWp}kVYa4C?Z7$jqxXI~Ju}l-p6h$A{CfA%_DRpDTmHVLDiW%`<CaUy zGtJGnZ*Sh3;B{=((x8Jr9tt07`a%O<H_x~_HDktt|3xx3(bG4-cM2{1z>%Mr=91s@ zaZa$<RLLtZD_%_5WAtNgE92?X4JlLh-{N}qgICb@%L~<?EDpx<AuptpBFY3^r%zn$ zvf!Ig%-pq)s~wJ*yqn1vIrUVl?UZnjIieeGUEQ+uGuQ4PVy3B6c1HZ$7$1Lf*Nvt; zTesET2fogmKOry3=HpVm4?;&6&hDu6P|+@tj5OT(b;jFm_WK`2%#V<$IrT(1-i3SB z>-kZ4l-|62r5JEf|AYM2^=H2M-uroBe)lGyb4<4aq}S$Ihrij_x2(=Deew2w?O=g9 z8WRligYvwp{~XC$w|n`S`;W8~o>)JKe)Rlp1zX(Che>X{cNW?%iJNsS$jE0#ewp!` zQ!+0Me4o2N2{2gJs`jVnYo~8t`2)#6RSqU1xA;#i2%aAPFukokeXq`e%QG&Bt~m1I z!sOQmPZob&=lr_1cEa=KYvwVVt*0mK?9AbMCad(x?ToaZ+BEz8{SP0BYJJ*N@@>M- zmZ(YdH^m7_%rUTZ5Ba{e??K&!SNSJiWVcKapJJb=5OyZ`*y*2T(Z4h{PJPxnLtg7c z*}jYS#M5WoyH<DjW&UHwy&Ye-%Ds-4nPhG=!+pbpKOQILS4N*R@>%uH%b;C->(ryJ zrs<2X-YmY=!ntj`me#VR3@g1&*1z{DI-y^$^D!m<%$v=et3BCbG;e<rYAAdXw0pv0 zj^}SIp8WcIuUK8=_Od1RC9A{3cLz0<$Lr1)dcVBm!_w)&nvIXYGhPocFbVt+kvwss z!2eU4Q{D1aRn5y)?AL72_R)wtH=SdBzW1v=3n$v#R6CxVY@XD8(L-__&x9>k*!D(= z8tqk=oW9_4(wDoe8((i*kn#U`k@m8AYw|j`2S-eMm&JS7ELm0b)8TzrdepmoFLBz3 zrFh)mkv2hME7xwTf{7D_mxf2JoZOQ6pG7@*mf@QJhxb2uu<HNINhzXld2Hu@KW6s3 zZB{*FUHF5Cr%d%M+P?}EZ-2eTtSI-8mY&X$%X3$YP1pC>zWkI=r-EU`fs(I{CS^ro zq0D#YE%mYx&3n#xy>a`Yl^pEmPj2ZsEf8=kkgGq*WL4XB&6e-|2B)ZV-1cVCZEFv1 zk-7VB;U<@;t%r{97Pzo{x!t<YQa-1ZFJI(*e)(U&Z?wVchaL_IiXC&=U%uj;-D1T0 z`{31AldiITky!R5<l(I+vs+56*41S{uAS?A>((2WyA5{?`D%_|KfLSLo10nL{7o|! z#x|b${w_oD#`|3^$3M=Q6D@6P()mK)nyI+3_Vw=fbsO?h(#k@Xm}uY8y6|Ja{O&39 z#km)qv)LFhm#6pY-0RhB@88&!PI`9i(%0aH6Msyax7pouP1(GYm3k@hsVoOKM}}<S ztNr=*_R>oeCfsaqd_3Xig$pJ-UN6?zQ8VM<h3o!)^K5>4eW`Za>gnnGVrQ}5a=&@i zr@Q|zQ{(pg8|7AeS7x?N_PxYpS<cpui<O7J+{w6qu4l$4E?35|Gbb1NG(A$!cy%Jk zWS;r{h>e-SKVQtQGu`|0s@iGI1@nRe_q|*nRmsZzbpdDNjGR5e@%7)e9oKCAnDU_R zw7lz?3-a1p?~nBN9>2d*r+=TNNtLeW-+W;i$BrFW8Iv|8<`)E??wY9l`k1fp^|iV6 zu`)CNMFnqn4gdW7R)e|f+ic(C$9%8LMjBocy0fMHXuz>slj5g^i7~&qJk|8sv&YBT zLXw5uKdXuDVsnT(5IuLsk&eAGCCkzbxBJvFDo>A$u<5ERdgJ_sec_8ktiGqe3%|eF zFD9nA>GX`C%6Ca;XD&G1e9(U140aao3?nB)GlfKMZ@KJ$Pu&d!K0N)u?Z}afTN7q} z|B+i~EEW9zQqapCg^y>St!wTqb!wY-nY%n@@2x2LHSwBn3m>^;&NP~{`$*w8tqKwM z6DuY!TH`14{Mnk?xkuMlJ@Z|xpcj{5bzkz=Yw!JicR#<X`}ryE{T@ww#m4uIg<lu( zY~zZwOWN2k?s~$s^AJnuO*`kc3?5EJbNHon87d^_Ph>f(R3`6M?<o);w(fgF;1%bH z%&grF_tkUWPpL@RQ@_LR+|PU6o5LRYDu^*u$O=@g(wNlLpK`IQTG2UF>3zzC&ZV3+ z;t~ucbMvRNHK+0E|MT+LD*fmEvMbf;@~^pAmTct`+SB#vwUP+iheuJJ2Fi<e-L28_ z?!BPaX|2t5`}OYGlON9&a=m#~JL+{+)TBqdE2bB13;h1Y>0!y)MAwgxOLbGSH(EAL z;@ZeJLGh5@n-i>|6}MKb$h0(5P3-?~zAv;#Vnb8z({6ze0vEp?lJ&Szr!mJZ_u0oO zN6#ON_T(^R^z&?0`m;1_VR*Udvl+>zQHHLG$^J64UjG){u=d{S2S#_bGbf+kTW#hW z#L8%tZgAiIM&rkYPs+J}u<VNcy=(8U!``nwjZf#Usr%BCc(_Y;i{sahHR9G5dH+9s zF%kLx{^zpe(^_lxHzXR^H<!JwUjHq1w(6ek8q1C<scinl^yc-SKQH7p4=iTdVEr!e zgTDi}mY0%T>3P2`2j1(j>hD^4fBLj$q3CtuC2f%wuM|}GN3Dona<edQYe({3CndL+ zLY{95e3MSjWli4|<#=wpkTrY7$<43WxLq&o`Mu=u1RMM8&DDEeranAZe9=!bYLUps zwfcFf6K7t^<PhS>x}?i*ziYqrbiOyfGcq!G_CHHoblIWdjO2?Lqxb@8`wzO&3&IvS z+~s!e|M<DMSD)F@hm}j@%6}Qwbsg22@2|UylpAMVZqxD&6Z-YXv3=7yv1?bwo`jfw z@D?<2n&!E@Iz&YC_Lh^2BUQc`T&kCo-l@fQb4x9UlX}I<M|WKeT@5{^?)~yKP5tzb zf|k>-nS$59a1iY;)O(QnwEw0)d*1o=qJbZ;mYg}NZ7jEOg3Y~;JqOS2;$2mFPBCJU z>-?5vi;Gu^wT@kRWTYXuV)kE=FRLb7z1cEB$a&S#Xn})MbU*A5dlkL0*iq>_%lFFe z7pFT~*_hYx$WHH1eHbb4@$uj7$;A`yDNQtIIK2Auy@DQ-_j}9pGMC>!t7B2R_^yiA z`z9-=9S>H|)_7r2Dx53)tZ66L>-F5WWv-bQ4=#!DPwyyW^qg<a@WCcpe%{NcFLevm zKfh06WT-Cw`BrR?t?}MPQy<;eUv&5Vq@OQ%7zF;m-~V)eh|v0}hN;;phL6J5r)+d8 zI=m!8$#2S<FI?gw6)o*QynE8pQckfhE#KMf5%yBxq39X)#2-Je@&CP46gtuMtyHO> zr^%bo&C6`r&!>1kE|*o$YdG$-dy+5*ujRVwYJU!j-V2(!=GyZ7rT&vb^t4$UwNoyo zL@w{Q+33GWKYa`HiRBBXS6$LK&r5t|_%QhWs#p96e?Kx0Pf>Z4?Ud9m=BlpEwdZzO z|LgwUJ@;<)p838kEB2wAuGcdOA1(Ip?-%+tUorRYF%TAFQS$h_XM_FK=xgUEbuu~L zIX`{=nXuJU`uc9aKN{{@zH3e6){3VY&DFvsb+(3`yq~hJ&l5_Yv-F(P-{c!7L;fFT zdLL1%-Piwj5vyzOMrFTB%fsh9H0Gp9oRvQ1!&UTUJO9;gbCa_*4>o36#BaYLc#ffC zcY}O$+FpJy)wP;`T&28zG9)oNs8)SA|3aOqC~(T9A1}FuWwTYooA|!i#+UT_OZ<Hx z=#=<pdQZ0rTQ8$s?O%=nmp>cZYi`LrcwFS%{x)ve!R7fDA8R(u@w~c7UEl16v-yQh z{}M$*To><d%nJImV(GWzF;@>9D9xx25#0Iqp>NE(X!ng<VlMsqrv0aS>-PT7!Vc#O zs(*WYWBOC*xFFU0C=-)Vp1vAGc6{}2>zI^<RhQr7x1V8TP4@m880zf&&)hmu-#NUv ziuJ!+^6UNG^XmE8zr259eSfj0N+_ei*DK#&FtlyHnije$&*zz_-`quV%Y!6e@;%5e z)8Ec(HTjqHhtF24zn+`=Y{R!V3wKn%>iKc&r!H5E{G|JQXN_78#&U1_d;6mA+GZE| zk8dBuFP!`2*UF&1{dvVZ7SB*{kZOD?GPShl6r0jjt&{*Jm21KBG7CQ3y)TvjmtFb0 zZTw`<t@2*q_!p|Y5^;A)3(Noi`diyn&Me7Sp)>wzRU7Yh**>4?x{Yg}lWya-RR=$Z zZ?*CJyj_z)<Hll(6-!w5?EUI^mbtFEX~s+A`%&i~>(~j&rH3i%e=%tP!}hLLIjB+O zQGLzo1mP<OZ=5cB-ugSb?ZVvY+e6ISlp<83_jYb%<X^h%f#=>5&Nbeb7Hsi}TByJB zt4im_yGQh9=iFZ+;^JepY}M;m&yT!(x=~y5__C&DHjj*stQJ1dHUIOCx%VeuQ~NKr zobkv1-HzGMb@zW>d9jvT;D5Z~h5z|xa>-6Vr%rnEpU17~oe`_*hI-8t!P@8kr?7|_ zHcU70VAM=&Q+M6@cX7i~*{<hX<bH0AEm_N6^ZIM+_Fa)q7vG3KSfZ^VRsO4F-W8R2 zhYv@rxFha%?6YSO+qU=}H{WBOJh2wm7dm^F&akz+JIP4P|MHA9PRkhYmWMr7?$*_B zT%T^u5qnp%q3gQG+<^9ko%3FP`xH>vn)5j9gwZ|EdqH*S(=K&z-O-AVDOiwVv$%?3 z(Ul&Sn>U`$SakBz;d7Si1}5EiZY+`$yH*`5aWZ4g^;OlUe6}0h4{Ug9<NdPqdm|6? zEC<Qdnar;$d)EiP)7WtMT<iD1rqoM13s`IVgJ&jcdVl`G@YnlYsYvSkjoyV1=B>TG zW0%Y~i}(!Z;!T&0w;CLAIx4o}Pi)kK%=gA0HZ1hA>n}BQSvU7{r0Q;+nL7gXZ3X2D zR_w7om89D)Q}SW`Wv5jcv)G?|PGC5$Y3EmwdB`Svw!nH*-A-fu>NJaBu9b6>lO4Tp z{+W`Mnfkh{&+eHML-wgW?-eq~vd;_s^=97w^G%f4w+o$h+iHtnI|xQCi=Oe6(OIxE z%4^w_nIhAlup|_0xW3>X!(XX=d1ob;zIy3wnGvk^&B%7DHbatb+Nph(mW%iDePe&y zU7Kr>_@mZA^P<SiT|Jh)-j_BX+OkZdxa|5P2G!C+ak*a?b-DKKVCq+udzRqTFim9R zoY;>Ge(zdll@TxeY1{8x4AC|^OLTaSB-HwNWIX>mUwq-L<Yt)@L52pG(y|-AFE5(l z`fh2`=DQx*zh6uY5{#<c;k$5a&orT$+7#!8RG!PV|4U`wMVf84$a31)tSS2O^Q}aM zf0pVm`!xiUU(1|3T9>1BP;4m^>+XM#<$G_hJz*_-`h&ki@V>=5e(4KMTP~F49P*pC zAp3{SuOl~hxL)C^m(p6GzJ>X3lplLFN5JyEA;#|$1ZFe5PSEGh)nA!5JLu^Nv%>*; zchX*-X1*=6_h-WF<+}Cx+;gTc%bob`(}is<*FK%v*3<au=r*m%rg_z!+pMy0pXRw9 zdOJ?>)ztM>Q$zCiu*uJ^$xF%+DBQEV?#Z-@iQL<+efN0z?(Fq=gXD9wI{##xKdRZh z+E()Gyw5(R<_~+PZ~Ru#ds;^C#P{E|_J@v4jGtenuyhyS*%YzGONC^<&t_=2d?X_2 z=n?Vr79tEq&%+-tS$HGIYI4c(kG-ca3aUE4j9uR5ajyL6J+5>Ula3uF<#!xRH~M>Y z&s}qzVT0I}$9^oDmX_~7-RWN;v1m!&<Hnc9&9-qxJ2+2CsIo4T5L~w*w&s+)%*?{# ziGS@EKi;Py<gIh#=*c}(#dYpam=+l|Vc*B(6t|CQS5{8>@zMUu)ftoiUXQ=$dYhkL zut32n-~an7J5Rw0i|;<X67x%bT8i&>Bil?CL5n9W3Wr+$iM?Ha%t<SE&F4P~J&#n* zep<BV)v~w066ZWiz5DI)o_EjxE-<iQ>U2upU}4kfp%lEr#H#t{bk)D#f640g>kD)p z5nAc9E@0IaskMIj2D8qHWvAV1`gBv)Z~E-r?aQZc?_WRPp25kWDapby$mDR*9tE#W zi?VhlMs0gsRVUz9I4P|%Fs$@)*<S;{&zt7y-~L)wZxjFi{P*wejv9}_u5y$(>N)GF zYvfhm+g}e`oISnk?eWUH=YRh-dG749^UAg3B3%qKb;D-geOR*7Hg3K=gQA4v#)FSp zJTLN`{`iAwp@+`IQ%|^-dab?q>I>WAlQ|o2z2RGa`t8SGn7%rhRJ_AxpM!>w_mWM5 ztDIH_WpA<CdoaT&dX3rc!!L`9zkhJ~T2;SqKgs^dXAo4IQm8o9?AlLo5bK=p-n44= zw%6^2v!<8c?*F`N{`cRR=h|l!tz6r$si%1L&ZS$|?p?fj_3q`{*ZCC=wHWCwxpd6x zJpUmLze_s$r&i_NS|@)jGwxch{khk5_xQP*l_zMJuyr36?ocsm^;&E^L&vQB^keQ8 zrHw9HleMR;D(EQPmUs5ne!Xk&*8So)^Uu_dzI}{MI(O5}ZD-r3U)w5~5dYfqb85Ha z+A>$)gMtbVC5kGQo;Gd!wl(X9!?NpNEBAEOomr>B=5_tSP2m%L@$-KF6<xL}KK(sU zcwN%}^nEpt6xSG<zdiT)*$Qjs(o=VLIotX?ZDkHfe$jYkM_fjaKz^tGGTvV^i!B1~ z$jM7>Si9z@Z9JR2{3I49o6k)P_9hCiIc~sjb90v3;mm{${-Oe>CrZBlGT~P1ye@<H z7oHrdh~6k#UVTEadZNI~n6k%PuX230++$YJIOp4^Bd<dAL<|&O-w+KdS<AT8!1~@R zexKh9FUNiL3hdXk%Srd&@$zk2fkW7opOdD3|8&~-*!nQjT=~PvAMSX$T$9;#H1ndh z%7TQ~AI^&yexJ^k+w_j9-R1J6N11McF>lnePwdz<>yGNyGYT1|i!EMUt}^157TfP+ z5wB3#81mM#oi|&o#<JRTb;gaNmyVr<+rJyJOSI%&G5ddbfq75g@|0`mmLC0ly=VH? zSLeI#Woo|v@ssD!_J9B0G*|6pUcF4_%4_-Po1f0!tPpZp=YH*IV4K2Y+pTvEJ3m;7 z#eV8$vN!+HC!bflwkOf}!PA{v*e~4-xSanbT6tIL^Y!8awg2xh9b_%OWbSHiD!f55 zV<ykfK0EOzg^RhSXy4mqpnmWE@3>9V86PijIw5#uX2F^8^?USEO1;b6<}S&~c6D;e zoq2D8zDw+kV$I9Cq7Gl!f?O;o8ptoW%-tXP{<q6Tk%qcoZ{4S9>uzT1RkD0z=y+tk zXKAmv?A*i`bB^oQ8~;|_yTI!mo1NRv>xuiOujzhXw)X1wM~z=DIv2Zszw<*^$hu+M z&P@SdTiz;8Kjk}pWlfUL=^ah~x~ire@!qG&#r!k*$M3@i8;j3B{c*<i;Loc}A*l|_ z1>WY^=6KJYeLnw{%DLa-)2*H?TYRPSMf^3(4^L!QJStl$e=AZp`O?wa{-fuz-e!rj zb1qWmmS()TM!+|kYk@`R!;G9g-GX_y*6&%%b0O)2ecGOO`Ty?S_BQ_tt-ZD79fD)z zqjlE5h;!#_FI|~l8W1!k(B`4of=4M)t6a8htH?Wg;>L{7)4EoSb2R3*Nu>%NQ9f!V zxl-bkuzF_6U#|n{`6q-jzhvLOp2<CXiSXA6cfKXxQT=r;IBAQX_QKdr%M<QKTO9X} z4BYUlwtM;?yZiNLtQYG4fAq7xt8C&&<CPp*-gOTiKFC(>7oEX$%xLeVTSu=>SfqS( zf6V^(IZvNm-Qb+~<c-!@J;U3bvKc->{ie-FBBuyWF0kHIy3tQr<?YHY@hOS?s}%%q zc&~b7V!2~Ny!2Y<eXYzD$A5n<t$Kg-zMrOMY~_CKuKkbBv{gNkDmvIW@k?T^BumDY zQ+_*hJJ`+?ew=h;s=~i!q0VQI>`bP3U*b39Q=ZMtUc&v+$Etb$(!f9ZA<7PgS6!|i zdLwS{zisLT=J(k;)jKV@cFq^rY0u#reEZSPiNy(evtG^o#`*P1%$+Hl4mvHmbo<dP zrZt_1e79{}!|PL?@^+e40?&I(wKS3A({gxQ?IufF@OkV%D}PGF-bdk=$GlH#8IH5x zc4lc+&9GduZynFP_&d5XwG+9yk0d@&7QV>H_FKCAe&XgLRSgOD_L$Db9-~Jm&gSvE z@JG8#&+j|=Kx4zZtez^p<i9KKZ<^Eg?4s~|HJuW%>Z#r5dYXcomn>3FzI)h8`$J>Q z$KU1)^*NdSyse$DZ+KDn;7{;%IZMT(yC*MH+w^FDyy%x7*N#+se|0E4R<P*u&q?JS ze;%*#*LnQ^#KmKp&xIAAvmf5Dt^42a3sL|7cD<L4RO|NQ{;*ak^v{F&_HHY$gv_1z zTK&Am8W!Pcg#xzU7w+rSws_{UcfUzOxbMtrACtpJggseS$}-u9F5Gn|<I=^t37n_z zTz@CGbRu&YSIBxdPWNe3G-h!>F16q+@(Ax+dfT*Yt;hA_{^=Xb4#&^kk`Qv$^p*Da z+~ymh8t0<<A_9FQu0@7@Vp`!9H9P6=bKbd=i!~2@EC1uqb$e+*#5cve&pqmLZe82F z!2g>`{L|V$cI7u#U!1zfXTHsJ)BWOR9Lpb0Iv#fE^$k`%cJGH%^vZG!uFn&^x;3`^ zmmE)5w(3mtAD?%9J+AUzF00hDK6|NBYSvfjzt^+>YnlIC`E8@iNzGd;@7%MQxAf}z zKU4oMf52k4^1r!2$vclJk%w4Y+LnF(C-1v7c>|}n-0Bw(J^bIOd|SVKyZ)tFa~mJ~ ztLbdb*ZX}!->AMY;=|^*`TQsDr+oai(ep~`v;A{UEf!C+pZlXq!|eF>@YnX|{uN#A z%3}7o^Z)d>)3^T!$e)O=Yq{t2I+(dvL9g2G;GK8B50oes7}(C0{k(mmP<rzu#+eh+ zEgSw!{A94aw6ZJr&$(sqmR02|1aO8hO?7#>z-Xa+ZDrqEjo)5!Z#k69tY)jRZP0(R zHf{OzA6CvnOL-Lvw->jCRCS;Kn{Ao*g8Aoc-j0rQCM;6f+m7#(JbC8KnHU*H)f-XS zr|&J^w88Mj#3i>SliFq|rgdm4F-&D()sp}I`KM-}c>2tcOlFTeZ}%v526<^NopLQI zd+pY1$0U+_439A|IG8r`Ffa%T3JP+kuW)$ev(;ZfFz}+%0Y{;ujV#8-o3~zz%Fex6 pKBdm(OX0&CdQaUGL@u@mmvk)nxVp1o`)8h&U+(>>zr4FX8~}q1ax4G< diff --git a/elgg_clean/bower_components/font-awesome/less/animated.less b/elgg_clean/bower_components/font-awesome/less/animated.less deleted file mode 100644 index 66ad52a5..00000000 --- a/elgg_clean/bower_components/font-awesome/less/animated.less +++ /dev/null @@ -1,34 +0,0 @@ -// Animated Icons -// -------------------------- - -.@{fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.@{fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/elgg_clean/bower_components/font-awesome/less/bordered-pulled.less b/elgg_clean/bower_components/font-awesome/less/bordered-pulled.less deleted file mode 100644 index f1c8ad75..00000000 --- a/elgg_clean/bower_components/font-awesome/less/bordered-pulled.less +++ /dev/null @@ -1,25 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.@{fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em @fa-border-color; - border-radius: .1em; -} - -.@{fa-css-prefix}-pull-left { float: left; } -.@{fa-css-prefix}-pull-right { float: right; } - -.@{fa-css-prefix} { - &.@{fa-css-prefix}-pull-left { margin-right: .3em; } - &.@{fa-css-prefix}-pull-right { margin-left: .3em; } -} - -/* Deprecated as of 4.4.0 */ -.pull-right { float: right; } -.pull-left { float: left; } - -.@{fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/elgg_clean/bower_components/font-awesome/less/core.less b/elgg_clean/bower_components/font-awesome/less/core.less deleted file mode 100644 index c577ac84..00000000 --- a/elgg_clean/bower_components/font-awesome/less/core.less +++ /dev/null @@ -1,12 +0,0 @@ -// Base Class Definition -// ------------------------- - -.@{fa-css-prefix} { - display: inline-block; - font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} diff --git a/elgg_clean/bower_components/font-awesome/less/fixed-width.less b/elgg_clean/bower_components/font-awesome/less/fixed-width.less deleted file mode 100644 index 110289f2..00000000 --- a/elgg_clean/bower_components/font-awesome/less/fixed-width.less +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.@{fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/elgg_clean/bower_components/font-awesome/less/font-awesome.less b/elgg_clean/bower_components/font-awesome/less/font-awesome.less deleted file mode 100644 index e3f89c8f..00000000 --- a/elgg_clean/bower_components/font-awesome/less/font-awesome.less +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables.less"; -@import "mixins.less"; -@import "path.less"; -@import "core.less"; -@import "larger.less"; -@import "fixed-width.less"; -@import "list.less"; -@import "bordered-pulled.less"; -@import "animated.less"; -@import "rotated-flipped.less"; -@import "stacked.less"; -@import "icons.less"; diff --git a/elgg_clean/bower_components/font-awesome/less/icons.less b/elgg_clean/bower_components/font-awesome/less/icons.less deleted file mode 100644 index 6ebe9669..00000000 --- a/elgg_clean/bower_components/font-awesome/less/icons.less +++ /dev/null @@ -1,677 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } -.@{fa-css-prefix}-music:before { content: @fa-var-music; } -.@{fa-css-prefix}-search:before { content: @fa-var-search; } -.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } -.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } -.@{fa-css-prefix}-star:before { content: @fa-var-star; } -.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } -.@{fa-css-prefix}-user:before { content: @fa-var-user; } -.@{fa-css-prefix}-film:before { content: @fa-var-film; } -.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } -.@{fa-css-prefix}-th:before { content: @fa-var-th; } -.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } -.@{fa-css-prefix}-check:before { content: @fa-var-check; } -.@{fa-css-prefix}-remove:before, -.@{fa-css-prefix}-close:before, -.@{fa-css-prefix}-times:before { content: @fa-var-times; } -.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } -.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } -.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } -.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } -.@{fa-css-prefix}-gear:before, -.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } -.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } -.@{fa-css-prefix}-home:before { content: @fa-var-home; } -.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } -.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } -.@{fa-css-prefix}-road:before { content: @fa-var-road; } -.@{fa-css-prefix}-download:before { content: @fa-var-download; } -.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } -.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } -.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } -.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } -.@{fa-css-prefix}-rotate-right:before, -.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } -.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } -.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } -.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } -.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } -.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } -.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } -.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } -.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } -.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } -.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } -.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } -.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } -.@{fa-css-prefix}-book:before { content: @fa-var-book; } -.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } -.@{fa-css-prefix}-print:before { content: @fa-var-print; } -.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } -.@{fa-css-prefix}-font:before { content: @fa-var-font; } -.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } -.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } -.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } -.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } -.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } -.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } -.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } -.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } -.@{fa-css-prefix}-list:before { content: @fa-var-list; } -.@{fa-css-prefix}-dedent:before, -.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } -.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } -.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } -.@{fa-css-prefix}-photo:before, -.@{fa-css-prefix}-image:before, -.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } -.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } -.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } -.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } -.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } -.@{fa-css-prefix}-edit:before, -.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } -.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } -.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } -.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } -.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } -.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } -.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } -.@{fa-css-prefix}-play:before { content: @fa-var-play; } -.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } -.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } -.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } -.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } -.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } -.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } -.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } -.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } -.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } -.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } -.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } -.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } -.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } -.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } -.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } -.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } -.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } -.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } -.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } -.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } -.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } -.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } -.@{fa-css-prefix}-mail-forward:before, -.@{fa-css-prefix}-share:before { content: @fa-var-share; } -.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } -.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } -.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } -.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } -.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } -.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } -.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } -.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } -.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } -.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } -.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } -.@{fa-css-prefix}-warning:before, -.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } -.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } -.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } -.@{fa-css-prefix}-random:before { content: @fa-var-random; } -.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } -.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } -.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } -.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } -.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } -.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } -.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } -.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } -.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } -.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } -.@{fa-css-prefix}-bar-chart-o:before, -.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } -.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } -.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } -.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } -.@{fa-css-prefix}-key:before { content: @fa-var-key; } -.@{fa-css-prefix}-gears:before, -.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } -.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } -.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } -.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } -.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } -.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } -.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } -.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } -.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } -.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } -.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } -.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } -.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } -.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } -.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } -.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } -.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } -.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } -.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } -.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } -.@{fa-css-prefix}-facebook-f:before, -.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } -.@{fa-css-prefix}-github:before { content: @fa-var-github; } -.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } -.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } -.@{fa-css-prefix}-feed:before, -.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } -.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } -.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } -.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } -.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } -.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } -.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } -.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } -.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } -.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } -.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } -.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } -.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } -.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } -.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } -.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } -.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } -.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } -.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } -.@{fa-css-prefix}-group:before, -.@{fa-css-prefix}-users:before { content: @fa-var-users; } -.@{fa-css-prefix}-chain:before, -.@{fa-css-prefix}-link:before { content: @fa-var-link; } -.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } -.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } -.@{fa-css-prefix}-cut:before, -.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } -.@{fa-css-prefix}-copy:before, -.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } -.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } -.@{fa-css-prefix}-save:before, -.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } -.@{fa-css-prefix}-square:before { content: @fa-var-square; } -.@{fa-css-prefix}-navicon:before, -.@{fa-css-prefix}-reorder:before, -.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } -.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } -.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } -.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } -.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } -.@{fa-css-prefix}-table:before { content: @fa-var-table; } -.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } -.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } -.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } -.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } -.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } -.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } -.@{fa-css-prefix}-money:before { content: @fa-var-money; } -.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } -.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } -.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } -.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } -.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } -.@{fa-css-prefix}-unsorted:before, -.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } -.@{fa-css-prefix}-sort-down:before, -.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } -.@{fa-css-prefix}-sort-up:before, -.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } -.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } -.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } -.@{fa-css-prefix}-rotate-left:before, -.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } -.@{fa-css-prefix}-legal:before, -.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } -.@{fa-css-prefix}-dashboard:before, -.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } -.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } -.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } -.@{fa-css-prefix}-flash:before, -.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } -.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } -.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } -.@{fa-css-prefix}-paste:before, -.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } -.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } -.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } -.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } -.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } -.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } -.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } -.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } -.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } -.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } -.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } -.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } -.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } -.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } -.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } -.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } -.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } -.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } -.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } -.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } -.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } -.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } -.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } -.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } -.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } -.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } -.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } -.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } -.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } -.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } -.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } -.@{fa-css-prefix}-mobile-phone:before, -.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } -.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } -.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } -.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } -.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } -.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } -.@{fa-css-prefix}-mail-reply:before, -.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } -.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } -.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } -.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } -.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } -.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } -.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } -.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } -.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } -.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } -.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } -.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } -.@{fa-css-prefix}-code:before { content: @fa-var-code; } -.@{fa-css-prefix}-mail-reply-all:before, -.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } -.@{fa-css-prefix}-star-half-empty:before, -.@{fa-css-prefix}-star-half-full:before, -.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } -.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } -.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } -.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } -.@{fa-css-prefix}-unlink:before, -.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } -.@{fa-css-prefix}-question:before { content: @fa-var-question; } -.@{fa-css-prefix}-info:before { content: @fa-var-info; } -.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } -.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } -.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } -.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } -.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } -.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } -.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } -.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } -.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } -.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } -.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } -.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } -.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } -.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } -.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } -.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } -.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } -.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } -.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } -.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } -.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } -.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } -.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } -.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } -.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } -.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } -.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } -.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } -.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } -.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } -.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } -.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } -.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } -.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } -.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } -.@{fa-css-prefix}-toggle-down:before, -.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } -.@{fa-css-prefix}-toggle-up:before, -.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } -.@{fa-css-prefix}-toggle-right:before, -.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } -.@{fa-css-prefix}-euro:before, -.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } -.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } -.@{fa-css-prefix}-dollar:before, -.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } -.@{fa-css-prefix}-rupee:before, -.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } -.@{fa-css-prefix}-cny:before, -.@{fa-css-prefix}-rmb:before, -.@{fa-css-prefix}-yen:before, -.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } -.@{fa-css-prefix}-ruble:before, -.@{fa-css-prefix}-rouble:before, -.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } -.@{fa-css-prefix}-won:before, -.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } -.@{fa-css-prefix}-bitcoin:before, -.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } -.@{fa-css-prefix}-file:before { content: @fa-var-file; } -.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } -.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } -.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } -.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } -.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } -.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } -.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } -.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } -.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } -.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } -.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } -.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } -.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } -.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } -.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } -.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } -.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } -.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } -.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } -.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } -.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } -.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } -.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } -.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } -.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } -.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } -.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } -.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } -.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } -.@{fa-css-prefix}-android:before { content: @fa-var-android; } -.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } -.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } -.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } -.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } -.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } -.@{fa-css-prefix}-female:before { content: @fa-var-female; } -.@{fa-css-prefix}-male:before { content: @fa-var-male; } -.@{fa-css-prefix}-gittip:before, -.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } -.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } -.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } -.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } -.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } -.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } -.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } -.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } -.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } -.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } -.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } -.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } -.@{fa-css-prefix}-toggle-left:before, -.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } -.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } -.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } -.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } -.@{fa-css-prefix}-turkish-lira:before, -.@{fa-css-prefix}-try:before { content: @fa-var-try; } -.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } -.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } -.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } -.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } -.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } -.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } -.@{fa-css-prefix}-institution:before, -.@{fa-css-prefix}-bank:before, -.@{fa-css-prefix}-university:before { content: @fa-var-university; } -.@{fa-css-prefix}-mortar-board:before, -.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } -.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } -.@{fa-css-prefix}-google:before { content: @fa-var-google; } -.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } -.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } -.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } -.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } -.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } -.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } -.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } -.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } -.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } -.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } -.@{fa-css-prefix}-language:before { content: @fa-var-language; } -.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } -.@{fa-css-prefix}-building:before { content: @fa-var-building; } -.@{fa-css-prefix}-child:before { content: @fa-var-child; } -.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } -.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } -.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } -.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } -.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } -.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } -.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } -.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } -.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } -.@{fa-css-prefix}-automobile:before, -.@{fa-css-prefix}-car:before { content: @fa-var-car; } -.@{fa-css-prefix}-cab:before, -.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } -.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } -.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } -.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } -.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } -.@{fa-css-prefix}-database:before { content: @fa-var-database; } -.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } -.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } -.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } -.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } -.@{fa-css-prefix}-file-photo-o:before, -.@{fa-css-prefix}-file-picture-o:before, -.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } -.@{fa-css-prefix}-file-zip-o:before, -.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } -.@{fa-css-prefix}-file-sound-o:before, -.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } -.@{fa-css-prefix}-file-movie-o:before, -.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } -.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } -.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } -.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } -.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } -.@{fa-css-prefix}-life-bouy:before, -.@{fa-css-prefix}-life-buoy:before, -.@{fa-css-prefix}-life-saver:before, -.@{fa-css-prefix}-support:before, -.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } -.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } -.@{fa-css-prefix}-ra:before, -.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } -.@{fa-css-prefix}-ge:before, -.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } -.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } -.@{fa-css-prefix}-git:before { content: @fa-var-git; } -.@{fa-css-prefix}-y-combinator-square:before, -.@{fa-css-prefix}-yc-square:before, -.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } -.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } -.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } -.@{fa-css-prefix}-wechat:before, -.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } -.@{fa-css-prefix}-send:before, -.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } -.@{fa-css-prefix}-send-o:before, -.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } -.@{fa-css-prefix}-history:before { content: @fa-var-history; } -.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } -.@{fa-css-prefix}-header:before { content: @fa-var-header; } -.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } -.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } -.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } -.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } -.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } -.@{fa-css-prefix}-soccer-ball-o:before, -.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } -.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } -.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } -.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } -.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } -.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } -.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } -.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } -.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } -.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } -.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } -.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } -.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } -.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } -.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } -.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } -.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } -.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } -.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } -.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } -.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } -.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } -.@{fa-css-prefix}-at:before { content: @fa-var-at; } -.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } -.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } -.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } -.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } -.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } -.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } -.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } -.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } -.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } -.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } -.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } -.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } -.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } -.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } -.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } -.@{fa-css-prefix}-shekel:before, -.@{fa-css-prefix}-sheqel:before, -.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } -.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } -.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } -.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } -.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } -.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } -.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } -.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } -.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } -.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } -.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } -.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } -.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } -.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; } -.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } -.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } -.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } -.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } -.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } -.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } -.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } -.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } -.@{fa-css-prefix}-intersex:before, -.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } -.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } -.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } -.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } -.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } -.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } -.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } -.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } -.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } -.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; } -.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } -.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } -.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } -.@{fa-css-prefix}-server:before { content: @fa-var-server; } -.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } -.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } -.@{fa-css-prefix}-hotel:before, -.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } -.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } -.@{fa-css-prefix}-train:before { content: @fa-var-train; } -.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } -.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } -.@{fa-css-prefix}-yc:before, -.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; } -.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; } -.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; } -.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; } -.@{fa-css-prefix}-battery-4:before, -.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; } -.@{fa-css-prefix}-battery-3:before, -.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; } -.@{fa-css-prefix}-battery-2:before, -.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; } -.@{fa-css-prefix}-battery-1:before, -.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; } -.@{fa-css-prefix}-battery-0:before, -.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; } -.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; } -.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; } -.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; } -.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; } -.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; } -.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; } -.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } -.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } -.@{fa-css-prefix}-clone:before { content: @fa-var-clone; } -.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; } -.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; } -.@{fa-css-prefix}-hourglass-1:before, -.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; } -.@{fa-css-prefix}-hourglass-2:before, -.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; } -.@{fa-css-prefix}-hourglass-3:before, -.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; } -.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; } -.@{fa-css-prefix}-hand-grab-o:before, -.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; } -.@{fa-css-prefix}-hand-stop-o:before, -.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; } -.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; } -.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; } -.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; } -.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; } -.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; } -.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; } -.@{fa-css-prefix}-registered:before { content: @fa-var-registered; } -.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; } -.@{fa-css-prefix}-gg:before { content: @fa-var-gg; } -.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; } -.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; } -.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; } -.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; } -.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; } -.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; } -.@{fa-css-prefix}-safari:before { content: @fa-var-safari; } -.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; } -.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; } -.@{fa-css-prefix}-opera:before { content: @fa-var-opera; } -.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; } -.@{fa-css-prefix}-tv:before, -.@{fa-css-prefix}-television:before { content: @fa-var-television; } -.@{fa-css-prefix}-contao:before { content: @fa-var-contao; } -.@{fa-css-prefix}-500px:before { content: @fa-var-500px; } -.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; } -.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; } -.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; } -.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; } -.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; } -.@{fa-css-prefix}-industry:before { content: @fa-var-industry; } -.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; } -.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; } -.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; } -.@{fa-css-prefix}-map:before { content: @fa-var-map; } -.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; } -.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; } -.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; } -.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; } -.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; } -.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; } diff --git a/elgg_clean/bower_components/font-awesome/less/larger.less b/elgg_clean/bower_components/font-awesome/less/larger.less deleted file mode 100644 index c9d64677..00000000 --- a/elgg_clean/bower_components/font-awesome/less/larger.less +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.@{fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.@{fa-css-prefix}-2x { font-size: 2em; } -.@{fa-css-prefix}-3x { font-size: 3em; } -.@{fa-css-prefix}-4x { font-size: 4em; } -.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/elgg_clean/bower_components/font-awesome/less/list.less b/elgg_clean/bower_components/font-awesome/less/list.less deleted file mode 100644 index 0b440382..00000000 --- a/elgg_clean/bower_components/font-awesome/less/list.less +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.@{fa-css-prefix}-ul { - padding-left: 0; - margin-left: @fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.@{fa-css-prefix}-li { - position: absolute; - left: -@fa-li-width; - width: @fa-li-width; - top: (2em / 14); - text-align: center; - &.@{fa-css-prefix}-lg { - left: (-@fa-li-width + (4em / 14)); - } -} diff --git a/elgg_clean/bower_components/font-awesome/less/mixins.less b/elgg_clean/bower_components/font-awesome/less/mixins.less deleted file mode 100644 index d5a43a14..00000000 --- a/elgg_clean/bower_components/font-awesome/less/mixins.less +++ /dev/null @@ -1,26 +0,0 @@ -// Mixins -// -------------------------- - -.fa-icon() { - display: inline-block; - font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} - -.fa-icon-rotate(@degrees, @rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); - -webkit-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); - transform: rotate(@degrees); -} - -.fa-icon-flip(@horiz, @vert, @rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); - -webkit-transform: scale(@horiz, @vert); - -ms-transform: scale(@horiz, @vert); - transform: scale(@horiz, @vert); -} diff --git a/elgg_clean/bower_components/font-awesome/less/path.less b/elgg_clean/bower_components/font-awesome/less/path.less deleted file mode 100644 index 9211e665..00000000 --- a/elgg_clean/bower_components/font-awesome/less/path.less +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); - src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), - url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), - url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), - url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), - url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); -// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/elgg_clean/bower_components/font-awesome/less/rotated-flipped.less b/elgg_clean/bower_components/font-awesome/less/rotated-flipped.less deleted file mode 100644 index f6ba8147..00000000 --- a/elgg_clean/bower_components/font-awesome/less/rotated-flipped.less +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } -.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } -.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } - -.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } -.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .@{fa-css-prefix}-rotate-90, -:root .@{fa-css-prefix}-rotate-180, -:root .@{fa-css-prefix}-rotate-270, -:root .@{fa-css-prefix}-flip-horizontal, -:root .@{fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/elgg_clean/bower_components/font-awesome/less/stacked.less b/elgg_clean/bower_components/font-awesome/less/stacked.less deleted file mode 100644 index fc53fb0e..00000000 --- a/elgg_clean/bower_components/font-awesome/less/stacked.less +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.@{fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.@{fa-css-prefix}-stack-1x { line-height: inherit; } -.@{fa-css-prefix}-stack-2x { font-size: 2em; } -.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/elgg_clean/bower_components/font-awesome/less/variables.less b/elgg_clean/bower_components/font-awesome/less/variables.less deleted file mode 100644 index 00418e75..00000000 --- a/elgg_clean/bower_components/font-awesome/less/variables.less +++ /dev/null @@ -1,688 +0,0 @@ -// Variables -// -------------------------- - -@fa-font-path: "../fonts"; -@fa-font-size-base: 14px; -@fa-line-height-base: 1; -//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.4.0/fonts"; // for referencing Bootstrap CDN font files directly -@fa-css-prefix: fa; -@fa-version: "4.4.0"; -@fa-border-color: #eee; -@fa-inverse: #fff; -@fa-li-width: (30em / 14); - -@fa-var-500px: "\f26e"; -@fa-var-adjust: "\f042"; -@fa-var-adn: "\f170"; -@fa-var-align-center: "\f037"; -@fa-var-align-justify: "\f039"; -@fa-var-align-left: "\f036"; -@fa-var-align-right: "\f038"; -@fa-var-amazon: "\f270"; -@fa-var-ambulance: "\f0f9"; -@fa-var-anchor: "\f13d"; -@fa-var-android: "\f17b"; -@fa-var-angellist: "\f209"; -@fa-var-angle-double-down: "\f103"; -@fa-var-angle-double-left: "\f100"; -@fa-var-angle-double-right: "\f101"; -@fa-var-angle-double-up: "\f102"; -@fa-var-angle-down: "\f107"; -@fa-var-angle-left: "\f104"; -@fa-var-angle-right: "\f105"; -@fa-var-angle-up: "\f106"; -@fa-var-apple: "\f179"; -@fa-var-archive: "\f187"; -@fa-var-area-chart: "\f1fe"; -@fa-var-arrow-circle-down: "\f0ab"; -@fa-var-arrow-circle-left: "\f0a8"; -@fa-var-arrow-circle-o-down: "\f01a"; -@fa-var-arrow-circle-o-left: "\f190"; -@fa-var-arrow-circle-o-right: "\f18e"; -@fa-var-arrow-circle-o-up: "\f01b"; -@fa-var-arrow-circle-right: "\f0a9"; -@fa-var-arrow-circle-up: "\f0aa"; -@fa-var-arrow-down: "\f063"; -@fa-var-arrow-left: "\f060"; -@fa-var-arrow-right: "\f061"; -@fa-var-arrow-up: "\f062"; -@fa-var-arrows: "\f047"; -@fa-var-arrows-alt: "\f0b2"; -@fa-var-arrows-h: "\f07e"; -@fa-var-arrows-v: "\f07d"; -@fa-var-asterisk: "\f069"; -@fa-var-at: "\f1fa"; -@fa-var-automobile: "\f1b9"; -@fa-var-backward: "\f04a"; -@fa-var-balance-scale: "\f24e"; -@fa-var-ban: "\f05e"; -@fa-var-bank: "\f19c"; -@fa-var-bar-chart: "\f080"; -@fa-var-bar-chart-o: "\f080"; -@fa-var-barcode: "\f02a"; -@fa-var-bars: "\f0c9"; -@fa-var-battery-0: "\f244"; -@fa-var-battery-1: "\f243"; -@fa-var-battery-2: "\f242"; -@fa-var-battery-3: "\f241"; -@fa-var-battery-4: "\f240"; -@fa-var-battery-empty: "\f244"; -@fa-var-battery-full: "\f240"; -@fa-var-battery-half: "\f242"; -@fa-var-battery-quarter: "\f243"; -@fa-var-battery-three-quarters: "\f241"; -@fa-var-bed: "\f236"; -@fa-var-beer: "\f0fc"; -@fa-var-behance: "\f1b4"; -@fa-var-behance-square: "\f1b5"; -@fa-var-bell: "\f0f3"; -@fa-var-bell-o: "\f0a2"; -@fa-var-bell-slash: "\f1f6"; -@fa-var-bell-slash-o: "\f1f7"; -@fa-var-bicycle: "\f206"; -@fa-var-binoculars: "\f1e5"; -@fa-var-birthday-cake: "\f1fd"; -@fa-var-bitbucket: "\f171"; -@fa-var-bitbucket-square: "\f172"; -@fa-var-bitcoin: "\f15a"; -@fa-var-black-tie: "\f27e"; -@fa-var-bold: "\f032"; -@fa-var-bolt: "\f0e7"; -@fa-var-bomb: "\f1e2"; -@fa-var-book: "\f02d"; -@fa-var-bookmark: "\f02e"; -@fa-var-bookmark-o: "\f097"; -@fa-var-briefcase: "\f0b1"; -@fa-var-btc: "\f15a"; -@fa-var-bug: "\f188"; -@fa-var-building: "\f1ad"; -@fa-var-building-o: "\f0f7"; -@fa-var-bullhorn: "\f0a1"; -@fa-var-bullseye: "\f140"; -@fa-var-bus: "\f207"; -@fa-var-buysellads: "\f20d"; -@fa-var-cab: "\f1ba"; -@fa-var-calculator: "\f1ec"; -@fa-var-calendar: "\f073"; -@fa-var-calendar-check-o: "\f274"; -@fa-var-calendar-minus-o: "\f272"; -@fa-var-calendar-o: "\f133"; -@fa-var-calendar-plus-o: "\f271"; -@fa-var-calendar-times-o: "\f273"; -@fa-var-camera: "\f030"; -@fa-var-camera-retro: "\f083"; -@fa-var-car: "\f1b9"; -@fa-var-caret-down: "\f0d7"; -@fa-var-caret-left: "\f0d9"; -@fa-var-caret-right: "\f0da"; -@fa-var-caret-square-o-down: "\f150"; -@fa-var-caret-square-o-left: "\f191"; -@fa-var-caret-square-o-right: "\f152"; -@fa-var-caret-square-o-up: "\f151"; -@fa-var-caret-up: "\f0d8"; -@fa-var-cart-arrow-down: "\f218"; -@fa-var-cart-plus: "\f217"; -@fa-var-cc: "\f20a"; -@fa-var-cc-amex: "\f1f3"; -@fa-var-cc-diners-club: "\f24c"; -@fa-var-cc-discover: "\f1f2"; -@fa-var-cc-jcb: "\f24b"; -@fa-var-cc-mastercard: "\f1f1"; -@fa-var-cc-paypal: "\f1f4"; -@fa-var-cc-stripe: "\f1f5"; -@fa-var-cc-visa: "\f1f0"; -@fa-var-certificate: "\f0a3"; -@fa-var-chain: "\f0c1"; -@fa-var-chain-broken: "\f127"; -@fa-var-check: "\f00c"; -@fa-var-check-circle: "\f058"; -@fa-var-check-circle-o: "\f05d"; -@fa-var-check-square: "\f14a"; -@fa-var-check-square-o: "\f046"; -@fa-var-chevron-circle-down: "\f13a"; -@fa-var-chevron-circle-left: "\f137"; -@fa-var-chevron-circle-right: "\f138"; -@fa-var-chevron-circle-up: "\f139"; -@fa-var-chevron-down: "\f078"; -@fa-var-chevron-left: "\f053"; -@fa-var-chevron-right: "\f054"; -@fa-var-chevron-up: "\f077"; -@fa-var-child: "\f1ae"; -@fa-var-chrome: "\f268"; -@fa-var-circle: "\f111"; -@fa-var-circle-o: "\f10c"; -@fa-var-circle-o-notch: "\f1ce"; -@fa-var-circle-thin: "\f1db"; -@fa-var-clipboard: "\f0ea"; -@fa-var-clock-o: "\f017"; -@fa-var-clone: "\f24d"; -@fa-var-close: "\f00d"; -@fa-var-cloud: "\f0c2"; -@fa-var-cloud-download: "\f0ed"; -@fa-var-cloud-upload: "\f0ee"; -@fa-var-cny: "\f157"; -@fa-var-code: "\f121"; -@fa-var-code-fork: "\f126"; -@fa-var-codepen: "\f1cb"; -@fa-var-coffee: "\f0f4"; -@fa-var-cog: "\f013"; -@fa-var-cogs: "\f085"; -@fa-var-columns: "\f0db"; -@fa-var-comment: "\f075"; -@fa-var-comment-o: "\f0e5"; -@fa-var-commenting: "\f27a"; -@fa-var-commenting-o: "\f27b"; -@fa-var-comments: "\f086"; -@fa-var-comments-o: "\f0e6"; -@fa-var-compass: "\f14e"; -@fa-var-compress: "\f066"; -@fa-var-connectdevelop: "\f20e"; -@fa-var-contao: "\f26d"; -@fa-var-copy: "\f0c5"; -@fa-var-copyright: "\f1f9"; -@fa-var-creative-commons: "\f25e"; -@fa-var-credit-card: "\f09d"; -@fa-var-crop: "\f125"; -@fa-var-crosshairs: "\f05b"; -@fa-var-css3: "\f13c"; -@fa-var-cube: "\f1b2"; -@fa-var-cubes: "\f1b3"; -@fa-var-cut: "\f0c4"; -@fa-var-cutlery: "\f0f5"; -@fa-var-dashboard: "\f0e4"; -@fa-var-dashcube: "\f210"; -@fa-var-database: "\f1c0"; -@fa-var-dedent: "\f03b"; -@fa-var-delicious: "\f1a5"; -@fa-var-desktop: "\f108"; -@fa-var-deviantart: "\f1bd"; -@fa-var-diamond: "\f219"; -@fa-var-digg: "\f1a6"; -@fa-var-dollar: "\f155"; -@fa-var-dot-circle-o: "\f192"; -@fa-var-download: "\f019"; -@fa-var-dribbble: "\f17d"; -@fa-var-dropbox: "\f16b"; -@fa-var-drupal: "\f1a9"; -@fa-var-edit: "\f044"; -@fa-var-eject: "\f052"; -@fa-var-ellipsis-h: "\f141"; -@fa-var-ellipsis-v: "\f142"; -@fa-var-empire: "\f1d1"; -@fa-var-envelope: "\f0e0"; -@fa-var-envelope-o: "\f003"; -@fa-var-envelope-square: "\f199"; -@fa-var-eraser: "\f12d"; -@fa-var-eur: "\f153"; -@fa-var-euro: "\f153"; -@fa-var-exchange: "\f0ec"; -@fa-var-exclamation: "\f12a"; -@fa-var-exclamation-circle: "\f06a"; -@fa-var-exclamation-triangle: "\f071"; -@fa-var-expand: "\f065"; -@fa-var-expeditedssl: "\f23e"; -@fa-var-external-link: "\f08e"; -@fa-var-external-link-square: "\f14c"; -@fa-var-eye: "\f06e"; -@fa-var-eye-slash: "\f070"; -@fa-var-eyedropper: "\f1fb"; -@fa-var-facebook: "\f09a"; -@fa-var-facebook-f: "\f09a"; -@fa-var-facebook-official: "\f230"; -@fa-var-facebook-square: "\f082"; -@fa-var-fast-backward: "\f049"; -@fa-var-fast-forward: "\f050"; -@fa-var-fax: "\f1ac"; -@fa-var-feed: "\f09e"; -@fa-var-female: "\f182"; -@fa-var-fighter-jet: "\f0fb"; -@fa-var-file: "\f15b"; -@fa-var-file-archive-o: "\f1c6"; -@fa-var-file-audio-o: "\f1c7"; -@fa-var-file-code-o: "\f1c9"; -@fa-var-file-excel-o: "\f1c3"; -@fa-var-file-image-o: "\f1c5"; -@fa-var-file-movie-o: "\f1c8"; -@fa-var-file-o: "\f016"; -@fa-var-file-pdf-o: "\f1c1"; -@fa-var-file-photo-o: "\f1c5"; -@fa-var-file-picture-o: "\f1c5"; -@fa-var-file-powerpoint-o: "\f1c4"; -@fa-var-file-sound-o: "\f1c7"; -@fa-var-file-text: "\f15c"; -@fa-var-file-text-o: "\f0f6"; -@fa-var-file-video-o: "\f1c8"; -@fa-var-file-word-o: "\f1c2"; -@fa-var-file-zip-o: "\f1c6"; -@fa-var-files-o: "\f0c5"; -@fa-var-film: "\f008"; -@fa-var-filter: "\f0b0"; -@fa-var-fire: "\f06d"; -@fa-var-fire-extinguisher: "\f134"; -@fa-var-firefox: "\f269"; -@fa-var-flag: "\f024"; -@fa-var-flag-checkered: "\f11e"; -@fa-var-flag-o: "\f11d"; -@fa-var-flash: "\f0e7"; -@fa-var-flask: "\f0c3"; -@fa-var-flickr: "\f16e"; -@fa-var-floppy-o: "\f0c7"; -@fa-var-folder: "\f07b"; -@fa-var-folder-o: "\f114"; -@fa-var-folder-open: "\f07c"; -@fa-var-folder-open-o: "\f115"; -@fa-var-font: "\f031"; -@fa-var-fonticons: "\f280"; -@fa-var-forumbee: "\f211"; -@fa-var-forward: "\f04e"; -@fa-var-foursquare: "\f180"; -@fa-var-frown-o: "\f119"; -@fa-var-futbol-o: "\f1e3"; -@fa-var-gamepad: "\f11b"; -@fa-var-gavel: "\f0e3"; -@fa-var-gbp: "\f154"; -@fa-var-ge: "\f1d1"; -@fa-var-gear: "\f013"; -@fa-var-gears: "\f085"; -@fa-var-genderless: "\f22d"; -@fa-var-get-pocket: "\f265"; -@fa-var-gg: "\f260"; -@fa-var-gg-circle: "\f261"; -@fa-var-gift: "\f06b"; -@fa-var-git: "\f1d3"; -@fa-var-git-square: "\f1d2"; -@fa-var-github: "\f09b"; -@fa-var-github-alt: "\f113"; -@fa-var-github-square: "\f092"; -@fa-var-gittip: "\f184"; -@fa-var-glass: "\f000"; -@fa-var-globe: "\f0ac"; -@fa-var-google: "\f1a0"; -@fa-var-google-plus: "\f0d5"; -@fa-var-google-plus-square: "\f0d4"; -@fa-var-google-wallet: "\f1ee"; -@fa-var-graduation-cap: "\f19d"; -@fa-var-gratipay: "\f184"; -@fa-var-group: "\f0c0"; -@fa-var-h-square: "\f0fd"; -@fa-var-hacker-news: "\f1d4"; -@fa-var-hand-grab-o: "\f255"; -@fa-var-hand-lizard-o: "\f258"; -@fa-var-hand-o-down: "\f0a7"; -@fa-var-hand-o-left: "\f0a5"; -@fa-var-hand-o-right: "\f0a4"; -@fa-var-hand-o-up: "\f0a6"; -@fa-var-hand-paper-o: "\f256"; -@fa-var-hand-peace-o: "\f25b"; -@fa-var-hand-pointer-o: "\f25a"; -@fa-var-hand-rock-o: "\f255"; -@fa-var-hand-scissors-o: "\f257"; -@fa-var-hand-spock-o: "\f259"; -@fa-var-hand-stop-o: "\f256"; -@fa-var-hdd-o: "\f0a0"; -@fa-var-header: "\f1dc"; -@fa-var-headphones: "\f025"; -@fa-var-heart: "\f004"; -@fa-var-heart-o: "\f08a"; -@fa-var-heartbeat: "\f21e"; -@fa-var-history: "\f1da"; -@fa-var-home: "\f015"; -@fa-var-hospital-o: "\f0f8"; -@fa-var-hotel: "\f236"; -@fa-var-hourglass: "\f254"; -@fa-var-hourglass-1: "\f251"; -@fa-var-hourglass-2: "\f252"; -@fa-var-hourglass-3: "\f253"; -@fa-var-hourglass-end: "\f253"; -@fa-var-hourglass-half: "\f252"; -@fa-var-hourglass-o: "\f250"; -@fa-var-hourglass-start: "\f251"; -@fa-var-houzz: "\f27c"; -@fa-var-html5: "\f13b"; -@fa-var-i-cursor: "\f246"; -@fa-var-ils: "\f20b"; -@fa-var-image: "\f03e"; -@fa-var-inbox: "\f01c"; -@fa-var-indent: "\f03c"; -@fa-var-industry: "\f275"; -@fa-var-info: "\f129"; -@fa-var-info-circle: "\f05a"; -@fa-var-inr: "\f156"; -@fa-var-instagram: "\f16d"; -@fa-var-institution: "\f19c"; -@fa-var-internet-explorer: "\f26b"; -@fa-var-intersex: "\f224"; -@fa-var-ioxhost: "\f208"; -@fa-var-italic: "\f033"; -@fa-var-joomla: "\f1aa"; -@fa-var-jpy: "\f157"; -@fa-var-jsfiddle: "\f1cc"; -@fa-var-key: "\f084"; -@fa-var-keyboard-o: "\f11c"; -@fa-var-krw: "\f159"; -@fa-var-language: "\f1ab"; -@fa-var-laptop: "\f109"; -@fa-var-lastfm: "\f202"; -@fa-var-lastfm-square: "\f203"; -@fa-var-leaf: "\f06c"; -@fa-var-leanpub: "\f212"; -@fa-var-legal: "\f0e3"; -@fa-var-lemon-o: "\f094"; -@fa-var-level-down: "\f149"; -@fa-var-level-up: "\f148"; -@fa-var-life-bouy: "\f1cd"; -@fa-var-life-buoy: "\f1cd"; -@fa-var-life-ring: "\f1cd"; -@fa-var-life-saver: "\f1cd"; -@fa-var-lightbulb-o: "\f0eb"; -@fa-var-line-chart: "\f201"; -@fa-var-link: "\f0c1"; -@fa-var-linkedin: "\f0e1"; -@fa-var-linkedin-square: "\f08c"; -@fa-var-linux: "\f17c"; -@fa-var-list: "\f03a"; -@fa-var-list-alt: "\f022"; -@fa-var-list-ol: "\f0cb"; -@fa-var-list-ul: "\f0ca"; -@fa-var-location-arrow: "\f124"; -@fa-var-lock: "\f023"; -@fa-var-long-arrow-down: "\f175"; -@fa-var-long-arrow-left: "\f177"; -@fa-var-long-arrow-right: "\f178"; -@fa-var-long-arrow-up: "\f176"; -@fa-var-magic: "\f0d0"; -@fa-var-magnet: "\f076"; -@fa-var-mail-forward: "\f064"; -@fa-var-mail-reply: "\f112"; -@fa-var-mail-reply-all: "\f122"; -@fa-var-male: "\f183"; -@fa-var-map: "\f279"; -@fa-var-map-marker: "\f041"; -@fa-var-map-o: "\f278"; -@fa-var-map-pin: "\f276"; -@fa-var-map-signs: "\f277"; -@fa-var-mars: "\f222"; -@fa-var-mars-double: "\f227"; -@fa-var-mars-stroke: "\f229"; -@fa-var-mars-stroke-h: "\f22b"; -@fa-var-mars-stroke-v: "\f22a"; -@fa-var-maxcdn: "\f136"; -@fa-var-meanpath: "\f20c"; -@fa-var-medium: "\f23a"; -@fa-var-medkit: "\f0fa"; -@fa-var-meh-o: "\f11a"; -@fa-var-mercury: "\f223"; -@fa-var-microphone: "\f130"; -@fa-var-microphone-slash: "\f131"; -@fa-var-minus: "\f068"; -@fa-var-minus-circle: "\f056"; -@fa-var-minus-square: "\f146"; -@fa-var-minus-square-o: "\f147"; -@fa-var-mobile: "\f10b"; -@fa-var-mobile-phone: "\f10b"; -@fa-var-money: "\f0d6"; -@fa-var-moon-o: "\f186"; -@fa-var-mortar-board: "\f19d"; -@fa-var-motorcycle: "\f21c"; -@fa-var-mouse-pointer: "\f245"; -@fa-var-music: "\f001"; -@fa-var-navicon: "\f0c9"; -@fa-var-neuter: "\f22c"; -@fa-var-newspaper-o: "\f1ea"; -@fa-var-object-group: "\f247"; -@fa-var-object-ungroup: "\f248"; -@fa-var-odnoklassniki: "\f263"; -@fa-var-odnoklassniki-square: "\f264"; -@fa-var-opencart: "\f23d"; -@fa-var-openid: "\f19b"; -@fa-var-opera: "\f26a"; -@fa-var-optin-monster: "\f23c"; -@fa-var-outdent: "\f03b"; -@fa-var-pagelines: "\f18c"; -@fa-var-paint-brush: "\f1fc"; -@fa-var-paper-plane: "\f1d8"; -@fa-var-paper-plane-o: "\f1d9"; -@fa-var-paperclip: "\f0c6"; -@fa-var-paragraph: "\f1dd"; -@fa-var-paste: "\f0ea"; -@fa-var-pause: "\f04c"; -@fa-var-paw: "\f1b0"; -@fa-var-paypal: "\f1ed"; -@fa-var-pencil: "\f040"; -@fa-var-pencil-square: "\f14b"; -@fa-var-pencil-square-o: "\f044"; -@fa-var-phone: "\f095"; -@fa-var-phone-square: "\f098"; -@fa-var-photo: "\f03e"; -@fa-var-picture-o: "\f03e"; -@fa-var-pie-chart: "\f200"; -@fa-var-pied-piper: "\f1a7"; -@fa-var-pied-piper-alt: "\f1a8"; -@fa-var-pinterest: "\f0d2"; -@fa-var-pinterest-p: "\f231"; -@fa-var-pinterest-square: "\f0d3"; -@fa-var-plane: "\f072"; -@fa-var-play: "\f04b"; -@fa-var-play-circle: "\f144"; -@fa-var-play-circle-o: "\f01d"; -@fa-var-plug: "\f1e6"; -@fa-var-plus: "\f067"; -@fa-var-plus-circle: "\f055"; -@fa-var-plus-square: "\f0fe"; -@fa-var-plus-square-o: "\f196"; -@fa-var-power-off: "\f011"; -@fa-var-print: "\f02f"; -@fa-var-puzzle-piece: "\f12e"; -@fa-var-qq: "\f1d6"; -@fa-var-qrcode: "\f029"; -@fa-var-question: "\f128"; -@fa-var-question-circle: "\f059"; -@fa-var-quote-left: "\f10d"; -@fa-var-quote-right: "\f10e"; -@fa-var-ra: "\f1d0"; -@fa-var-random: "\f074"; -@fa-var-rebel: "\f1d0"; -@fa-var-recycle: "\f1b8"; -@fa-var-reddit: "\f1a1"; -@fa-var-reddit-square: "\f1a2"; -@fa-var-refresh: "\f021"; -@fa-var-registered: "\f25d"; -@fa-var-remove: "\f00d"; -@fa-var-renren: "\f18b"; -@fa-var-reorder: "\f0c9"; -@fa-var-repeat: "\f01e"; -@fa-var-reply: "\f112"; -@fa-var-reply-all: "\f122"; -@fa-var-retweet: "\f079"; -@fa-var-rmb: "\f157"; -@fa-var-road: "\f018"; -@fa-var-rocket: "\f135"; -@fa-var-rotate-left: "\f0e2"; -@fa-var-rotate-right: "\f01e"; -@fa-var-rouble: "\f158"; -@fa-var-rss: "\f09e"; -@fa-var-rss-square: "\f143"; -@fa-var-rub: "\f158"; -@fa-var-ruble: "\f158"; -@fa-var-rupee: "\f156"; -@fa-var-safari: "\f267"; -@fa-var-save: "\f0c7"; -@fa-var-scissors: "\f0c4"; -@fa-var-search: "\f002"; -@fa-var-search-minus: "\f010"; -@fa-var-search-plus: "\f00e"; -@fa-var-sellsy: "\f213"; -@fa-var-send: "\f1d8"; -@fa-var-send-o: "\f1d9"; -@fa-var-server: "\f233"; -@fa-var-share: "\f064"; -@fa-var-share-alt: "\f1e0"; -@fa-var-share-alt-square: "\f1e1"; -@fa-var-share-square: "\f14d"; -@fa-var-share-square-o: "\f045"; -@fa-var-shekel: "\f20b"; -@fa-var-sheqel: "\f20b"; -@fa-var-shield: "\f132"; -@fa-var-ship: "\f21a"; -@fa-var-shirtsinbulk: "\f214"; -@fa-var-shopping-cart: "\f07a"; -@fa-var-sign-in: "\f090"; -@fa-var-sign-out: "\f08b"; -@fa-var-signal: "\f012"; -@fa-var-simplybuilt: "\f215"; -@fa-var-sitemap: "\f0e8"; -@fa-var-skyatlas: "\f216"; -@fa-var-skype: "\f17e"; -@fa-var-slack: "\f198"; -@fa-var-sliders: "\f1de"; -@fa-var-slideshare: "\f1e7"; -@fa-var-smile-o: "\f118"; -@fa-var-soccer-ball-o: "\f1e3"; -@fa-var-sort: "\f0dc"; -@fa-var-sort-alpha-asc: "\f15d"; -@fa-var-sort-alpha-desc: "\f15e"; -@fa-var-sort-amount-asc: "\f160"; -@fa-var-sort-amount-desc: "\f161"; -@fa-var-sort-asc: "\f0de"; -@fa-var-sort-desc: "\f0dd"; -@fa-var-sort-down: "\f0dd"; -@fa-var-sort-numeric-asc: "\f162"; -@fa-var-sort-numeric-desc: "\f163"; -@fa-var-sort-up: "\f0de"; -@fa-var-soundcloud: "\f1be"; -@fa-var-space-shuttle: "\f197"; -@fa-var-spinner: "\f110"; -@fa-var-spoon: "\f1b1"; -@fa-var-spotify: "\f1bc"; -@fa-var-square: "\f0c8"; -@fa-var-square-o: "\f096"; -@fa-var-stack-exchange: "\f18d"; -@fa-var-stack-overflow: "\f16c"; -@fa-var-star: "\f005"; -@fa-var-star-half: "\f089"; -@fa-var-star-half-empty: "\f123"; -@fa-var-star-half-full: "\f123"; -@fa-var-star-half-o: "\f123"; -@fa-var-star-o: "\f006"; -@fa-var-steam: "\f1b6"; -@fa-var-steam-square: "\f1b7"; -@fa-var-step-backward: "\f048"; -@fa-var-step-forward: "\f051"; -@fa-var-stethoscope: "\f0f1"; -@fa-var-sticky-note: "\f249"; -@fa-var-sticky-note-o: "\f24a"; -@fa-var-stop: "\f04d"; -@fa-var-street-view: "\f21d"; -@fa-var-strikethrough: "\f0cc"; -@fa-var-stumbleupon: "\f1a4"; -@fa-var-stumbleupon-circle: "\f1a3"; -@fa-var-subscript: "\f12c"; -@fa-var-subway: "\f239"; -@fa-var-suitcase: "\f0f2"; -@fa-var-sun-o: "\f185"; -@fa-var-superscript: "\f12b"; -@fa-var-support: "\f1cd"; -@fa-var-table: "\f0ce"; -@fa-var-tablet: "\f10a"; -@fa-var-tachometer: "\f0e4"; -@fa-var-tag: "\f02b"; -@fa-var-tags: "\f02c"; -@fa-var-tasks: "\f0ae"; -@fa-var-taxi: "\f1ba"; -@fa-var-television: "\f26c"; -@fa-var-tencent-weibo: "\f1d5"; -@fa-var-terminal: "\f120"; -@fa-var-text-height: "\f034"; -@fa-var-text-width: "\f035"; -@fa-var-th: "\f00a"; -@fa-var-th-large: "\f009"; -@fa-var-th-list: "\f00b"; -@fa-var-thumb-tack: "\f08d"; -@fa-var-thumbs-down: "\f165"; -@fa-var-thumbs-o-down: "\f088"; -@fa-var-thumbs-o-up: "\f087"; -@fa-var-thumbs-up: "\f164"; -@fa-var-ticket: "\f145"; -@fa-var-times: "\f00d"; -@fa-var-times-circle: "\f057"; -@fa-var-times-circle-o: "\f05c"; -@fa-var-tint: "\f043"; -@fa-var-toggle-down: "\f150"; -@fa-var-toggle-left: "\f191"; -@fa-var-toggle-off: "\f204"; -@fa-var-toggle-on: "\f205"; -@fa-var-toggle-right: "\f152"; -@fa-var-toggle-up: "\f151"; -@fa-var-trademark: "\f25c"; -@fa-var-train: "\f238"; -@fa-var-transgender: "\f224"; -@fa-var-transgender-alt: "\f225"; -@fa-var-trash: "\f1f8"; -@fa-var-trash-o: "\f014"; -@fa-var-tree: "\f1bb"; -@fa-var-trello: "\f181"; -@fa-var-tripadvisor: "\f262"; -@fa-var-trophy: "\f091"; -@fa-var-truck: "\f0d1"; -@fa-var-try: "\f195"; -@fa-var-tty: "\f1e4"; -@fa-var-tumblr: "\f173"; -@fa-var-tumblr-square: "\f174"; -@fa-var-turkish-lira: "\f195"; -@fa-var-tv: "\f26c"; -@fa-var-twitch: "\f1e8"; -@fa-var-twitter: "\f099"; -@fa-var-twitter-square: "\f081"; -@fa-var-umbrella: "\f0e9"; -@fa-var-underline: "\f0cd"; -@fa-var-undo: "\f0e2"; -@fa-var-university: "\f19c"; -@fa-var-unlink: "\f127"; -@fa-var-unlock: "\f09c"; -@fa-var-unlock-alt: "\f13e"; -@fa-var-unsorted: "\f0dc"; -@fa-var-upload: "\f093"; -@fa-var-usd: "\f155"; -@fa-var-user: "\f007"; -@fa-var-user-md: "\f0f0"; -@fa-var-user-plus: "\f234"; -@fa-var-user-secret: "\f21b"; -@fa-var-user-times: "\f235"; -@fa-var-users: "\f0c0"; -@fa-var-venus: "\f221"; -@fa-var-venus-double: "\f226"; -@fa-var-venus-mars: "\f228"; -@fa-var-viacoin: "\f237"; -@fa-var-video-camera: "\f03d"; -@fa-var-vimeo: "\f27d"; -@fa-var-vimeo-square: "\f194"; -@fa-var-vine: "\f1ca"; -@fa-var-vk: "\f189"; -@fa-var-volume-down: "\f027"; -@fa-var-volume-off: "\f026"; -@fa-var-volume-up: "\f028"; -@fa-var-warning: "\f071"; -@fa-var-wechat: "\f1d7"; -@fa-var-weibo: "\f18a"; -@fa-var-weixin: "\f1d7"; -@fa-var-whatsapp: "\f232"; -@fa-var-wheelchair: "\f193"; -@fa-var-wifi: "\f1eb"; -@fa-var-wikipedia-w: "\f266"; -@fa-var-windows: "\f17a"; -@fa-var-won: "\f159"; -@fa-var-wordpress: "\f19a"; -@fa-var-wrench: "\f0ad"; -@fa-var-xing: "\f168"; -@fa-var-xing-square: "\f169"; -@fa-var-y-combinator: "\f23b"; -@fa-var-y-combinator-square: "\f1d4"; -@fa-var-yahoo: "\f19e"; -@fa-var-yc: "\f23b"; -@fa-var-yc-square: "\f1d4"; -@fa-var-yelp: "\f1e9"; -@fa-var-yen: "\f157"; -@fa-var-youtube: "\f167"; -@fa-var-youtube-play: "\f16a"; -@fa-var-youtube-square: "\f166"; - diff --git a/elgg_clean/bower_components/font-awesome/scss/_animated.scss b/elgg_clean/bower_components/font-awesome/scss/_animated.scss deleted file mode 100644 index 8a020dbf..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_animated.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Spinning Icons -// -------------------------- - -.#{$fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.#{$fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/elgg_clean/bower_components/font-awesome/scss/_bordered-pulled.scss b/elgg_clean/bower_components/font-awesome/scss/_bordered-pulled.scss deleted file mode 100644 index d4b85a02..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_bordered-pulled.scss +++ /dev/null @@ -1,25 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.#{$fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em $fa-border-color; - border-radius: .1em; -} - -.#{$fa-css-prefix}-pull-left { float: left; } -.#{$fa-css-prefix}-pull-right { float: right; } - -.#{$fa-css-prefix} { - &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } - &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } -} - -/* Deprecated as of 4.4.0 */ -.pull-right { float: right; } -.pull-left { float: left; } - -.#{$fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/elgg_clean/bower_components/font-awesome/scss/_core.scss b/elgg_clean/bower_components/font-awesome/scss/_core.scss deleted file mode 100644 index 7425ef85..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_core.scss +++ /dev/null @@ -1,12 +0,0 @@ -// Base Class Definition -// ------------------------- - -.#{$fa-css-prefix} { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} diff --git a/elgg_clean/bower_components/font-awesome/scss/_fixed-width.scss b/elgg_clean/bower_components/font-awesome/scss/_fixed-width.scss deleted file mode 100644 index b221c981..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_fixed-width.scss +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.#{$fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/elgg_clean/bower_components/font-awesome/scss/_icons.scss b/elgg_clean/bower_components/font-awesome/scss/_icons.scss deleted file mode 100644 index 62d97677..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_icons.scss +++ /dev/null @@ -1,677 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } -.#{$fa-css-prefix}-music:before { content: $fa-var-music; } -.#{$fa-css-prefix}-search:before { content: $fa-var-search; } -.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } -.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } -.#{$fa-css-prefix}-star:before { content: $fa-var-star; } -.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } -.#{$fa-css-prefix}-user:before { content: $fa-var-user; } -.#{$fa-css-prefix}-film:before { content: $fa-var-film; } -.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } -.#{$fa-css-prefix}-th:before { content: $fa-var-th; } -.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } -.#{$fa-css-prefix}-check:before { content: $fa-var-check; } -.#{$fa-css-prefix}-remove:before, -.#{$fa-css-prefix}-close:before, -.#{$fa-css-prefix}-times:before { content: $fa-var-times; } -.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } -.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } -.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } -.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } -.#{$fa-css-prefix}-gear:before, -.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } -.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } -.#{$fa-css-prefix}-home:before { content: $fa-var-home; } -.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } -.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } -.#{$fa-css-prefix}-road:before { content: $fa-var-road; } -.#{$fa-css-prefix}-download:before { content: $fa-var-download; } -.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } -.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } -.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } -.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } -.#{$fa-css-prefix}-rotate-right:before, -.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } -.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } -.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } -.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } -.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } -.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } -.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } -.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } -.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } -.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } -.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } -.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } -.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } -.#{$fa-css-prefix}-book:before { content: $fa-var-book; } -.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } -.#{$fa-css-prefix}-print:before { content: $fa-var-print; } -.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } -.#{$fa-css-prefix}-font:before { content: $fa-var-font; } -.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } -.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } -.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } -.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } -.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } -.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } -.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } -.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } -.#{$fa-css-prefix}-list:before { content: $fa-var-list; } -.#{$fa-css-prefix}-dedent:before, -.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } -.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } -.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } -.#{$fa-css-prefix}-photo:before, -.#{$fa-css-prefix}-image:before, -.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } -.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } -.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } -.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } -.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } -.#{$fa-css-prefix}-edit:before, -.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } -.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } -.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } -.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } -.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } -.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } -.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } -.#{$fa-css-prefix}-play:before { content: $fa-var-play; } -.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } -.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } -.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } -.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } -.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } -.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } -.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } -.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } -.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } -.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } -.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } -.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } -.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } -.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } -.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } -.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } -.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } -.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } -.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } -.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } -.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } -.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } -.#{$fa-css-prefix}-mail-forward:before, -.#{$fa-css-prefix}-share:before { content: $fa-var-share; } -.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } -.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } -.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } -.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } -.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } -.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } -.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } -.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } -.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } -.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } -.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } -.#{$fa-css-prefix}-warning:before, -.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } -.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } -.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } -.#{$fa-css-prefix}-random:before { content: $fa-var-random; } -.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } -.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } -.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } -.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } -.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } -.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } -.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } -.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } -.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } -.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } -.#{$fa-css-prefix}-bar-chart-o:before, -.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } -.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } -.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } -.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } -.#{$fa-css-prefix}-key:before { content: $fa-var-key; } -.#{$fa-css-prefix}-gears:before, -.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } -.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } -.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } -.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } -.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } -.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } -.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } -.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } -.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } -.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } -.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } -.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } -.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } -.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } -.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } -.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } -.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } -.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } -.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } -.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } -.#{$fa-css-prefix}-facebook-f:before, -.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } -.#{$fa-css-prefix}-github:before { content: $fa-var-github; } -.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } -.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } -.#{$fa-css-prefix}-feed:before, -.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } -.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } -.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } -.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } -.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } -.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } -.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } -.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } -.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } -.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } -.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } -.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } -.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } -.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } -.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } -.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } -.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } -.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } -.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } -.#{$fa-css-prefix}-group:before, -.#{$fa-css-prefix}-users:before { content: $fa-var-users; } -.#{$fa-css-prefix}-chain:before, -.#{$fa-css-prefix}-link:before { content: $fa-var-link; } -.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } -.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } -.#{$fa-css-prefix}-cut:before, -.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } -.#{$fa-css-prefix}-copy:before, -.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } -.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } -.#{$fa-css-prefix}-save:before, -.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } -.#{$fa-css-prefix}-square:before { content: $fa-var-square; } -.#{$fa-css-prefix}-navicon:before, -.#{$fa-css-prefix}-reorder:before, -.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } -.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } -.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } -.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } -.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } -.#{$fa-css-prefix}-table:before { content: $fa-var-table; } -.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } -.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } -.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } -.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } -.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } -.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } -.#{$fa-css-prefix}-money:before { content: $fa-var-money; } -.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } -.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } -.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } -.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } -.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } -.#{$fa-css-prefix}-unsorted:before, -.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } -.#{$fa-css-prefix}-sort-down:before, -.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } -.#{$fa-css-prefix}-sort-up:before, -.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } -.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } -.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } -.#{$fa-css-prefix}-rotate-left:before, -.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } -.#{$fa-css-prefix}-legal:before, -.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } -.#{$fa-css-prefix}-dashboard:before, -.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } -.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } -.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } -.#{$fa-css-prefix}-flash:before, -.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } -.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } -.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } -.#{$fa-css-prefix}-paste:before, -.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } -.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } -.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } -.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } -.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } -.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } -.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } -.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } -.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } -.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } -.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } -.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } -.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } -.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } -.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } -.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } -.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } -.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } -.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } -.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } -.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } -.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } -.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } -.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } -.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } -.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } -.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } -.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } -.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } -.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } -.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } -.#{$fa-css-prefix}-mobile-phone:before, -.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } -.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } -.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } -.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } -.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } -.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } -.#{$fa-css-prefix}-mail-reply:before, -.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } -.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } -.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } -.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } -.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } -.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } -.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } -.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } -.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } -.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } -.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } -.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } -.#{$fa-css-prefix}-code:before { content: $fa-var-code; } -.#{$fa-css-prefix}-mail-reply-all:before, -.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } -.#{$fa-css-prefix}-star-half-empty:before, -.#{$fa-css-prefix}-star-half-full:before, -.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } -.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } -.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } -.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } -.#{$fa-css-prefix}-unlink:before, -.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } -.#{$fa-css-prefix}-question:before { content: $fa-var-question; } -.#{$fa-css-prefix}-info:before { content: $fa-var-info; } -.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } -.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } -.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } -.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } -.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } -.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } -.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } -.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } -.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } -.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } -.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } -.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } -.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } -.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } -.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } -.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } -.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } -.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } -.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } -.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } -.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } -.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } -.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } -.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } -.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } -.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } -.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } -.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } -.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } -.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } -.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } -.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } -.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } -.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } -.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } -.#{$fa-css-prefix}-toggle-down:before, -.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } -.#{$fa-css-prefix}-toggle-up:before, -.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } -.#{$fa-css-prefix}-toggle-right:before, -.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } -.#{$fa-css-prefix}-euro:before, -.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } -.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } -.#{$fa-css-prefix}-dollar:before, -.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } -.#{$fa-css-prefix}-rupee:before, -.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } -.#{$fa-css-prefix}-cny:before, -.#{$fa-css-prefix}-rmb:before, -.#{$fa-css-prefix}-yen:before, -.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } -.#{$fa-css-prefix}-ruble:before, -.#{$fa-css-prefix}-rouble:before, -.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } -.#{$fa-css-prefix}-won:before, -.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } -.#{$fa-css-prefix}-bitcoin:before, -.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } -.#{$fa-css-prefix}-file:before { content: $fa-var-file; } -.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } -.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } -.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } -.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } -.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } -.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } -.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } -.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } -.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } -.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } -.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } -.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } -.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } -.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } -.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } -.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } -.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } -.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } -.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } -.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } -.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } -.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } -.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } -.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } -.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } -.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } -.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } -.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } -.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } -.#{$fa-css-prefix}-android:before { content: $fa-var-android; } -.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } -.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } -.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } -.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } -.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } -.#{$fa-css-prefix}-female:before { content: $fa-var-female; } -.#{$fa-css-prefix}-male:before { content: $fa-var-male; } -.#{$fa-css-prefix}-gittip:before, -.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } -.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } -.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } -.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } -.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } -.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } -.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } -.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } -.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } -.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } -.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } -.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } -.#{$fa-css-prefix}-toggle-left:before, -.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } -.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } -.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } -.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } -.#{$fa-css-prefix}-turkish-lira:before, -.#{$fa-css-prefix}-try:before { content: $fa-var-try; } -.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } -.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } -.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } -.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } -.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } -.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } -.#{$fa-css-prefix}-institution:before, -.#{$fa-css-prefix}-bank:before, -.#{$fa-css-prefix}-university:before { content: $fa-var-university; } -.#{$fa-css-prefix}-mortar-board:before, -.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } -.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } -.#{$fa-css-prefix}-google:before { content: $fa-var-google; } -.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } -.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } -.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } -.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } -.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } -.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } -.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } -.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } -.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } -.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } -.#{$fa-css-prefix}-language:before { content: $fa-var-language; } -.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } -.#{$fa-css-prefix}-building:before { content: $fa-var-building; } -.#{$fa-css-prefix}-child:before { content: $fa-var-child; } -.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } -.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } -.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } -.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } -.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } -.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } -.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } -.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } -.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } -.#{$fa-css-prefix}-automobile:before, -.#{$fa-css-prefix}-car:before { content: $fa-var-car; } -.#{$fa-css-prefix}-cab:before, -.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } -.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } -.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } -.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } -.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } -.#{$fa-css-prefix}-database:before { content: $fa-var-database; } -.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } -.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } -.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } -.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } -.#{$fa-css-prefix}-file-photo-o:before, -.#{$fa-css-prefix}-file-picture-o:before, -.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } -.#{$fa-css-prefix}-file-zip-o:before, -.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } -.#{$fa-css-prefix}-file-sound-o:before, -.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } -.#{$fa-css-prefix}-file-movie-o:before, -.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } -.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } -.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } -.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } -.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } -.#{$fa-css-prefix}-life-bouy:before, -.#{$fa-css-prefix}-life-buoy:before, -.#{$fa-css-prefix}-life-saver:before, -.#{$fa-css-prefix}-support:before, -.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } -.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } -.#{$fa-css-prefix}-ra:before, -.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } -.#{$fa-css-prefix}-ge:before, -.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } -.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } -.#{$fa-css-prefix}-git:before { content: $fa-var-git; } -.#{$fa-css-prefix}-y-combinator-square:before, -.#{$fa-css-prefix}-yc-square:before, -.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } -.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } -.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } -.#{$fa-css-prefix}-wechat:before, -.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } -.#{$fa-css-prefix}-send:before, -.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } -.#{$fa-css-prefix}-send-o:before, -.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } -.#{$fa-css-prefix}-history:before { content: $fa-var-history; } -.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } -.#{$fa-css-prefix}-header:before { content: $fa-var-header; } -.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } -.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } -.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } -.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } -.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } -.#{$fa-css-prefix}-soccer-ball-o:before, -.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } -.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } -.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } -.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } -.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } -.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } -.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } -.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } -.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } -.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } -.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } -.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } -.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } -.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } -.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } -.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } -.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } -.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } -.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } -.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } -.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } -.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } -.#{$fa-css-prefix}-at:before { content: $fa-var-at; } -.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } -.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } -.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } -.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } -.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } -.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } -.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } -.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } -.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } -.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } -.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } -.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } -.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } -.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } -.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } -.#{$fa-css-prefix}-shekel:before, -.#{$fa-css-prefix}-sheqel:before, -.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } -.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } -.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } -.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } -.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } -.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } -.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } -.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } -.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } -.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } -.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } -.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } -.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } -.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } -.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } -.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } -.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } -.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } -.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } -.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } -.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } -.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } -.#{$fa-css-prefix}-intersex:before, -.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } -.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } -.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } -.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } -.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } -.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } -.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } -.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } -.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } -.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } -.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } -.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } -.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } -.#{$fa-css-prefix}-server:before { content: $fa-var-server; } -.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } -.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } -.#{$fa-css-prefix}-hotel:before, -.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } -.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } -.#{$fa-css-prefix}-train:before { content: $fa-var-train; } -.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } -.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } -.#{$fa-css-prefix}-yc:before, -.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } -.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } -.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } -.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } -.#{$fa-css-prefix}-battery-4:before, -.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } -.#{$fa-css-prefix}-battery-3:before, -.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } -.#{$fa-css-prefix}-battery-2:before, -.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } -.#{$fa-css-prefix}-battery-1:before, -.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } -.#{$fa-css-prefix}-battery-0:before, -.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } -.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } -.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } -.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } -.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } -.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } -.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } -.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } -.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } -.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } -.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } -.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } -.#{$fa-css-prefix}-hourglass-1:before, -.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } -.#{$fa-css-prefix}-hourglass-2:before, -.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } -.#{$fa-css-prefix}-hourglass-3:before, -.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } -.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } -.#{$fa-css-prefix}-hand-grab-o:before, -.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } -.#{$fa-css-prefix}-hand-stop-o:before, -.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } -.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } -.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } -.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } -.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } -.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } -.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } -.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } -.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } -.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } -.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } -.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } -.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } -.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } -.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } -.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } -.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } -.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } -.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } -.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } -.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } -.#{$fa-css-prefix}-tv:before, -.#{$fa-css-prefix}-television:before { content: $fa-var-television; } -.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } -.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } -.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } -.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } -.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } -.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } -.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } -.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } -.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } -.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } -.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } -.#{$fa-css-prefix}-map:before { content: $fa-var-map; } -.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } -.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } -.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } -.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } -.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } -.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } diff --git a/elgg_clean/bower_components/font-awesome/scss/_larger.scss b/elgg_clean/bower_components/font-awesome/scss/_larger.scss deleted file mode 100644 index 41e9a818..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_larger.scss +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.#{$fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.#{$fa-css-prefix}-2x { font-size: 2em; } -.#{$fa-css-prefix}-3x { font-size: 3em; } -.#{$fa-css-prefix}-4x { font-size: 4em; } -.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/elgg_clean/bower_components/font-awesome/scss/_list.scss b/elgg_clean/bower_components/font-awesome/scss/_list.scss deleted file mode 100644 index 7d1e4d54..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_list.scss +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.#{$fa-css-prefix}-ul { - padding-left: 0; - margin-left: $fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.#{$fa-css-prefix}-li { - position: absolute; - left: -$fa-li-width; - width: $fa-li-width; - top: (2em / 14); - text-align: center; - &.#{$fa-css-prefix}-lg { - left: -$fa-li-width + (4em / 14); - } -} diff --git a/elgg_clean/bower_components/font-awesome/scss/_mixins.scss b/elgg_clean/bower_components/font-awesome/scss/_mixins.scss deleted file mode 100644 index f96719b6..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_mixins.scss +++ /dev/null @@ -1,26 +0,0 @@ -// Mixins -// -------------------------- - -@mixin fa-icon() { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} - -@mixin fa-icon-rotate($degrees, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: rotate($degrees); - -ms-transform: rotate($degrees); - transform: rotate($degrees); -} - -@mixin fa-icon-flip($horiz, $vert, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: scale($horiz, $vert); - -ms-transform: scale($horiz, $vert); - transform: scale($horiz, $vert); -} diff --git a/elgg_clean/bower_components/font-awesome/scss/_path.scss b/elgg_clean/bower_components/font-awesome/scss/_path.scss deleted file mode 100644 index bb457c23..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_path.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); - src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), - url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), - url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), - url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), - url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); -// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/elgg_clean/bower_components/font-awesome/scss/_rotated-flipped.scss b/elgg_clean/bower_components/font-awesome/scss/_rotated-flipped.scss deleted file mode 100644 index a3558fd0..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_rotated-flipped.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } -.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } -.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } - -.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } -.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .#{$fa-css-prefix}-rotate-90, -:root .#{$fa-css-prefix}-rotate-180, -:root .#{$fa-css-prefix}-rotate-270, -:root .#{$fa-css-prefix}-flip-horizontal, -:root .#{$fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/elgg_clean/bower_components/font-awesome/scss/_stacked.scss b/elgg_clean/bower_components/font-awesome/scss/_stacked.scss deleted file mode 100644 index aef74036..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_stacked.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.#{$fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.#{$fa-css-prefix}-stack-1x { line-height: inherit; } -.#{$fa-css-prefix}-stack-2x { font-size: 2em; } -.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/elgg_clean/bower_components/font-awesome/scss/_variables.scss b/elgg_clean/bower_components/font-awesome/scss/_variables.scss deleted file mode 100644 index c10cd47f..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/_variables.scss +++ /dev/null @@ -1,688 +0,0 @@ -// Variables -// -------------------------- - -$fa-font-path: "../fonts" !default; -$fa-font-size-base: 14px !default; -$fa-line-height-base: 1 !default; -//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.4.0/fonts" !default; // for referencing Bootstrap CDN font files directly -$fa-css-prefix: fa !default; -$fa-version: "4.4.0" !default; -$fa-border-color: #eee !default; -$fa-inverse: #fff !default; -$fa-li-width: (30em / 14) !default; - -$fa-var-500px: "\f26e"; -$fa-var-adjust: "\f042"; -$fa-var-adn: "\f170"; -$fa-var-align-center: "\f037"; -$fa-var-align-justify: "\f039"; -$fa-var-align-left: "\f036"; -$fa-var-align-right: "\f038"; -$fa-var-amazon: "\f270"; -$fa-var-ambulance: "\f0f9"; -$fa-var-anchor: "\f13d"; -$fa-var-android: "\f17b"; -$fa-var-angellist: "\f209"; -$fa-var-angle-double-down: "\f103"; -$fa-var-angle-double-left: "\f100"; -$fa-var-angle-double-right: "\f101"; -$fa-var-angle-double-up: "\f102"; -$fa-var-angle-down: "\f107"; -$fa-var-angle-left: "\f104"; -$fa-var-angle-right: "\f105"; -$fa-var-angle-up: "\f106"; -$fa-var-apple: "\f179"; -$fa-var-archive: "\f187"; -$fa-var-area-chart: "\f1fe"; -$fa-var-arrow-circle-down: "\f0ab"; -$fa-var-arrow-circle-left: "\f0a8"; -$fa-var-arrow-circle-o-down: "\f01a"; -$fa-var-arrow-circle-o-left: "\f190"; -$fa-var-arrow-circle-o-right: "\f18e"; -$fa-var-arrow-circle-o-up: "\f01b"; -$fa-var-arrow-circle-right: "\f0a9"; -$fa-var-arrow-circle-up: "\f0aa"; -$fa-var-arrow-down: "\f063"; -$fa-var-arrow-left: "\f060"; -$fa-var-arrow-right: "\f061"; -$fa-var-arrow-up: "\f062"; -$fa-var-arrows: "\f047"; -$fa-var-arrows-alt: "\f0b2"; -$fa-var-arrows-h: "\f07e"; -$fa-var-arrows-v: "\f07d"; -$fa-var-asterisk: "\f069"; -$fa-var-at: "\f1fa"; -$fa-var-automobile: "\f1b9"; -$fa-var-backward: "\f04a"; -$fa-var-balance-scale: "\f24e"; -$fa-var-ban: "\f05e"; -$fa-var-bank: "\f19c"; -$fa-var-bar-chart: "\f080"; -$fa-var-bar-chart-o: "\f080"; -$fa-var-barcode: "\f02a"; -$fa-var-bars: "\f0c9"; -$fa-var-battery-0: "\f244"; -$fa-var-battery-1: "\f243"; -$fa-var-battery-2: "\f242"; -$fa-var-battery-3: "\f241"; -$fa-var-battery-4: "\f240"; -$fa-var-battery-empty: "\f244"; -$fa-var-battery-full: "\f240"; -$fa-var-battery-half: "\f242"; -$fa-var-battery-quarter: "\f243"; -$fa-var-battery-three-quarters: "\f241"; -$fa-var-bed: "\f236"; -$fa-var-beer: "\f0fc"; -$fa-var-behance: "\f1b4"; -$fa-var-behance-square: "\f1b5"; -$fa-var-bell: "\f0f3"; -$fa-var-bell-o: "\f0a2"; -$fa-var-bell-slash: "\f1f6"; -$fa-var-bell-slash-o: "\f1f7"; -$fa-var-bicycle: "\f206"; -$fa-var-binoculars: "\f1e5"; -$fa-var-birthday-cake: "\f1fd"; -$fa-var-bitbucket: "\f171"; -$fa-var-bitbucket-square: "\f172"; -$fa-var-bitcoin: "\f15a"; -$fa-var-black-tie: "\f27e"; -$fa-var-bold: "\f032"; -$fa-var-bolt: "\f0e7"; -$fa-var-bomb: "\f1e2"; -$fa-var-book: "\f02d"; -$fa-var-bookmark: "\f02e"; -$fa-var-bookmark-o: "\f097"; -$fa-var-briefcase: "\f0b1"; -$fa-var-btc: "\f15a"; -$fa-var-bug: "\f188"; -$fa-var-building: "\f1ad"; -$fa-var-building-o: "\f0f7"; -$fa-var-bullhorn: "\f0a1"; -$fa-var-bullseye: "\f140"; -$fa-var-bus: "\f207"; -$fa-var-buysellads: "\f20d"; -$fa-var-cab: "\f1ba"; -$fa-var-calculator: "\f1ec"; -$fa-var-calendar: "\f073"; -$fa-var-calendar-check-o: "\f274"; -$fa-var-calendar-minus-o: "\f272"; -$fa-var-calendar-o: "\f133"; -$fa-var-calendar-plus-o: "\f271"; -$fa-var-calendar-times-o: "\f273"; -$fa-var-camera: "\f030"; -$fa-var-camera-retro: "\f083"; -$fa-var-car: "\f1b9"; -$fa-var-caret-down: "\f0d7"; -$fa-var-caret-left: "\f0d9"; -$fa-var-caret-right: "\f0da"; -$fa-var-caret-square-o-down: "\f150"; -$fa-var-caret-square-o-left: "\f191"; -$fa-var-caret-square-o-right: "\f152"; -$fa-var-caret-square-o-up: "\f151"; -$fa-var-caret-up: "\f0d8"; -$fa-var-cart-arrow-down: "\f218"; -$fa-var-cart-plus: "\f217"; -$fa-var-cc: "\f20a"; -$fa-var-cc-amex: "\f1f3"; -$fa-var-cc-diners-club: "\f24c"; -$fa-var-cc-discover: "\f1f2"; -$fa-var-cc-jcb: "\f24b"; -$fa-var-cc-mastercard: "\f1f1"; -$fa-var-cc-paypal: "\f1f4"; -$fa-var-cc-stripe: "\f1f5"; -$fa-var-cc-visa: "\f1f0"; -$fa-var-certificate: "\f0a3"; -$fa-var-chain: "\f0c1"; -$fa-var-chain-broken: "\f127"; -$fa-var-check: "\f00c"; -$fa-var-check-circle: "\f058"; -$fa-var-check-circle-o: "\f05d"; -$fa-var-check-square: "\f14a"; -$fa-var-check-square-o: "\f046"; -$fa-var-chevron-circle-down: "\f13a"; -$fa-var-chevron-circle-left: "\f137"; -$fa-var-chevron-circle-right: "\f138"; -$fa-var-chevron-circle-up: "\f139"; -$fa-var-chevron-down: "\f078"; -$fa-var-chevron-left: "\f053"; -$fa-var-chevron-right: "\f054"; -$fa-var-chevron-up: "\f077"; -$fa-var-child: "\f1ae"; -$fa-var-chrome: "\f268"; -$fa-var-circle: "\f111"; -$fa-var-circle-o: "\f10c"; -$fa-var-circle-o-notch: "\f1ce"; -$fa-var-circle-thin: "\f1db"; -$fa-var-clipboard: "\f0ea"; -$fa-var-clock-o: "\f017"; -$fa-var-clone: "\f24d"; -$fa-var-close: "\f00d"; -$fa-var-cloud: "\f0c2"; -$fa-var-cloud-download: "\f0ed"; -$fa-var-cloud-upload: "\f0ee"; -$fa-var-cny: "\f157"; -$fa-var-code: "\f121"; -$fa-var-code-fork: "\f126"; -$fa-var-codepen: "\f1cb"; -$fa-var-coffee: "\f0f4"; -$fa-var-cog: "\f013"; -$fa-var-cogs: "\f085"; -$fa-var-columns: "\f0db"; -$fa-var-comment: "\f075"; -$fa-var-comment-o: "\f0e5"; -$fa-var-commenting: "\f27a"; -$fa-var-commenting-o: "\f27b"; -$fa-var-comments: "\f086"; -$fa-var-comments-o: "\f0e6"; -$fa-var-compass: "\f14e"; -$fa-var-compress: "\f066"; -$fa-var-connectdevelop: "\f20e"; -$fa-var-contao: "\f26d"; -$fa-var-copy: "\f0c5"; -$fa-var-copyright: "\f1f9"; -$fa-var-creative-commons: "\f25e"; -$fa-var-credit-card: "\f09d"; -$fa-var-crop: "\f125"; -$fa-var-crosshairs: "\f05b"; -$fa-var-css3: "\f13c"; -$fa-var-cube: "\f1b2"; -$fa-var-cubes: "\f1b3"; -$fa-var-cut: "\f0c4"; -$fa-var-cutlery: "\f0f5"; -$fa-var-dashboard: "\f0e4"; -$fa-var-dashcube: "\f210"; -$fa-var-database: "\f1c0"; -$fa-var-dedent: "\f03b"; -$fa-var-delicious: "\f1a5"; -$fa-var-desktop: "\f108"; -$fa-var-deviantart: "\f1bd"; -$fa-var-diamond: "\f219"; -$fa-var-digg: "\f1a6"; -$fa-var-dollar: "\f155"; -$fa-var-dot-circle-o: "\f192"; -$fa-var-download: "\f019"; -$fa-var-dribbble: "\f17d"; -$fa-var-dropbox: "\f16b"; -$fa-var-drupal: "\f1a9"; -$fa-var-edit: "\f044"; -$fa-var-eject: "\f052"; -$fa-var-ellipsis-h: "\f141"; -$fa-var-ellipsis-v: "\f142"; -$fa-var-empire: "\f1d1"; -$fa-var-envelope: "\f0e0"; -$fa-var-envelope-o: "\f003"; -$fa-var-envelope-square: "\f199"; -$fa-var-eraser: "\f12d"; -$fa-var-eur: "\f153"; -$fa-var-euro: "\f153"; -$fa-var-exchange: "\f0ec"; -$fa-var-exclamation: "\f12a"; -$fa-var-exclamation-circle: "\f06a"; -$fa-var-exclamation-triangle: "\f071"; -$fa-var-expand: "\f065"; -$fa-var-expeditedssl: "\f23e"; -$fa-var-external-link: "\f08e"; -$fa-var-external-link-square: "\f14c"; -$fa-var-eye: "\f06e"; -$fa-var-eye-slash: "\f070"; -$fa-var-eyedropper: "\f1fb"; -$fa-var-facebook: "\f09a"; -$fa-var-facebook-f: "\f09a"; -$fa-var-facebook-official: "\f230"; -$fa-var-facebook-square: "\f082"; -$fa-var-fast-backward: "\f049"; -$fa-var-fast-forward: "\f050"; -$fa-var-fax: "\f1ac"; -$fa-var-feed: "\f09e"; -$fa-var-female: "\f182"; -$fa-var-fighter-jet: "\f0fb"; -$fa-var-file: "\f15b"; -$fa-var-file-archive-o: "\f1c6"; -$fa-var-file-audio-o: "\f1c7"; -$fa-var-file-code-o: "\f1c9"; -$fa-var-file-excel-o: "\f1c3"; -$fa-var-file-image-o: "\f1c5"; -$fa-var-file-movie-o: "\f1c8"; -$fa-var-file-o: "\f016"; -$fa-var-file-pdf-o: "\f1c1"; -$fa-var-file-photo-o: "\f1c5"; -$fa-var-file-picture-o: "\f1c5"; -$fa-var-file-powerpoint-o: "\f1c4"; -$fa-var-file-sound-o: "\f1c7"; -$fa-var-file-text: "\f15c"; -$fa-var-file-text-o: "\f0f6"; -$fa-var-file-video-o: "\f1c8"; -$fa-var-file-word-o: "\f1c2"; -$fa-var-file-zip-o: "\f1c6"; -$fa-var-files-o: "\f0c5"; -$fa-var-film: "\f008"; -$fa-var-filter: "\f0b0"; -$fa-var-fire: "\f06d"; -$fa-var-fire-extinguisher: "\f134"; -$fa-var-firefox: "\f269"; -$fa-var-flag: "\f024"; -$fa-var-flag-checkered: "\f11e"; -$fa-var-flag-o: "\f11d"; -$fa-var-flash: "\f0e7"; -$fa-var-flask: "\f0c3"; -$fa-var-flickr: "\f16e"; -$fa-var-floppy-o: "\f0c7"; -$fa-var-folder: "\f07b"; -$fa-var-folder-o: "\f114"; -$fa-var-folder-open: "\f07c"; -$fa-var-folder-open-o: "\f115"; -$fa-var-font: "\f031"; -$fa-var-fonticons: "\f280"; -$fa-var-forumbee: "\f211"; -$fa-var-forward: "\f04e"; -$fa-var-foursquare: "\f180"; -$fa-var-frown-o: "\f119"; -$fa-var-futbol-o: "\f1e3"; -$fa-var-gamepad: "\f11b"; -$fa-var-gavel: "\f0e3"; -$fa-var-gbp: "\f154"; -$fa-var-ge: "\f1d1"; -$fa-var-gear: "\f013"; -$fa-var-gears: "\f085"; -$fa-var-genderless: "\f22d"; -$fa-var-get-pocket: "\f265"; -$fa-var-gg: "\f260"; -$fa-var-gg-circle: "\f261"; -$fa-var-gift: "\f06b"; -$fa-var-git: "\f1d3"; -$fa-var-git-square: "\f1d2"; -$fa-var-github: "\f09b"; -$fa-var-github-alt: "\f113"; -$fa-var-github-square: "\f092"; -$fa-var-gittip: "\f184"; -$fa-var-glass: "\f000"; -$fa-var-globe: "\f0ac"; -$fa-var-google: "\f1a0"; -$fa-var-google-plus: "\f0d5"; -$fa-var-google-plus-square: "\f0d4"; -$fa-var-google-wallet: "\f1ee"; -$fa-var-graduation-cap: "\f19d"; -$fa-var-gratipay: "\f184"; -$fa-var-group: "\f0c0"; -$fa-var-h-square: "\f0fd"; -$fa-var-hacker-news: "\f1d4"; -$fa-var-hand-grab-o: "\f255"; -$fa-var-hand-lizard-o: "\f258"; -$fa-var-hand-o-down: "\f0a7"; -$fa-var-hand-o-left: "\f0a5"; -$fa-var-hand-o-right: "\f0a4"; -$fa-var-hand-o-up: "\f0a6"; -$fa-var-hand-paper-o: "\f256"; -$fa-var-hand-peace-o: "\f25b"; -$fa-var-hand-pointer-o: "\f25a"; -$fa-var-hand-rock-o: "\f255"; -$fa-var-hand-scissors-o: "\f257"; -$fa-var-hand-spock-o: "\f259"; -$fa-var-hand-stop-o: "\f256"; -$fa-var-hdd-o: "\f0a0"; -$fa-var-header: "\f1dc"; -$fa-var-headphones: "\f025"; -$fa-var-heart: "\f004"; -$fa-var-heart-o: "\f08a"; -$fa-var-heartbeat: "\f21e"; -$fa-var-history: "\f1da"; -$fa-var-home: "\f015"; -$fa-var-hospital-o: "\f0f8"; -$fa-var-hotel: "\f236"; -$fa-var-hourglass: "\f254"; -$fa-var-hourglass-1: "\f251"; -$fa-var-hourglass-2: "\f252"; -$fa-var-hourglass-3: "\f253"; -$fa-var-hourglass-end: "\f253"; -$fa-var-hourglass-half: "\f252"; -$fa-var-hourglass-o: "\f250"; -$fa-var-hourglass-start: "\f251"; -$fa-var-houzz: "\f27c"; -$fa-var-html5: "\f13b"; -$fa-var-i-cursor: "\f246"; -$fa-var-ils: "\f20b"; -$fa-var-image: "\f03e"; -$fa-var-inbox: "\f01c"; -$fa-var-indent: "\f03c"; -$fa-var-industry: "\f275"; -$fa-var-info: "\f129"; -$fa-var-info-circle: "\f05a"; -$fa-var-inr: "\f156"; -$fa-var-instagram: "\f16d"; -$fa-var-institution: "\f19c"; -$fa-var-internet-explorer: "\f26b"; -$fa-var-intersex: "\f224"; -$fa-var-ioxhost: "\f208"; -$fa-var-italic: "\f033"; -$fa-var-joomla: "\f1aa"; -$fa-var-jpy: "\f157"; -$fa-var-jsfiddle: "\f1cc"; -$fa-var-key: "\f084"; -$fa-var-keyboard-o: "\f11c"; -$fa-var-krw: "\f159"; -$fa-var-language: "\f1ab"; -$fa-var-laptop: "\f109"; -$fa-var-lastfm: "\f202"; -$fa-var-lastfm-square: "\f203"; -$fa-var-leaf: "\f06c"; -$fa-var-leanpub: "\f212"; -$fa-var-legal: "\f0e3"; -$fa-var-lemon-o: "\f094"; -$fa-var-level-down: "\f149"; -$fa-var-level-up: "\f148"; -$fa-var-life-bouy: "\f1cd"; -$fa-var-life-buoy: "\f1cd"; -$fa-var-life-ring: "\f1cd"; -$fa-var-life-saver: "\f1cd"; -$fa-var-lightbulb-o: "\f0eb"; -$fa-var-line-chart: "\f201"; -$fa-var-link: "\f0c1"; -$fa-var-linkedin: "\f0e1"; -$fa-var-linkedin-square: "\f08c"; -$fa-var-linux: "\f17c"; -$fa-var-list: "\f03a"; -$fa-var-list-alt: "\f022"; -$fa-var-list-ol: "\f0cb"; -$fa-var-list-ul: "\f0ca"; -$fa-var-location-arrow: "\f124"; -$fa-var-lock: "\f023"; -$fa-var-long-arrow-down: "\f175"; -$fa-var-long-arrow-left: "\f177"; -$fa-var-long-arrow-right: "\f178"; -$fa-var-long-arrow-up: "\f176"; -$fa-var-magic: "\f0d0"; -$fa-var-magnet: "\f076"; -$fa-var-mail-forward: "\f064"; -$fa-var-mail-reply: "\f112"; -$fa-var-mail-reply-all: "\f122"; -$fa-var-male: "\f183"; -$fa-var-map: "\f279"; -$fa-var-map-marker: "\f041"; -$fa-var-map-o: "\f278"; -$fa-var-map-pin: "\f276"; -$fa-var-map-signs: "\f277"; -$fa-var-mars: "\f222"; -$fa-var-mars-double: "\f227"; -$fa-var-mars-stroke: "\f229"; -$fa-var-mars-stroke-h: "\f22b"; -$fa-var-mars-stroke-v: "\f22a"; -$fa-var-maxcdn: "\f136"; -$fa-var-meanpath: "\f20c"; -$fa-var-medium: "\f23a"; -$fa-var-medkit: "\f0fa"; -$fa-var-meh-o: "\f11a"; -$fa-var-mercury: "\f223"; -$fa-var-microphone: "\f130"; -$fa-var-microphone-slash: "\f131"; -$fa-var-minus: "\f068"; -$fa-var-minus-circle: "\f056"; -$fa-var-minus-square: "\f146"; -$fa-var-minus-square-o: "\f147"; -$fa-var-mobile: "\f10b"; -$fa-var-mobile-phone: "\f10b"; -$fa-var-money: "\f0d6"; -$fa-var-moon-o: "\f186"; -$fa-var-mortar-board: "\f19d"; -$fa-var-motorcycle: "\f21c"; -$fa-var-mouse-pointer: "\f245"; -$fa-var-music: "\f001"; -$fa-var-navicon: "\f0c9"; -$fa-var-neuter: "\f22c"; -$fa-var-newspaper-o: "\f1ea"; -$fa-var-object-group: "\f247"; -$fa-var-object-ungroup: "\f248"; -$fa-var-odnoklassniki: "\f263"; -$fa-var-odnoklassniki-square: "\f264"; -$fa-var-opencart: "\f23d"; -$fa-var-openid: "\f19b"; -$fa-var-opera: "\f26a"; -$fa-var-optin-monster: "\f23c"; -$fa-var-outdent: "\f03b"; -$fa-var-pagelines: "\f18c"; -$fa-var-paint-brush: "\f1fc"; -$fa-var-paper-plane: "\f1d8"; -$fa-var-paper-plane-o: "\f1d9"; -$fa-var-paperclip: "\f0c6"; -$fa-var-paragraph: "\f1dd"; -$fa-var-paste: "\f0ea"; -$fa-var-pause: "\f04c"; -$fa-var-paw: "\f1b0"; -$fa-var-paypal: "\f1ed"; -$fa-var-pencil: "\f040"; -$fa-var-pencil-square: "\f14b"; -$fa-var-pencil-square-o: "\f044"; -$fa-var-phone: "\f095"; -$fa-var-phone-square: "\f098"; -$fa-var-photo: "\f03e"; -$fa-var-picture-o: "\f03e"; -$fa-var-pie-chart: "\f200"; -$fa-var-pied-piper: "\f1a7"; -$fa-var-pied-piper-alt: "\f1a8"; -$fa-var-pinterest: "\f0d2"; -$fa-var-pinterest-p: "\f231"; -$fa-var-pinterest-square: "\f0d3"; -$fa-var-plane: "\f072"; -$fa-var-play: "\f04b"; -$fa-var-play-circle: "\f144"; -$fa-var-play-circle-o: "\f01d"; -$fa-var-plug: "\f1e6"; -$fa-var-plus: "\f067"; -$fa-var-plus-circle: "\f055"; -$fa-var-plus-square: "\f0fe"; -$fa-var-plus-square-o: "\f196"; -$fa-var-power-off: "\f011"; -$fa-var-print: "\f02f"; -$fa-var-puzzle-piece: "\f12e"; -$fa-var-qq: "\f1d6"; -$fa-var-qrcode: "\f029"; -$fa-var-question: "\f128"; -$fa-var-question-circle: "\f059"; -$fa-var-quote-left: "\f10d"; -$fa-var-quote-right: "\f10e"; -$fa-var-ra: "\f1d0"; -$fa-var-random: "\f074"; -$fa-var-rebel: "\f1d0"; -$fa-var-recycle: "\f1b8"; -$fa-var-reddit: "\f1a1"; -$fa-var-reddit-square: "\f1a2"; -$fa-var-refresh: "\f021"; -$fa-var-registered: "\f25d"; -$fa-var-remove: "\f00d"; -$fa-var-renren: "\f18b"; -$fa-var-reorder: "\f0c9"; -$fa-var-repeat: "\f01e"; -$fa-var-reply: "\f112"; -$fa-var-reply-all: "\f122"; -$fa-var-retweet: "\f079"; -$fa-var-rmb: "\f157"; -$fa-var-road: "\f018"; -$fa-var-rocket: "\f135"; -$fa-var-rotate-left: "\f0e2"; -$fa-var-rotate-right: "\f01e"; -$fa-var-rouble: "\f158"; -$fa-var-rss: "\f09e"; -$fa-var-rss-square: "\f143"; -$fa-var-rub: "\f158"; -$fa-var-ruble: "\f158"; -$fa-var-rupee: "\f156"; -$fa-var-safari: "\f267"; -$fa-var-save: "\f0c7"; -$fa-var-scissors: "\f0c4"; -$fa-var-search: "\f002"; -$fa-var-search-minus: "\f010"; -$fa-var-search-plus: "\f00e"; -$fa-var-sellsy: "\f213"; -$fa-var-send: "\f1d8"; -$fa-var-send-o: "\f1d9"; -$fa-var-server: "\f233"; -$fa-var-share: "\f064"; -$fa-var-share-alt: "\f1e0"; -$fa-var-share-alt-square: "\f1e1"; -$fa-var-share-square: "\f14d"; -$fa-var-share-square-o: "\f045"; -$fa-var-shekel: "\f20b"; -$fa-var-sheqel: "\f20b"; -$fa-var-shield: "\f132"; -$fa-var-ship: "\f21a"; -$fa-var-shirtsinbulk: "\f214"; -$fa-var-shopping-cart: "\f07a"; -$fa-var-sign-in: "\f090"; -$fa-var-sign-out: "\f08b"; -$fa-var-signal: "\f012"; -$fa-var-simplybuilt: "\f215"; -$fa-var-sitemap: "\f0e8"; -$fa-var-skyatlas: "\f216"; -$fa-var-skype: "\f17e"; -$fa-var-slack: "\f198"; -$fa-var-sliders: "\f1de"; -$fa-var-slideshare: "\f1e7"; -$fa-var-smile-o: "\f118"; -$fa-var-soccer-ball-o: "\f1e3"; -$fa-var-sort: "\f0dc"; -$fa-var-sort-alpha-asc: "\f15d"; -$fa-var-sort-alpha-desc: "\f15e"; -$fa-var-sort-amount-asc: "\f160"; -$fa-var-sort-amount-desc: "\f161"; -$fa-var-sort-asc: "\f0de"; -$fa-var-sort-desc: "\f0dd"; -$fa-var-sort-down: "\f0dd"; -$fa-var-sort-numeric-asc: "\f162"; -$fa-var-sort-numeric-desc: "\f163"; -$fa-var-sort-up: "\f0de"; -$fa-var-soundcloud: "\f1be"; -$fa-var-space-shuttle: "\f197"; -$fa-var-spinner: "\f110"; -$fa-var-spoon: "\f1b1"; -$fa-var-spotify: "\f1bc"; -$fa-var-square: "\f0c8"; -$fa-var-square-o: "\f096"; -$fa-var-stack-exchange: "\f18d"; -$fa-var-stack-overflow: "\f16c"; -$fa-var-star: "\f005"; -$fa-var-star-half: "\f089"; -$fa-var-star-half-empty: "\f123"; -$fa-var-star-half-full: "\f123"; -$fa-var-star-half-o: "\f123"; -$fa-var-star-o: "\f006"; -$fa-var-steam: "\f1b6"; -$fa-var-steam-square: "\f1b7"; -$fa-var-step-backward: "\f048"; -$fa-var-step-forward: "\f051"; -$fa-var-stethoscope: "\f0f1"; -$fa-var-sticky-note: "\f249"; -$fa-var-sticky-note-o: "\f24a"; -$fa-var-stop: "\f04d"; -$fa-var-street-view: "\f21d"; -$fa-var-strikethrough: "\f0cc"; -$fa-var-stumbleupon: "\f1a4"; -$fa-var-stumbleupon-circle: "\f1a3"; -$fa-var-subscript: "\f12c"; -$fa-var-subway: "\f239"; -$fa-var-suitcase: "\f0f2"; -$fa-var-sun-o: "\f185"; -$fa-var-superscript: "\f12b"; -$fa-var-support: "\f1cd"; -$fa-var-table: "\f0ce"; -$fa-var-tablet: "\f10a"; -$fa-var-tachometer: "\f0e4"; -$fa-var-tag: "\f02b"; -$fa-var-tags: "\f02c"; -$fa-var-tasks: "\f0ae"; -$fa-var-taxi: "\f1ba"; -$fa-var-television: "\f26c"; -$fa-var-tencent-weibo: "\f1d5"; -$fa-var-terminal: "\f120"; -$fa-var-text-height: "\f034"; -$fa-var-text-width: "\f035"; -$fa-var-th: "\f00a"; -$fa-var-th-large: "\f009"; -$fa-var-th-list: "\f00b"; -$fa-var-thumb-tack: "\f08d"; -$fa-var-thumbs-down: "\f165"; -$fa-var-thumbs-o-down: "\f088"; -$fa-var-thumbs-o-up: "\f087"; -$fa-var-thumbs-up: "\f164"; -$fa-var-ticket: "\f145"; -$fa-var-times: "\f00d"; -$fa-var-times-circle: "\f057"; -$fa-var-times-circle-o: "\f05c"; -$fa-var-tint: "\f043"; -$fa-var-toggle-down: "\f150"; -$fa-var-toggle-left: "\f191"; -$fa-var-toggle-off: "\f204"; -$fa-var-toggle-on: "\f205"; -$fa-var-toggle-right: "\f152"; -$fa-var-toggle-up: "\f151"; -$fa-var-trademark: "\f25c"; -$fa-var-train: "\f238"; -$fa-var-transgender: "\f224"; -$fa-var-transgender-alt: "\f225"; -$fa-var-trash: "\f1f8"; -$fa-var-trash-o: "\f014"; -$fa-var-tree: "\f1bb"; -$fa-var-trello: "\f181"; -$fa-var-tripadvisor: "\f262"; -$fa-var-trophy: "\f091"; -$fa-var-truck: "\f0d1"; -$fa-var-try: "\f195"; -$fa-var-tty: "\f1e4"; -$fa-var-tumblr: "\f173"; -$fa-var-tumblr-square: "\f174"; -$fa-var-turkish-lira: "\f195"; -$fa-var-tv: "\f26c"; -$fa-var-twitch: "\f1e8"; -$fa-var-twitter: "\f099"; -$fa-var-twitter-square: "\f081"; -$fa-var-umbrella: "\f0e9"; -$fa-var-underline: "\f0cd"; -$fa-var-undo: "\f0e2"; -$fa-var-university: "\f19c"; -$fa-var-unlink: "\f127"; -$fa-var-unlock: "\f09c"; -$fa-var-unlock-alt: "\f13e"; -$fa-var-unsorted: "\f0dc"; -$fa-var-upload: "\f093"; -$fa-var-usd: "\f155"; -$fa-var-user: "\f007"; -$fa-var-user-md: "\f0f0"; -$fa-var-user-plus: "\f234"; -$fa-var-user-secret: "\f21b"; -$fa-var-user-times: "\f235"; -$fa-var-users: "\f0c0"; -$fa-var-venus: "\f221"; -$fa-var-venus-double: "\f226"; -$fa-var-venus-mars: "\f228"; -$fa-var-viacoin: "\f237"; -$fa-var-video-camera: "\f03d"; -$fa-var-vimeo: "\f27d"; -$fa-var-vimeo-square: "\f194"; -$fa-var-vine: "\f1ca"; -$fa-var-vk: "\f189"; -$fa-var-volume-down: "\f027"; -$fa-var-volume-off: "\f026"; -$fa-var-volume-up: "\f028"; -$fa-var-warning: "\f071"; -$fa-var-wechat: "\f1d7"; -$fa-var-weibo: "\f18a"; -$fa-var-weixin: "\f1d7"; -$fa-var-whatsapp: "\f232"; -$fa-var-wheelchair: "\f193"; -$fa-var-wifi: "\f1eb"; -$fa-var-wikipedia-w: "\f266"; -$fa-var-windows: "\f17a"; -$fa-var-won: "\f159"; -$fa-var-wordpress: "\f19a"; -$fa-var-wrench: "\f0ad"; -$fa-var-xing: "\f168"; -$fa-var-xing-square: "\f169"; -$fa-var-y-combinator: "\f23b"; -$fa-var-y-combinator-square: "\f1d4"; -$fa-var-yahoo: "\f19e"; -$fa-var-yc: "\f23b"; -$fa-var-yc-square: "\f1d4"; -$fa-var-yelp: "\f1e9"; -$fa-var-yen: "\f157"; -$fa-var-youtube: "\f167"; -$fa-var-youtube-play: "\f16a"; -$fa-var-youtube-square: "\f166"; - diff --git a/elgg_clean/bower_components/font-awesome/scss/font-awesome.scss b/elgg_clean/bower_components/font-awesome/scss/font-awesome.scss deleted file mode 100644 index ebd9646c..00000000 --- a/elgg_clean/bower_components/font-awesome/scss/font-awesome.scss +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables"; -@import "mixins"; -@import "path"; -@import "core"; -@import "larger"; -@import "fixed-width"; -@import "list"; -@import "bordered-pulled"; -@import "animated"; -@import "rotated-flipped"; -@import "stacked"; -@import "icons"; diff --git a/elgg_clean/bower_components/fuelux/.bower.json b/elgg_clean/bower_components/fuelux/.bower.json deleted file mode 100644 index c3812354..00000000 --- a/elgg_clean/bower_components/fuelux/.bower.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "fuelux", - "description": "Extending Bootstrap with additional lightweight JavaScript controls.", - "keywords": [ - "application", - "bootstrap", - "controls", - "css", - "exacttarget", - "front-end", - "fuelux", - "fuel ux", - "js", - "salesforce", - "user interface", - "web" - ], - "homepage": "http://getfuelux.com", - "dependencies": { - "jquery": "latest", - "requirejs": "2.x", - "bootstrap": "3.x", - "moment": "^2.10.6" - }, - "devDependencies": { - "jquery": null, - "jquery-1.9.1": "jquery#1.9.1", - "qunit": "1.x", - "requirejs-text": "2.x", - "underscore": "1.x", - "blanket": "1.x" - }, - "ignore": [ - "**/.*", - "_*", - "*.yml", - "BACKLOG.md", - "data.js", - "dev", - "devserver.js", - "dist/fuelux.zip", - "Gruntfile.js", - "index.css", - "index.html", - "index.js", - "node_modules", - "Procfile", - "test" - ], - "license": "BSD-3-Clause", - "main": [ - "dist/css/fuelux.css", - "dist/js/fuelux.js", - "dist/fonts/fuelux.eot", - "dist/fonts/fuelux.svg", - "dist/fonts/fuelux.ttf", - "dist/fonts/fuelux.woff" - ], - "version": "3.11.4", - "_release": "3.11.4", - "_resolution": { - "type": "version", - "tag": "3.11.4", - "commit": "5b0e10da9ef36e49e08f3219d599f44280b938ce" - }, - "_source": "git://github.com/ExactTarget/fuelux.git", - "_target": "~3.11.4", - "_originalSource": "fuelux", - "_direct": true -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/CNAME b/elgg_clean/bower_components/fuelux/CNAME deleted file mode 100644 index 4590a314..00000000 --- a/elgg_clean/bower_components/fuelux/CNAME +++ /dev/null @@ -1 +0,0 @@ -getfuelux.com diff --git a/elgg_clean/bower_components/fuelux/DETAILS.md b/elgg_clean/bower_components/fuelux/DETAILS.md deleted file mode 100644 index 13f82b51..00000000 --- a/elgg_clean/bower_components/fuelux/DETAILS.md +++ /dev/null @@ -1,189 +0,0 @@ -Additional details to supplement the brief nature of the README file. - -## Table of contents - - * [Using Fuel UX](#using-fuel-ux) - * [Downloading code](#downloading-code) - * [AMD support](#amd-support) - * [Compiling code](#compiling-code) - * [Running docs locally](#running-docs-locally) - * [Contributors](#contributors) - * [Travis CI](#travis-ci) - -## Using Fuel UX - -Fuel UX can be applied to a section of your your HTML or the entire page by adding the `fuelux` wrapper class (eg. [checkbox](http://getfuelux.com/javascript.html#checkbox)): - -```html -<body class="fuelux"> -<!-- .... --> -<div class="checkbox"> - <label class="checkbox-custom" data-initialize="checkbox" id="myCustomCheckbox"> - <input class="sr-only" type="checkbox" value=""> - <span class="checkbox-label">Custom checkbox unchecked on page load</span> - </label> -</div> -<!-- .... --> -</body> -``` - -## Downloading code -Fuel UX can be obtained in any of the following ways: - -* Request files from [the Fuel UX CDN](http://www.fuelcdn.com/fuelux/3.11.3/) -* Using [Bower](https://github.com/bower/bower) (ensures you get all the [dependencies](#dependencies)): - - ``` - bower install fuelux - ``` - Update with `bower update fuelux`. - -* Using [Volo](https://github.com/volojs/volo) (ensures you get all the [dependencies](#dependencies)): - - ``` - volo add fuelux - - ``` - Update with `volo add -f fuelux`. - -* Clone the Git repository: - ``` - git clone https://github.com/ExactTarget/fuelux/ - ``` - - Cloning the repository ensures you can apply future updates to Fuel UX easily, but requires to you manage its [dependencies](#dependencies) on your own. - -* Download a .zip archive of the [latest release](http://www.fuelcdn.com/fuelux/3.11.3/fuelux.zip). - -## AMD support - -We recommend only loading the controls you need (eg `fuelux/checkbox`). - -If using AMD (such as [RequireJS](http://requirejs.org)), reference the FuelUX directory in your paths configuration, wherever it is located: -```javascript -require.config({ - paths: { - 'fuelux': 'http://www.fuelcdn.com/fuelux/3.11.3/' - //... - } -}); -``` -Then list any individual fuel ux controls needed as dependencies within your application modules: -```javascript -define(function(require) { - var spinbox = require('fuelux/spinbox'); - //... -}); -``` -In instances where you require every module from Fuel UX, you can use `fuelux/all` instead of listing each module individually. - -Fuel UX also supports placing components in their own `<script>` tags. Be sure to [check component dependencies in the controls documentation](http://getfuelux.com/javascript.html) and put modules in the correct order if you load them in this method. Errors will appear in the console if you have not loaded dependencies correctly ((Repeater)[http://getfuelux.com/javascript.html#repeater-dependencies] and [Scheduler](http://getfuelux.com/javascript.html#scheduler-dependencies) are the only components with dependencies currently). - -## Compiling code - -Fuel UX is lightweight to give you a fast dependable foundation to build upon. It uses [Grunt](http://gruntjs.com/) with convenient methods for working with the library. It's how we compile our code, run tests, and more. To use it, install the required dependencies as directed, and then run some Grunt tasks. - -### Install grunt - -From the command line: - -1. Install `grunt-cli` globally with `npm install -g grunt-cli`. -2. Make sure you're in the root of the fuel directory, then run `npm install`. npm will look at [package.json](https://github.com/exacttarget/fuelux/blob/master/package.json) and automatically install the necessary local dependencies listed there. Finally, run `bower install` to install front-end dependencies. - -When completed, you'll be able to run the various Grunt commands provided from the command line. - -**Unfamiliar with npm? Don't have node installed?** npm stands for [node packaged modules](http://npmjs.org/) and is a way to manage development dependencies through node.js. [Download and install node.js](http://nodejs.org/download/) before proceeding. - -### Grunt tasks - -Run `grunt --help` or [check out the Gruntfile](https://github.com/ExactTarget/fuelux/blob/master/Gruntfile.js) to see all possible grunt tasks. When contributing, these are the grunt tasks you will be most likely to use: - -#### Testing - `grunt` -Runs JSHint and full suite of QUnit tests. - -#### Serving - `grunt serve` -Starts a watch server for automated javascript validation and basic tests (JSHint, simplified QUnit) allowing for visual review of tests at http://localhost:8000/test/. - -#### Compiling - `grunt release` -_If you have forked the repo for personal use, you will also find this task useful._ - -This builds the dist directory (compiling your CSS and JS). If you are going to issue a pull request, you should not include changes to the dist directory that are generated from this grunt task. - -### Troubleshooting dependencies - -Should you encounter problems with installing dependencies or running Grunt commands, uninstall all previous dependency versions (global and local). Then, rerun `npm install`. - -## Running docs locally - -1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v2.3.x). - - **Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems. -2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`. -3. From the root `/fuelux` directory, run `jekyll serve` in the command line. -4. Open <http://localhost:9001> in your browser, and voilà. - -Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/). - -## Contributors - -Giving credit where credit is due. - -|Major Contributors (a-z) | | -|:----|----:| -|Adam Alexander |[](http://twitter.com/adamalex) [](http://github.com/adamalex) | -|Matt Beard |[](http://github.com/mbeard) | -|Bryan Kohlmeier |[](http://github.com/bkohlmeier) | -|Dustin McCormick | [](http://twitter.com/djmccormick) [](http://github.com/djmccormick)| -|Christopher McCulloh | [](http://twitter.com/cmcculloh) [](http://github.com/cmcculloh) [](http://github.com/cormacmccarthy)| -|Scott Plumlee | [](http://twitter.com/scottplumlee) [](http://github.com/plumlee)| -|Marvin Pribble | [](http://github.com/marvinpribble)| -|Ryan Moore | [](http://github.com/rbmoore)| -|Steven Rogers | [](http://github.com/soldoutactivist)| -|*Alex Vernacchia (current)* | [](http://twitter.com/vernacchia) [](http://github.com/vernak2539)| -|*David Waltz (current)* | [](http://github.com/dwaltz)| - -## Travis CI - -Pull requests are validate via [Travis CI](https://travis-ci.org/). - -Periodically pull requests may fail Travis CI build integration testing with a false negative. If you suspect this is the case you can restart the test via the command line. - -[Travis](https://travis-ci.org/) downloads the `node_modules` folder from the "[Edge](https://fuelux-dev.herokuapp.com)" server (["fuelux-dev"](https://fuelux-dev.herokuapp.com)) hosted on [Heroku](https://www.heroku.com). If you add or update a dependency in `package.json`, you will need to also update `package.json` in `master` locally and push it to [Heroku](https://www.heroku.com) for the dependency errors to be resolved in [Travis](https://travis-ci.org/). - -### Install Travis CI Client - -Travis requires ruby and the [appropriate ruby gem](https://github.com/travis-ci/travis.rb#installation). - -### Restarting a Travis CI Build -#### From the Browser -1. On the Pull Request page on Github, click on the "details" link in the Travis CI build area -1. Click "Login with Github" at the top right of the page -1. Click the "Restart Build" button (circular button with an arrow going in a circle) - - -#### From the Command Line -1. Login to Travis - In the terminal, issue the following command (You'll need to use your Github credentials): - ``` - travis login --org - ``` -1. Acquire build number - In the terminal, issue the following command: - ``` - travis history - ``` - -1. Restart Build using the build number you obtained from `travis history` - In the terminal, issue the following command: - ``` - travis restart 9999 - ``` - -## Edge servers - -We have an "Edge Server" on Heroku named "fuelux-dev". If you have permissions to the ExactTarget org on Heroku, you can get information on cloning the `fuelux-dev` remote from its [app page](https://dashboard.heroku.com/orgs/exacttarget/apps/fuelux-dev/deploy/heroku-git) on [Heroku](https://www.heroku.com). If you do not have permissions and believe you should, please contact one of the FuelUX project maintainers. - -A build of master is available at `https://fuelux-dev.herokuapp.com/dist/js/fuelux.js` and `https://fuelux-dev.herokuapp.com/dist/css/fuelux.css`. - -_These files should be considered unstable as this is our dev server_ - -To create your own edge server, setup a github web hook on Heroku for this repository and put the app into development mode with `heroku config:set NPM_CONFIG_PRODUCTION=false`. diff --git a/elgg_clean/bower_components/fuelux/LICENSE b/elgg_clean/bower_components/fuelux/LICENSE deleted file mode 100644 index f25dfec4..00000000 --- a/elgg_clean/bower_components/fuelux/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2014 ExactTarget, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the -following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following - disclaimer. - - 2. 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. - - 3. Neither the name of the copyright holder nor the names of its 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 HOLDER 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. - -==================================================================== diff --git a/elgg_clean/bower_components/fuelux/README.md b/elgg_clean/bower_components/fuelux/README.md deleted file mode 100644 index 607d36ca..00000000 --- a/elgg_clean/bower_components/fuelux/README.md +++ /dev/null @@ -1,146 +0,0 @@ -#[Fuel UX](http://getfuelux.com/) -[](https://fuelux-slack.herokuapp.com/) -[](http://badge.fury.io/bo/fuelux) -[](https://www.npmjs.com/package/fuelux) -[](http://travis-ci.org/ExactTarget/fuelux) -[](https://david-dm.org/exacttarget/fuelux#info=devDependencies) - -[](https://saucelabs.com/u/fuelux) - -Fuel UX extends [Bootstrap 3](https://github.com/twbs/bootstrap) with additional lightweight JavaScript controls. It is actively maintained by [members of Salesforce Marketing Cloud,](https://github.com/orgs/ExactTarget/people) with the support and involvement of the community. - -To get started, check out <http://getfuelux.com>! - -## Table of contents - - * [Quick start](#quick-start) - * [Bugs and feature requests](#bugs-and-feature-requests) - * [Documentation](#documentation) - * [Contributing](#contributing) - * [Developing](#developing) - * [Community](#community) - * [Copyright and license](#copyright-and-license) - -## Quick start - -Fuel UX can be used with an existing page via CDN or installed in a project. - -Read the [Getting started page](http://getfuelux.com/getting-started.html) for more detailed information on the framework contents, templates, examples, and more. - -### Use - -Add `fuelux` class to the portion of the page using Fuel UX as seen [here](https://github.com/exacttarget/fuelux/blob/master/DETAILS.md#using-fuel-ux). - -Ensure all the dependencies are included on the page (eg, such as using the CDN as shown below). -``` -<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet"> -<link href="//www.fuelcdn.com/fuelux/3.11.3/css/fuelux.min.css" rel="stylesheet"> - -<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.js"></script> -<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.1/js/bootstrap.min.js"></script> -<script src="//www.fuelcdn.com/fuelux/3.11.3/js/fuelux.min.js"></script> - -``` - -### Install -A few ways available to install. - -- Request files from [the Fuel UX CDN](http://www.fuelcdn.com/fuelux/3.11.3/) -- Install with [NPM](https://www.npmjs.com/package/fuelux): `npm install fuelux`. -- [Download the latest release](https://github.com/exacttarget/fuelux/archive/3.4.0.zip). -- Clone the repo: `git clone https://github.com/exacttarget/fuelux.git`. -- Install with [Bower](http://bower.io): `bower install fuelux`. -- Install with [Volo](https://github.com/volojs/volo): `volo add fuelux`. - -More details for the above can be found [here](https://github.com/exacttarget/fuelux/blob/master/DETAILS.md#downloading-code). - -#### What's included - -Downloading the zip of FuelUX provides the following directories and files, which are grouped according to file type: -``` -fuelux/ -├── css/ -│ ├── fuelux.css -│ ├── fuelux.min.css -├── js/ -│ ├── fuelux.js -│ └── fuelux.min.js -└── fonts/ - ├── fuelux.eot - ├── fuelux.svg - ├── fuelux.ttf - └── fuelux.woff -``` -We provide compiled CSS and JS (like `fuelux.*`), as well as compiled and minified CSS and JS (like `fuelux.min.*`) in the `dist` folder. Supporting icons are provided as fonts. - -### Dependencies -Fuel UX is dependent upon [Bootstrap 3](https://github.com/twbs/bootstrap) and [jQuery](https://github.com/jquery/jquery). If you installed by cloning the repo or by downloading a .zip archive, you'll also want to grab these things, as it won't work without them. -- [jQuery](https://github.com/jquery/jquery) -- [Bootstrap 3](https://github.com/twbs/bootstrap) - -For other methods of managing dependencies consider [AMD support via require](https://github.com/exacttarget/fuelux/blob/master/DETAILS.md#umd/amd-support). - -## Bugs and Feature Requests - -Have a bug or a feature request? Please first review the [open issues](https://github.com/ExactTarget/fuelux/issues), then search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/ExactTarget/fuelux/issues/new). - -For additional assistance connect with the [community](#community). - -## Documentation - -Fuel UX documentation is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at <http://getfuelux.com>. More details on seting up Jekyll and running docs locally can be found [here](https://github.com/exacttarget/fuelux/blob/master/DETAILS.md#running-docs-locally). - -### Previous releases - -[Documentation for v2.6](http://getfuelux.com/2.6/) has been made available for the time being while folks transition to Bootstrap 3. You can download 2.6 updates (bug fixes only) from the [fuelux2 branch](https://github.com/ExactTarget/fuelux/tree/fuelux2). - -## Contributing -Before writing code, we suggest you [search for issues](https://github.com/ExactTarget/fuelux/issues?state=open) or [create a new one](https://github.com/ExactTarget/fuelux/issues/new) to confirm where your contribution fits into -our roadmap. - -Please do not edit or commit files in the `dist` directory. You'll find source files in the respective `js`, `less`, and `fonts` directory. Project maintainers will commit files in the `dist` directory from time to time. Details on compiling CSS and JavasScript can be found [here](https://github.com/exacttarget/fuelux/blob/master/DETAILS.md#compiling-code). - -Prior to submitting a pull request, please run `grunt` to lint & test your code. All pull requests are validated via [Travis CI](https://travis-ci.org/). If the tests fail unexpectedly feel free to [trigger a restart](https://github.com/exacttarget/fuelux/blob/master/DETAILS.md#travis-ci). - -Take care to maintain the existing coding style (tabs, clarity over brevity, declarative markup, semicolons, etc). - -Please review the [Salesforce Marketing Cloud style guide](https://github.com/ExactTarget/javascript) if you have any questions. - -## Developing - -Be sure to add unit tests for any new or changed functionality. - -To serve the test page and lint your changes run `grunt serve` while developing. View the test page at [http://localhost:8000/test/](http://localhost:8000/test/). The `serve` task will run lint and unit tests against saved code. - -While grunt can run the included unit tests via PhantomJS, this isn't a substitute for running tests across a variety of browsers and environments. Please be sure to test in as many of the browsers listed in `sauce_browsers.yml` as you can before contributing. - -Read more about [contributing to FuelUX](https://github.com/ExactTarget/fuelux/wiki/Contributing-to-Fuel-UX) - -## Community - -Keep track of development and community news. - -- Fuel UX, API's, and building with other Salesforce Marketing Cloud products visit [Code@](https://code.exacttarget.com/). -- Implementation help may be found at Stack Overflow (tagged [`fuelux`](http://stackoverflow.com/questions/tagged/fuelux)). -- Follow [@FuelUX on Twitter](https://twitter.com/fuelux). - -### Philosophy -Our aim is to provide a suite of related but independent projects that help web developers integrate, manage, and customize quality libraries and utilities to more efficiently develop, maintain, test, and distribute their projects. Any improvements or fixes we make to the open source projects, we use will be contributed upstream if they are useful to the rest of the community. - -|Project Maintainers (a-z) | | -|:----|----:| -|Stephen James | [](http://twitter.com/tweetllama) [](http://github.com/interactivellama)| -|Christopher McCulloh | [](http://twitter.com/cmcculloh) [](http://github.com/cmcculloh) [](http://github.com/cormacmccarthy)| -|Kevin Parkerson | [](http://twitter.com/kevinparkerson) [](http://github.com/kevinparkerson)| -|Stephen Williams | [](http://twitter.com/swilliamsui) [](http://github.com/swilliamset)| -|Dave Woodward | [](http://twitter.com/futuremint) [](http://github.com/futuremint)| - -Special thanks to [major contributors](https://github.com/exacttarget/fuelux/blob/master/DETAILS.md#contributors) and [active contributors](https://github.com/ExactTarget/fuelux/graphs/contributors). - -And thank you to all those that have submitted issues and contributed to this library. - -## Copyright and License - -Copyright © 2012-2014 Salesforce Marketing Cloud, Inc. - -View [BSD-3 license](https://github.com/ExactTarget/fuelux/blob/master/LICENSE). diff --git a/elgg_clean/bower_components/fuelux/bower.json b/elgg_clean/bower_components/fuelux/bower.json deleted file mode 100644 index 7a70fa7e..00000000 --- a/elgg_clean/bower_components/fuelux/bower.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "fuelux", - "description": "Extending Bootstrap with additional lightweight JavaScript controls.", - "keywords": [ - "application", - "bootstrap", - "controls", - "css", - "exacttarget", - "front-end", - "fuelux", - "fuel ux", - "js", - "salesforce", - "user interface", - "web" - ], - "homepage": "http://getfuelux.com", - "dependencies": { - "jquery": "latest", - "requirejs": "2.x", - "bootstrap": "3.x", - "moment": "^2.10.6" - }, - "devDependencies": { - "jquery": null, - "jquery-1.9.1": "jquery#1.9.1", - "qunit": "1.x", - "requirejs-text": "2.x", - "underscore": "1.x", - "blanket": "1.x" - }, - "ignore": [ - "**/.*", - "_*", - "*.yml", - "BACKLOG.md", - "data.js", - "dev", - "devserver.js", - "dist/fuelux.zip", - "Gruntfile.js", - "index.css", - "index.html", - "index.js", - "node_modules", - "Procfile", - "test" - ], - "license": "BSD-3-Clause", - "main": [ - "dist/css/fuelux.css", - "dist/js/fuelux.js", - "dist/fonts/fuelux.eot", - "dist/fonts/fuelux.svg", - "dist/fonts/fuelux.ttf", - "dist/fonts/fuelux.woff" - ] -} diff --git a/elgg_clean/bower_components/fuelux/dist/css/fuelux.css b/elgg_clean/bower_components/fuelux/dist/css/fuelux.css deleted file mode 100644 index fd142fcf..00000000 --- a/elgg_clean/bower_components/fuelux/dist/css/fuelux.css +++ /dev/null @@ -1,3031 +0,0 @@ -/*! - * Fuel UX v3.11.4 - * Copyright 2012-2015 ExactTarget - * Licensed under the BSD-3-Clause license (https://github.com/ExactTarget/fuelux/blob/master/LICENSE) - */ - -@charset "UTF-8"; -.clearfix { - *zoom: 1; -} -.clearfix:before, -.clearfix:after { - display: table; - content: ""; - line-height: 0; -} -.clearfix:after { - clear: both; -} -@font-face { - font-family: "fuelux"; - src: url("../fonts/fuelux.eot"); - src: url("../fonts/fuelux.eot?#iefix") format("embedded-opentype"), url(data:font-woff;base64,d09GRk9UVE8AAAUUAAsAAAAABuAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAAAegAAAIisWS2RkZGVE0AAALwAAAAGQAAABxvEtzhR0RFRgAAAwwAAAAdAAAAIAA4AARPUy8yAAADLAAAAEoAAABgL7lMbGNtYXAAAAN4AAAAPAAAAUrAGiK3aGVhZAAAA7QAAAAvAAAANgDSVuNoaGVhAAAD5AAAABwAAAAkBCkCA2htdHgAAAQAAAAAGgAAABoHmgL4bWF4cAAABBwAAAAGAAAABgALUABuYW1lAAAEJAAAAN0AAAF3kxoWmXBvc3QAAAUEAAAAEAAAACAAAwABeJw90M9rE0EUB/D30uzusLtuNTqiGIs/+gt6ifVHtgfRHqQHLTYumEsrpSSWRVNozNJc2t6S2K2bBATbS0tLe9jDUlJ6aS85hFT8H6SCFPwTZiCIbpnq6fMe8+Y7j0GIRgERlbdO9r1TBIwAwijvi/D+Ln4tuqqjq3e5erRHhetW7I/r/i90xfN4ndelOHztjgNcjMP3S3HQ41iIgX4WQ6AbrsJN6IUhGIYReApjMA6WM2c/SyQSgnuCYcF9wQPBQ8EjQVJgCkbEvudbA2AZK/gRV9DFVfyEHlaxBhpiJPlk7GX6TebdhxWDDfEb9JbaGezI9Laa74zTOyqTn9O7KosFtFdlg0ymfeE5e0X7VTZaogOqwXz+OOwM/pqbZz2vs+VwyGC/2YXwjsGWf4YBxrdfYZjhMT9M/veQwU7ZHD3MNianstmpyUb28KjROOox+OcrLnV1Nfysy0AQ6YD5Yjpf+jJxLB0Eza2WR0zFruSW5otEq7W2m3v7pJ2SFvKLubJNNPvAaVZa5ET27LXcxjzRkopVS29n9ki7Le0s+ItBmWjHE9KMnXasCjlRAs9f290gWskqpGczJNWWNnfW/WpAtB9Kq9Qs7M+SVErKb+bW7SrRgpmttGcRU64ES35xl2h/Ac9Ys4h4nGNgYGBkAILzccd+gelbXJ9hNABYswg7AAAAeJxjYGRgYOADYgkGEGBiYARCLiBmAfMYAAS4AD0AAAB4nGNgZmJgnMDAysDB6MOYxsDA4A6lvzJIMrQwMDAxsHIywIEAgskQkOaawuDwgOEBJ+OD/w8Y9Bj//v8LFGaEK1AAQkYALokNlwAAeJxjYGBgZoBgGQZGBhBwAfIYwXwWBg0gzQakGRmYGBgecP7/D1LwgAFEKzBC1QMBIxsDgjNCAQBlrAaweJxjYGRgYADiH2cX2sfz23xl4GZiAIHzt7g+w2lmBmbGv4x/gVwOBrA0AFSyC6wAeJxjYGRgYPzLwMCgx8QAAkA2IwMqYAIANwYCMQIAAAACAAADARUBhwGDAQ8AWAADAAMAXACnAAAAAFAAAAsAAHicbY49asNAEIU/2bJMsEmX1JsipYS0BAwuU/gAKdy7WAuDkPDagtzDkD5djpED5AQ5TZ7kKVJ4l9n59vHmB1jyQcJwEjLujSfMeTae8sTROJXn03jGgm/jTPdXziS9k7IcqwaeqOOD8ZRXcuNUnovxjEe+jDPpP+zpCTR632Hfh6ZXfpNUS2rYEfUNdd/sBBs6Ws5jjnIEHJ6CUnmt+N/sqnitsVJ4eSpe1KJrz5su1sH5onRrdx0p8Pkq92Uly82VtpIiJw7jCk7NhrFsQzwdutZVRXm78A9U7zY2AAAAeJxjYGZABowMaAAAAI4ABQ==) format("woff"), url("../fonts/fuelux.ttf") format("truetype"), url("../fonts/fuelux.svg#fuelux") format("svg"); - font-weight: normal; - font-style: normal; -} -.fuelux [class^="fueluxicon-"]:before, -.fuelux [class*=" fueluxicon-"]:before { - font-family: "fuelux" !important; - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - line-height: 1; - speak: none; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.fuelux .fueluxicon-loader-full:before { - content: "\e000"; -} -.fuelux .fueluxicon-loader-1:before { - content: "\e001"; -} -.fuelux .fueluxicon-loader-2:before { - content: "\e002"; -} -.fuelux .fueluxicon-loader-3:before { - content: "\e003"; -} -.fuelux .fueluxicon-loader-4:before { - content: "\e004"; -} -.fuelux .fueluxicon-loader-5:before { - content: "\e005"; -} -.fuelux .fueluxicon-loader-6:before { - content: "\e006"; -} -.fuelux .fueluxicon-loader-7:before { - content: "\e007"; -} -.fuelux .fueluxicon-loader-8:before { - content: "\e008"; -} -.fuelux .fueluxicon-bullet:before { - content: "\e009"; -} -.fuelux .radio-inline, -.fuelux .checkbox-inline { - padding-left: 0; -} -.fuelux .radio-inline.highlight, -.fuelux .checkbox-inline.highlight { - left: -8px; -} -.fuelux .radio-inline label, -.fuelux .checkbox-inline label { - margin-bottom: 0; -} -label.fuelux .radio:hover:before, -label.fuelux .checkbox:hover:before, -label.fuelux .radio-inline:hover:before, -label.fuelux .checkbox-inline:hover:before, -.input-label.fuelux .radio:hover:before, -.input-label.fuelux .checkbox:hover:before, -.input-label.fuelux .radio-inline:hover:before, -.input-label.fuelux .checkbox-inline:hover:before, -.fuelux .radio label:hover:before, -.fuelux .checkbox label:hover:before, -.fuelux .radio-inline label:hover:before, -.fuelux .checkbox-inline label:hover:before, -.fuelux .radio .input-label:hover:before, -.fuelux .checkbox .input-label:hover:before, -.fuelux .radio-inline .input-label:hover:before, -.fuelux .checkbox-inline .input-label:hover:before { - box-shadow: inset 0px 0px 2px 1px rgba(91, 157, 217, 0.7), 0px 0px 5px 0px rgba(91, 157, 217, 0.7); -} -.fuelux .radio label, -.fuelux .checkbox label, -.fuelux .radio-inline label, -.fuelux .checkbox-inline label, -.fuelux .radio .input-label, -.fuelux .checkbox .input-label, -.fuelux .radio-inline .input-label, -.fuelux .checkbox-inline .input-label, -label.fuelux .radio, -label.fuelux .checkbox, -label.fuelux .radio-inline, -label.fuelux .checkbox-inline { - cursor: pointer; - font-weight: normal; -} -.fuelux .radio.highlight input[type="checkbox"]:not(.sr-only) ~ label, -.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only) ~ label, -.fuelux .radio-inline.highlight input[type="checkbox"]:not(.sr-only) ~ label, -.fuelux .checkbox-inline.highlight input[type="checkbox"]:not(.sr-only) ~ label, -.fuelux .radio.highlight input[type="radio"]:not(.sr-only) ~ label, -.fuelux .checkbox.highlight input[type="radio"]:not(.sr-only) ~ label, -.fuelux .radio-inline.highlight input[type="radio"]:not(.sr-only) ~ label, -.fuelux .checkbox-inline.highlight input[type="radio"]:not(.sr-only) ~ label { - padding: 4px; - border-radius: 4px; -} -.fuelux .radio.highlight input[type="checkbox"]:not(.sr-only):checked ~ label, -.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only):checked ~ label, -.fuelux .radio-inline.highlight input[type="checkbox"]:not(.sr-only):checked ~ label, -.fuelux .checkbox-inline.highlight input[type="checkbox"]:not(.sr-only):checked ~ label, -.fuelux .radio.highlight input[type="radio"]:not(.sr-only):checked ~ label, -.fuelux .checkbox.highlight input[type="radio"]:not(.sr-only):checked ~ label, -.fuelux .radio-inline.highlight input[type="radio"]:not(.sr-only):checked ~ label, -.fuelux .checkbox-inline.highlight input[type="radio"]:not(.sr-only):checked ~ label { - background-color: #e6e6e6; - opacity: 1; - z-index: 0; -} -.fuelux .radio input[type="checkbox"]:not(.sr-only), -.fuelux .checkbox input[type="checkbox"]:not(.sr-only), -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only), -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only), -.fuelux .radio input[type="radio"]:not(.sr-only), -.fuelux .checkbox input[type="radio"]:not(.sr-only), -.fuelux .radio-inline input[type="radio"]:not(.sr-only), -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only) { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - /* for keyboard tabbing */ -} -.fuelux .radio input[type="checkbox"]:not(.sr-only) ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only) ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only) ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only) ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only) ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only) ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only) ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only) ~ label { - padding-left: 0; -} -.fuelux .radio input[type="checkbox"]:not(.sr-only) ~ label:before, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only) ~ label:before, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only) ~ label:before, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only) ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only) ~ label:before, -.fuelux .checkbox input[type="radio"]:not(.sr-only) ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only) ~ label:before, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only) ~ label:before { - font-family: "Glyphicons Halflings"; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - speak: none; - border: 1px solid #aaaaaa; - color: #ffffff; - font-size: 9px; - width: 14px; - height: 14px; - padding: 0; - margin-top: 0; - margin-bottom: -2px; - cursor: pointer; - display: inline-block; - text-align: left; - z-index: 2; - content: ""; -} -.fuelux .radio input[type="checkbox"]:not(.sr-only):active ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):active ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only):active ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):active ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active ~ label, -.fuelux .radio input[type="checkbox"]:not(.sr-only):focus ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):focus ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only):focus ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus ~ label { - color: #333333; - color: #39b3d7; - cursor: pointer; -} -.fuelux .radio input[type="checkbox"]:not(.sr-only):active ~ label:before, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active ~ label:before, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active ~ label:before, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only):active ~ label:before, -.fuelux .checkbox input[type="radio"]:not(.sr-only):active ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):active ~ label:before, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active ~ label:before, -.fuelux .radio input[type="checkbox"]:not(.sr-only):focus ~ label:before, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus ~ label:before, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus ~ label:before, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only):focus ~ label:before, -.fuelux .checkbox input[type="radio"]:not(.sr-only):focus ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus ~ label:before, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus ~ label:before { - box-shadow: inset 0px 0px 2px 1px #5b9dd9, 0px 0px 5px 0px #5b9dd9; - outline: none; -} -.fuelux .radio input[type="checkbox"]:not(.sr-only):active ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):active ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only):active ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):active ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active ~ label, -.fuelux .radio input[type="checkbox"]:not(.sr-only):focus ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):focus ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only):focus ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus ~ label, -.fuelux .radio input[type="checkbox"]:not(.sr-only):active ~ label:hover, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active ~ label:hover, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active ~ label:hover, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active ~ label:hover, -.fuelux .radio input[type="radio"]:not(.sr-only):active ~ label:hover, -.fuelux .checkbox input[type="radio"]:not(.sr-only):active ~ label:hover, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):active ~ label:hover, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active ~ label:hover, -.fuelux .radio input[type="checkbox"]:not(.sr-only):focus ~ label:hover, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus ~ label:hover, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus ~ label:hover, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus ~ label:hover, -.fuelux .radio input[type="radio"]:not(.sr-only):focus ~ label:hover, -.fuelux .checkbox input[type="radio"]:not(.sr-only):focus ~ label:hover, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus ~ label:hover, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus ~ label:hover { - color: #333333; - cursor: pointer; -} -.fuelux .radio input[type="checkbox"]:not(.sr-only):active:hover ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active:hover ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active:hover ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active:hover ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):active:hover ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only):active:hover ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active:hover ~ label, -.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio input[type="checkbox"]:not(.sr-only):checked:hover ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked:hover ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):checked:hover ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked:hover ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only):checked:hover ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):checked:hover ~ label, -.fuelux .radio input[type="checkbox"]:not(.sr-only):active:hover ~ label:hover, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active:hover ~ label:hover, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active:hover ~ label:hover, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active:hover ~ label:hover, -.fuelux .radio input[type="radio"]:not(.sr-only):active:hover ~ label:hover, -.fuelux .checkbox input[type="radio"]:not(.sr-only):active:hover ~ label:hover, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover ~ label:hover, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active:hover ~ label:hover, -.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio input[type="checkbox"]:not(.sr-only):checked:hover ~ label:hover, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked:hover ~ label:hover, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):checked:hover ~ label:hover, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked:hover ~ label:hover, -.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover ~ label:hover, -.fuelux .checkbox input[type="radio"]:not(.sr-only):checked:hover ~ label:hover, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover ~ label:hover, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):checked:hover ~ label:hover { - color: #333333; - cursor: pointer; -} -.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label, -.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled] ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled] ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled] ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled] ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only)[disabled] ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled] ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled] ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled] ~ label, -.fuelux .radio input[type="checkbox"]:not(.sr-only):disabled ~ label, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):disabled ~ label, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):disabled ~ label, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):disabled ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):disabled ~ label, -.fuelux .checkbox input[type="radio"]:not(.sr-only):disabled ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):disabled ~ label, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):disabled ~ label, -.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label:before, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label:before, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label:before, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label:before, -.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label:before, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label:before, -.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled] ~ label:before, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled] ~ label:before, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled] ~ label:before, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled] ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only)[disabled] ~ label:before, -.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled] ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled] ~ label:before, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled] ~ label:before, -.fuelux .radio input[type="checkbox"]:not(.sr-only):disabled ~ label:before, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):disabled ~ label:before, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):disabled ~ label:before, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):disabled ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only):disabled ~ label:before, -.fuelux .checkbox input[type="radio"]:not(.sr-only):disabled ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):disabled ~ label:before, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):disabled ~ label:before { - color: #333333; - opacity: .65; - cursor: not-allowed !important; - outline: none; - box-shadow: none; -} -.fuelux .radio input[type="checkbox"]:not(.sr-only):checked ~ label:before, -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked ~ label:before, -.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):checked ~ label:before, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only):checked ~ label:before, -.fuelux .checkbox input[type="radio"]:not(.sr-only):checked ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked ~ label:before, -.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):checked ~ label:before { - background: #39b3d7; - border-color: #39b3d7; -} -.fuelux .radio.highlight:before, -.fuelux .checkbox.highlight:before, -.fuelux .radio-inline.highlight:before, -.fuelux .checkbox-inline.highlight:before { - left: 4px; - top: 7px; -} -.fuelux .radio.highlight input[type="checkbox"]:not(.sr-only) ~ label, -.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only) ~ label, -.fuelux .radio.highlight input[type="radio"]:not(.sr-only) ~ label, -.fuelux .checkbox.highlight input[type="radio"]:not(.sr-only) ~ label { - left: -8px; - position: relative; -} -.fuelux .radio-inline, -.fuelux .checkbox-inline { - padding-left: 0; -} -.fuelux .radio-inline:before, -.fuelux .checkbox-inline:before { - left: 0; - top: 3px; -} -.fuelux .checkbox.multiline, -.fuelux .radio.multiline { - float: left; - margin-left: 15px; -} -.fuelux .checkbox.multiline ~ .control-label, -.fuelux .radio.multiline ~ .control-label { - float: left; - width: 80%; - margin-left: 10px; - text-align: left; -} -.fuelux .checkbox.multiline ~ .control-label > label, -.fuelux .radio.multiline ~ .control-label > label { - font-weight: normal; - cursor: pointer; -} -.fuelux .checkbox { - /* for keyboard tabbing */ -} -.fuelux .checkbox.highlight + .checkbox.highlight { - margin-top: -5px; -} -.fuelux .checkbox.highlight label.checkbox-custom { - padding: 4px 4px 4px 24px; -} -.fuelux .checkbox.highlight.checked label.checkbox-custom, -.fuelux .checkbox.highlight label.checked.checkbox-custom { - background: #e6e6e6; - border-radius: 4px; -} -.fuelux .checkbox input[type="checkbox"]:focus + .checkbox-label, -.fuelux .checkbox input[type="checkbox"]:hover + .checkbox-label, -.fuelux .checkbox .checkbox-label:hover { - color: #999999; -} -.fuelux .checkbox input[type="checkbox"]:disabled:focus + .checkbox-label, -.fuelux .checkbox input[type="checkbox"]:disabled:hover + .checkbox-label, -.fuelux .checkbox.disabled label:hover { - color: inherit; -} -.fuelux .form-horizontal .checkbox-inline { - padding-top: 0; -} -.fuelux .input-group-addon.checkbox-custom.checkbox-inline:before { - left: 11px; - top: 9px; -} -.fuelux .checkbox-custom { - position: relative; - /* for keyboard tabbing */ - /* for keyboard tabbing */ -} -.fuelux .checkbox-custom:before { - font-family: "Glyphicons Halflings" !important; - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - line-height: 1; - speak: none; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - border: 1px solid #aaaaaa; - border-radius: 4px; - color: #ffffff; - content: " "; - font-size: 9px; - height: 14px; - left: 0px; - padding: 1px 0 0 1px; - position: absolute; - top: 3px; - width: 14px; -} -.fuelux .checkbox-custom:active:before, -.fuelux .checkbox-custom:focus:before { - color: #5b9dd9; - cursor: pointer; - box-shadow: inset 0px 0px 2px 1px #5b9dd9, 0px 0px 5px 0px #5b9dd9; -} -.fuelux .checkbox-custom.highlight:before { - left: 4px; - top: 6px; -} -.fuelux .checkbox-custom.checked:before { - background: #39b3d7; - border-color: #39b3d7; - content: "\e013"; -} -.fuelux .checkbox-custom.disabled { - cursor: not-allowed; - opacity: .65; -} -.fuelux .checkbox-custom.disabled:before { - cursor: not-allowed; - opacity: .65; -} -.fuelux .checkbox-custom.checkbox-inline:before { - left: 0; - top: 3px; -} -.fuelux .checkbox-custom.checkbox-inline.highlight { - padding: 4px 4px 4px 24px; - left: -4px; -} -.fuelux .checkbox-custom.checkbox-inline.highlight:before { - left: 4px; - top: 7px; -} -.fuelux .checkbox-custom.checkbox-inline.highlight.checked { - background: #e6e6e6; - border-radius: 4px; -} -.fuelux .checkbox-custom input[type="checkbox"]:focus + .checkbox-label { - color: #999999; -} -.fuelux label.checkbox-custom.checkbox-inline { - padding-left: 20px; -} -.fuelux .checkbox input[type="checkbox"]:not(.sr-only) ~ label:before, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only) ~ label:before { - border-radius: 4px; - z-index: 1; -} -.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked ~ label:before, -.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked ~ label:before { - color: white; - content: "\e013"; - line-height: 1em; - padding-left: 1px; - font-size: 8px; - padding-top: 2px; -} -.fuelux .checkbox.hightlight + .checkbox-inline.highlight, -.fuelux .checkbox-inline.hightlight + .checkbox-inline.highlight { - margin-left: -14px; -} -.fuelux .checkbox.hightlight + .checkbox-inline.highlight.checkbox-custom, -.fuelux .checkbox-inline.hightlight + .checkbox-inline.highlight.checkbox-custom { - margin-left: 0px; -} -.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only) ~ label { - left: -4px; -} -.fuelux .radio { - /* for keyboard tabbing */ -} -.fuelux .radio.highlight { - padding: 4px; - margin: 0 0 5px 0; -} -.fuelux .radio.highlight + .radio.highlight { - margin-top: -9px; -} -.fuelux .radio.highlight label.radio-custom { - left: -8px; - padding: 4px 4px 4px 24px; - border-radius: 4px; -} -.fuelux .radio.highlight label.radio-custom:before { - left: 5px; - top: 7px; -} -.fuelux .radio.highlight label.radio-custom:after { - left: 9px; - top: 11px; -} -.fuelux .radio.highlight.checked label.radio-custom, -.fuelux .radio.highlight label.radio-custom.checked { - background: #e6e6e6; - border-radius: 4px; -} -.fuelux .radio input[type="radio"]:focus + .radio-label, -.fuelux .radio input[type="radio"]:hover + .radio-label, -.fuelux .radio .radio-label:hover { - color: #999999; -} -.fuelux .form-horizontal .radio-inline { - padding-top: 0; -} -.fuelux .input-group-addon.radio-custom.radio-inline:before { - left: 11px; - top: 9px; -} -.fuelux .input-group-addon.radio-custom.radio-inline:after { - left: 15px; - top: 13px; -} -.fuelux .radio-custom { - position: relative; - /* for keyboard tabbing */ -} -.fuelux .radio-custom .highlight { - padding: 4px; - margin: 0 0 5px 0; -} -.fuelux .radio-custom .highlight.checked { - background: #e6e6e6; - border-radius: 4px; -} -.fuelux .radio-custom:after { - background: transparent; - border-radius: 6px; - content: " "; - height: 6px; - left: 4px; - position: absolute; - top: 7px; - width: 6px; -} -.fuelux .radio-custom:before { - border: 1px solid #aaaaaa; - border-radius: 14px; - content: " "; - height: 14px; - left: 0px; - position: absolute; - top: 3px; - width: 14px; -} -.fuelux .radio-custom.checked:after { - background: #ffffff; -} -.fuelux .radio-custom.checked:before { - background: #39b3d7; - border-color: #39b3d7; -} -.fuelux .radio-custom.disabled { - cursor: not-allowed; - opacity: .65; -} -.fuelux .radio-custom.disabled:after { - cursor: not-allowed; -} -.fuelux .radio-custom.disabled:before { - cursor: not-allowed; - opacity: .65; -} -.fuelux .radio-custom.radio-inline:after { - left: 4px; - top: 7px; -} -.fuelux .radio-custom.radio-inline:before { - left: 0; - top: 3px; -} -.fuelux .radio-custom.radio-inline.highlight { - left: -3px; - padding: 4px 4px 4px 24px; -} -.fuelux .radio-custom.radio-inline.highlight:after { - left: 8px; - top: 11px; -} -.fuelux .radio-custom.radio-inline.highlight:before { - left: 4px; - top: 7px; -} -.fuelux .radio-custom.radio-inline.highlight.checked { - background: #e6e6e6; - border-radius: 4px; -} -.fuelux .radio-custom input[type="radio"]:focus + .radio-label { - color: #999999; -} -.fuelux label.radio-custom.radio-inline { - padding-left: 20px; -} -.fuelux .radio input[type="radio"]:not(.sr-only), -.fuelux .radio-inline input[type="radio"]:not(.sr-only) { - /* for keyboard tabbing */ - /* for keyboard tabbing */ -} -.fuelux .radio input[type="radio"]:not(.sr-only) ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only) ~ label:before { - border-radius: 8px; - z-index: 1; -} -.fuelux .radio input[type="radio"]:not(.sr-only):checked ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked ~ label:before { - background: #39b3d7; - /* Old browsers */ - background: -moz-radial-gradient(center, ellipse cover, #ffffff 0%, #ffffff 40%, #39b3d7 41%, #39b3d7 100%); - /* FF3.6+ */ - background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #ffffff), color-stop(40%, #ffffff), color-stop(41%, #39b3d7), color-stop(100%, #39b3d7)); - /* Chrome,Safari4+ */ - background: -webkit-radial-gradient(center, ellipse cover, #ffffff 0%, #ffffff 40%, #39b3d7 41%, #39b3d7 100%); - /* Chrome10+,Safari5.1+ */ - background: -o-radial-gradient(center, ellipse cover, #ffffff 0%, #ffffff 40%, #39b3d7 41%, #39b3d7 100%); - /* Opera 12+ */ - background: -ms-radial-gradient(center, ellipse cover, #ffffff 0%, #ffffff 40%, #39b3d7 41%, #39b3d7 100%); - /* IE10+ */ - background: radial-gradient(ellipse at center, #ffffff 0%, #ffffff 40%, #39b3d7 41%, #39b3d7 100%); - /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#39b3d7', GradientType=1); - /* IE6-9 fallback on horizontal gradient */ -} -.fuelux .radio input[type="radio"]:not(.sr-only):hover ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):hover ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only):active ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):active ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only):focus ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus ~ label:before { - box-shadow: inset 0px 0px 2px 1px #5b9dd9, 0px 0px 5px 0px #5b9dd9; -} -.fuelux .radio input[type="radio"]:not(.sr-only):active:hover ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:before, -.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover ~ label:before, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover ~ label:before { - outline-color: none; - outline-offset: 0; - outline-style: none; - outline-width: 0; - cursor: default; -} -.fuelux .radio input[type="radio"]:not(.sr-only):active:hover ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover ~ label, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover ~ label, -.fuelux .radio input[type="radio"]:not(.sr-only):active:hover ~ label:hover, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover ~ label:hover, -.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, -.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover ~ label:hover, -.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover ~ label:hover { - color: #333333; - cursor: default; -} -.fuelux .combobox.disabled .input-group-btn { - cursor: not-allowed; -} -.fuelux .combobox input::-ms-clear { - display: none; -} -.fuelux .datepicker-calendar { - padding: 16px 16px 0; - min-height: 262px; -} -.fuelux .datepicker-calendar button { - border: 0; - padding: 0; - background-color: transparent; -} -.fuelux .datepicker-calendar-days { - height: 182px; - margin: 10px 0 12px; - width: 100%; - /* for spacing */ -} -.fuelux .datepicker-calendar-days thead { - border-bottom: 1px solid #cccccc; -} -.fuelux .datepicker-calendar-days tbody:before { - color: transparent; - content: "\200C"; - display: block; - line-height: 3px; - visibility: hidden; -} -.fuelux .datepicker-calendar-days td, -.fuelux .datepicker-calendar-days th { - font-size: 14px; - height: 32px; - text-align: center; - vertical-align: middle; - width: 14.29%; -} -.fuelux .datepicker-calendar-days td b, -.fuelux .datepicker-calendar-days td button { - color: #333333; - display: inline-block; - font-weight: normal; - height: 30px; - text-decoration: none; - width: 30px; -} -.fuelux .datepicker-calendar-days td b { - line-height: 30px; -} -.fuelux .datepicker-calendar-days td span { - display: block; - border-radius: 4px; -} -.fuelux .datepicker-calendar-days td span:hover { - background: #f5f5f5; - text-decoration: none; -} -.fuelux .datepicker-calendar-days td.current-day span { - border: 1px solid #333333; -} -.fuelux .datepicker-calendar-days td.last-month, -.fuelux .datepicker-calendar-days td.next-month { - background: #d5d5d5; -} -.fuelux .datepicker-calendar-days td.last-month.first, -.fuelux .datepicker-calendar-days td.next-month.first { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - padding-left: 1px; -} -.fuelux .datepicker-calendar-days td.last-month.last, -.fuelux .datepicker-calendar-days td.next-month.last { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - padding-right: 1px; -} -.fuelux .datepicker-calendar-days td.past b, -.fuelux .datepicker-calendar-days td.past button { - color: #999999; -} -.fuelux .datepicker-calendar-days td.restricted b, -.fuelux .datepicker-calendar-days td.restricted button { - cursor: no-drop; - position: relative; -} -.fuelux .datepicker-calendar-days td.restricted b:before, -.fuelux .datepicker-calendar-days td.restricted button:before { - border-top: 1px solid #e9322d; - bottom: 0; - content: " "; - display: block; - left: 5px; - position: absolute; - right: 5px; - top: 50%; -} -.fuelux .datepicker-calendar-days td.restricted b:hover, -.fuelux .datepicker-calendar-days td.restricted button:hover { - background: none; -} -.fuelux .datepicker-calendar-days td.selected span { - background: #eeeeee; -} -.fuelux .datepicker-calendar-days td.selected span:hover { - background: #dddddd; -} -.fuelux .datepicker-calendar-days td.selected b, -.fuelux .datepicker-calendar-days td.selected button { - color: #878787; -} -.fuelux .datepicker-calendar-days td.selected.current-day { - box-shadow: 0 0 0 1px #ffffff offset; -} -.fuelux .datepicker-calendar-days td.selected.current-day b, -.fuelux .datepicker-calendar-days td.selected.current-day button { - color: #222222; -} -.fuelux .datepicker-calendar-days td.selected.current-day span:hover b, -.fuelux .datepicker-calendar-days td.selected.current-day span:hover button { - border-color: #0f5f9f; -} -.fuelux .datepicker-calendar-days th { - font-weight: bold; - height: 22px; - vertical-align: top; -} -.fuelux .datepicker-calendar-header { - *zoom: 1; -} -.fuelux .datepicker-calendar-header:before, -.fuelux .datepicker-calendar-header:after { - display: table; - content: ""; - line-height: 0; -} -.fuelux .datepicker-calendar-header:after { - clear: both; -} -.fuelux .datepicker-calendar-header button { - border: 0; - padding: 0; - background-color: transparent; -} -.fuelux .datepicker-calendar-header .title { - margin: 0 auto; - text-align: center; - display: block; - width: 174px; - color: #222222; - font-size: 20px; - line-height: 30px; - text-decoration: underline; - vertical-align: middle; -} -.fuelux .datepicker-calendar-header .title:hover { - color: #0f5f9f; - text-decoration: underline; -} -.fuelux .datepicker-calendar-header .title.disabled { - cursor: default; - pointer-events: none; - text-decoration: none; -} -.fuelux .datepicker-calendar-header .title .month { - display: inline; - margin: 0; - padding: 0; -} -.fuelux .datepicker-calendar-header .title .month span { - display: none; -} -.fuelux .datepicker-calendar-header .title .month span.current { - display: inline; -} -.fuelux .datepicker-calendar-header .next, -.fuelux .datepicker-calendar-header .prev { - background: #666666; - background-clip: padding-box; - border-radius: 30px; - cursor: pointer; - float: left; - height: 30px; - text-align: center; - width: 30px; -} -.fuelux .datepicker-calendar-header .next span.glyphicon, -.fuelux .datepicker-calendar-header .prev span.glyphicon { - color: #ffffff; - font-size: 16px; - line-height: 30px; -} -.fuelux .datepicker-calendar-header .next:hover, -.fuelux .datepicker-calendar-header .prev:hover { - background: #0f5f9f; -} -.fuelux .datepicker-calendar-header .next { - float: right; -} -.fuelux .datepicker-calendar-header .next span.glyphicon { - line-height: 28px; -} -.fuelux .datepicker-calendar-footer { - background: #e6e6e6; - background-clip: padding-box; - border-radius: 0 0 4px 4px; - border-top: 1px solid #cccccc; - height: 30px; - margin: 0 -16px; - padding: 4px 14px; -} -.fuelux .datepicker-calendar-footer .datepicker-today { - color: #333333; - font-size: 14px; - text-decoration: underline; -} -.fuelux .datepicker-calendar-footer .datepicker-today:hover { - color: #1b75bb; - text-decoration: underline; -} -.fuelux .datepicker-calendar-footer .datepicker-today.disabled { - color: #878787; - cursor: default; - pointer-events: none; -} -.fuelux .datepicker-calendar-footer .datepicker-today.disabled:hover { - color: #878787; -} -.fuelux .datepicker-calendar-wrapper { - border: 1px solid #757575; - min-height: 20px; - padding: 0; - width: 300px; -} -.fuelux .datepicker-wheels { - display: none; -} -.fuelux .datepicker-wheels ul button { - border: 0; - padding: 0; - background-color: transparent; -} -.fuelux .datepicker-wheels-footer { - background: #e6e6e6; - border-radius: 0 0 4px 4px; - border-top: 1px solid #cccccc; - clear: both; -} -.fuelux .datepicker-wheels-footer .datepicker-wheels-back { - display: block; - color: #222222; - float: left; - line-height: 22px; - border: 0; - background-color: transparent; -} -.fuelux .datepicker-wheels-footer .datepicker-wheels-back:hover { - color: #1b75bb; -} -.fuelux .datepicker-wheels-footer .datepicker-wheels-select { - float: right; - background-color: transparent; - color: #5b9dd9; -} -.fuelux .datepicker-wheels-footer .datepicker-wheels-select:hover { - color: #1b75bb; -} -.fuelux .datepicker-wheels-month, -.fuelux .datepicker-wheels-year { - float: left; - width: 50%; -} -.fuelux .datepicker-wheels-month ul, -.fuelux .datepicker-wheels-year ul { - height: 217px; - list-style-type: none; - margin: 0; - overflow: auto; - padding: 0; - text-align: center; -} -.fuelux .datepicker-wheels-month ul li, -.fuelux .datepicker-wheels-year ul li { - margin: 4px 0; -} -.fuelux .datepicker-wheels-month ul li button, -.fuelux .datepicker-wheels-year ul li button { - width: 100%; - text-align: center; - color: #454545; - display: block; - font-size: 16px; - line-height: 24px; - text-decoration: none; -} -.fuelux .datepicker-wheels-month ul li button:hover, -.fuelux .datepicker-wheels-year ul li button:hover { - background: #d9edf7; - text-decoration: none; -} -.fuelux .datepicker-wheels-month ul li.selected button, -.fuelux .datepicker-wheels-year ul li.selected button { - background: #1b75bb; - color: #ffffff; -} -.fuelux .datepicker-wheels-month ul li.selected button:hover, -.fuelux .datepicker-wheels-year ul li.selected button:hover { - background: #0f5f9f; -} -.fuelux .datepicker-wheels-month .header, -.fuelux .datepicker-wheels-year .header { - background: #e6e6e6; - background-clip: padding-box; - border-bottom: 1px solid #cccccc; - border-radius: 4px 0 0 0; - color: #222222; - font-size: 20px; - font-weight: bold; - line-height: 30px; - margin-top: 0; - margin-bottom: 0; - text-align: center; -} -.fuelux .datepicker-wheels-month.full, -.fuelux .datepicker-wheels-year.full { - border-left: 0; - width: 100%; -} -.fuelux .datepicker-wheels-month.full .header, -.fuelux .datepicker-wheels-year.full .header { - border-radius: 4px 4px 0 0; -} -.fuelux .datepicker-wheels-year { - border-left: 1px solid #cccccc; - float: right; -} -.fuelux .datepicker-wheels-year .header { - border-radius: 0 4px 0 0; -} -.fuelux .datepicker input::-ms-clear { - display: none; -} -.fuelux .infinitescroll { - overflow-y: auto; -} -.fuelux .infinitescroll .infinitescroll-end { - clear: both; - font-style: italic; - padding: 6px; - text-align: center; -} -.fuelux .infinitescroll .infinitescroll-load { - clear: both; - padding: 6px; -} -.fuelux .infinitescroll .infinitescroll-load button { - padding: 5px 12px; - width: 100%; -} -.fuelux .infinitescroll .infinitescroll-load .loader { - font-size: 32px; - height: 32px; - margin: 0 auto; - width: 32px; -} -.fuelux .dropUp { - -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); -} -.fuelux .loader { - height: 64px; - font-size: 64px; - position: relative; - width: 64px; -} -.fuelux .loader:after, -.fuelux .loader:before { - font-family: "fuelux" !important; - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - line-height: 1; - speak: none; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - bottom: 0; - display: block; - left: 0; - position: absolute; - right: 0; - top: 0; -} -.fuelux .loader:before { - content: '\e000'; - opacity: 0.33; -} -.fuelux .loader.iefix:before { - color: #bbbbbb; - opacity: 1; -} -.fuelux .loader[data-frame="1"]:after { - content: '\e001'; -} -.fuelux .loader[data-frame="2"]:after { - content: '\e002'; -} -.fuelux .loader[data-frame="3"]:after { - content: '\e003'; -} -.fuelux .loader[data-frame="4"]:after { - content: '\e004'; -} -.fuelux .loader[data-frame="5"]:after { - content: '\e005'; -} -.fuelux .loader[data-frame="6"]:after { - content: '\e006'; -} -.fuelux .loader[data-frame="7"]:after { - content: '\e007'; -} -.fuelux .loader[data-frame="8"]:after { - content: '\e008'; -} -.fuelux .pillbox { - border: 1px solid #bbbbbb; - border-radius: 4px; - cursor: text; - padding: 3px; -} -.fuelux .pillbox[data-readonly] { - border: 1px solid transparent; -} -.fuelux .pillbox[data-readonly].truncate .pillbox-input-wrap { - display: inline-block; -} -.fuelux .pillbox[data-readonly].truncate .pillbox-input-wrap.truncated { - display: none; -} -.fuelux .pillbox[data-readonly].truncate .pillbox-more { - display: inline; -} -.fuelux .pillbox[data-readonly] .pill span.glyphicon-close { - display: none; -} -.fuelux .pillbox[data-readonly] .pillbox-add-item { - display: none; -} -.fuelux .pillbox[data-readonly] .pillbox-input-wrap { - display: none; -} -.fuelux .pillbox[data-readonly] .pillbox-input-wrap button.dropdown-toggle { - display: none; -} -.fuelux .pillbox.pills-editable .pill-group .pill span { - cursor: text; -} -.fuelux .pillbox.pills-editable .pill-group .pill span.glyphicon-close { - cursor: pointer; -} -.fuelux .pillbox > .pill-group { - margin: 0; - padding: 0; - width: 100%; -} -.fuelux .pillbox > .pill-group > .pill { - margin: 2px; - cursor: default; - float: left; - word-break: break-all; -} -.fuelux .pillbox > .pill-group > .pill.pillbox-highlight { - outline: 1px dotted #999999; -} -.fuelux .pillbox > .pill-group > .pill.truncated { - display: none; -} -.fuelux .pillbox > .pill-group > .pill .pillbox-list-edit { - border: none; - color: #333333; - font-weight: normal; - border-radius: 2px; -} -.fuelux .pillbox > .pill-group > .pill .pillbox-list-edit:focus { - outline: none; - border: none; -} -.fuelux .pillbox > .pill-group > .pill .glyphicon-close { - cursor: pointer; - top: -1px; - left: 2px; -} -.fuelux .pillbox > .pill-group > .pill .glyphicon-close:before { - content: " \00d7"; -} -.fuelux .pillbox > .pill-group > .pill .glyphicon-close:hover { - opacity: .4; -} -.fuelux .pillbox .pillbox-input-wrap { - position: relative; - margin: 4px 0 3px 3px; - float: left; -} -.fuelux .pillbox .pillbox-input-wrap.editing { - border: 1px solid #cccccc; - border-radius: 4px; - margin: 2px 0 3px 3px; -} -.fuelux .pillbox .pillbox-input-wrap.editing input.pillbox-add-item { - border-radius: 4px; - color: #333333; - height: 32px; -} -.fuelux .pillbox .pillbox-add-item { - border: none; - box-shadow: none; -} -.fuelux .pillbox .pillbox-add-item:focus { - outline: none; - border: none; -} -.fuelux .pillbox .pillbox-more { - cursor: pointer; - display: none; - line-height: 30px; -} -.fuelux .pillbox .suggest { - max-height: 166px; - overflow-y: auto; -} -.fuelux .pillbox .suggest > li { - white-space: nowrap; - cursor: pointer; - padding: 3px 20px; -} -.fuelux .pillbox .suggest > li.pillbox-suggest-sel { - background-color: #eeeeee; -} -.fuelux .pillbox .suggest > li:hover { - background-color: #eeeeee; -} -.fuelux .pillbox input::-ms-clear { - display: none; -} -.fuelux .placard { - display: inline-block; - position: relative; -} -.fuelux .placard[data-ellipsis="true"].showing input.placard-field { - overflow: visible; - text-overflow: clip; - white-space: normal; -} -.fuelux .placard[data-ellipsis="true"] input.placard-field { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.fuelux .placard[data-ellipsis="true"] input.placard-field::-ms-clear { - display: none; -} -.fuelux .placard[data-ellipsis="true"] textarea.placard-field[readonly] { - overflow: hidden; -} -.fuelux .placard.showing .placard-footer, -.fuelux .placard.showing .placard-header, -.fuelux .placard.showing .placard-popup { - display: block; - z-index: 1; -} -.fuelux .placard.showing input.placard-field, -.fuelux .placard.showing textarea.placard-field { - background: #ffffff; - border: 1px solid #cccccc; - box-shadow: none; - position: relative; - z-index: 1; -} -.fuelux .placard input.placard-field, -.fuelux .placard textarea.placard-field { - resize: none; -} -.fuelux .placard input.placard-field[readonly], -.fuelux .placard textarea.placard-field[readonly] { - background: #ffffff; - cursor: auto; -} -.fuelux .placard input.placard-field[readonly].glass, -.fuelux .placard textarea.placard-field[readonly].glass { - background: none; -} -.fuelux .placard input.placard-field[readonly].glass:hover, -.fuelux .placard textarea.placard-field[readonly].glass:hover { - background: #d9edf7; - cursor: pointer; -} -.fuelux .placard input.placard-field:focus, -.fuelux .placard textarea.placard-field:focus { - border: 1px solid #cccccc; - box-shadow: none; -} -.fuelux .placard-cancel { - font-size: 12px; - margin-right: 4px; - vertical-align: middle; -} -.fuelux .placard-footer, -.fuelux .placard-header { - display: none; - left: 0; - line-height: 1; - position: absolute; - right: 0; -} -.fuelux .placard-footer { - padding: 4px 0 8px 0; - text-align: right; - top: 100%; -} -.fuelux .placard-header { - bottom: 100%; - padding: 8px 0 4px 0; -} -.fuelux .placard-header h1, -.fuelux .placard-header h2, -.fuelux .placard-header h3, -.fuelux .placard-header h4, -.fuelux .placard-header h5, -.fuelux .placard-header h6 { - margin: 0; -} -.fuelux .placard-popup { - background: #d9edf7; - background-clip: padding-box; - border: 1px solid #cccccc; - border-radius: 4px; - bottom: -8px; - box-shadow: 0 0 0 1px #ffffff inset; - display: none; - left: -8px; - position: absolute; - right: -8px; - top: -8px; -} -.fuelux .placard .glass { - background: transparent; - border: 1px solid #ffffff; - box-shadow: none; -} -.fuelux .placard .glass:hover { - background: #d9edf7; - border-color: #5b9dd9; - cursor: pointer; -} -.fuelux .placard .glass:hover[disabled] { - background: transparent; - border-color: #ffffff; - cursor: not-allowed; -} -.fuelux .placard .glass:focus { - background: #ffffff; - border-color: #5b9dd9; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.75), 0 0 8px rgba(91, 157, 217, 0.6); - cursor: auto; -} -.fuelux .placard .glass:focus[disabled] { - background: transparent; - border-color: #ffffff; - cursor: not-allowed; -} -.fuelux .placard .glass[disabled] { - cursor: not-allowed; -} -.fuelux .repeater { - border: 1px solid #dddddd; - border-radius: 4px; - /* - * reinforce spacing around control buttons - */ -} -.fuelux .repeater-canvas.scrolling { - bottom: 0; - left: 0; - overflow-y: auto; - position: absolute; - right: 0; - top: 0; -} -.fuelux .repeater-header, -.fuelux .repeater-footer { - background: #fafafa; - min-height: 50px; - padding: 8px; - *zoom: 1; -} -.fuelux .repeater-header:before, -.fuelux .repeater-footer:before, -.fuelux .repeater-header:after, -.fuelux .repeater-footer:after { - display: table; - content: ""; - line-height: 0; -} -.fuelux .repeater-header:after, -.fuelux .repeater-footer:after { - clear: both; -} -.fuelux .repeater-header-left, -.fuelux .repeater-footer-left { - float: left; -} -.fuelux .repeater-header-right, -.fuelux .repeater-footer-right { - float: right; -} -@media (max-width: 625px) { - .fuelux .repeater-header-left, - .fuelux .repeater-footer-left, - .fuelux .repeater-header-right, - .fuelux .repeater-footer-right { - float: none; - *zoom: 1; - } - .fuelux .repeater-header-left:before, - .fuelux .repeater-footer-left:before, - .fuelux .repeater-header-right:before, - .fuelux .repeater-footer-right:before, - .fuelux .repeater-header-left:after, - .fuelux .repeater-footer-left:after, - .fuelux .repeater-header-right:after, - .fuelux .repeater-footer-right:after { - display: table; - content: ""; - line-height: 0; - } - .fuelux .repeater-header-left:after, - .fuelux .repeater-footer-left:after, - .fuelux .repeater-header-right:after, - .fuelux .repeater-footer-right:after { - clear: both; - } - .fuelux .repeater-header-left, - .fuelux .repeater-footer-left { - margin-bottom: 8px; - } -} -.fuelux .repeater-header { - border-bottom: 1px solid #dddddd; - border-top-right-radius: 4px; - border-top-left-radius: 4px; -} -.fuelux .repeater-footer { - border-top: 1px solid #dddddd; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.fuelux .repeater-loader { - display: none; - left: 50%; - position: absolute; - margin: -32px 0 0 -32px; - top: 50%; -} -.fuelux .repeater-viewport { - min-height: 80px; - position: relative; -} -.fuelux .repeater-pagination label { - font-weight: normal; -} -.fuelux .repeater-pagination .repeater-primaryPaging { - display: none; - vertical-align: middle; - width: 116px; -} -.fuelux .repeater-pagination .repeater-primaryPaging.active { - display: inline-block; -} -.fuelux .repeater-pagination .repeater-primaryPaging ul.dropdown-menu { - min-width: 116px; -} -.fuelux .repeater-pagination .repeater-secondaryPaging { - display: none; - width: 82px; -} -.fuelux .repeater-pagination .repeater-secondaryPaging.active { - display: inline-block; -} -.fuelux .repeater-search { - float: left; - width: 200px; -} -.fuelux .repeater-title { - display: block; - float: left; - line-height: 34px; - margin-right: 10px; -} -.fuelux .repeater-itemization .selectlist, -.fuelux .repeater-filters, -.fuelux .repeater-secondaryPaging, -.fuelux .repeater-primaryPaging, -.fuelux .repeater-next, -.fuelux .repeater-prev { - margin: auto 0.3em; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.scrolling { - overflow: visible; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.scrolling .repeater-list { - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.scrolling .repeater-list-wrapper { - height: 100%; - overflow: auto; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list { - position: relative; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table { - margin-bottom: 0; - width: 100%; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody td { - border-bottom: 1px solid #dddddd; - border-left: 1px solid #dddddd; - border-top: none; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody td:first-child { - border-left: none; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody td.sorted { - background: #fafafa; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr:focus { - outline: 1px dotted #dddddd; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.empty td { - border-bottom: none; - font-size: 14px; - font-style: italic; - padding: 20px; - text-align: center; - width: 100%; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selectable:hover td, -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selectable.hovered td { - background: #f5f5f5; - cursor: pointer; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selectable .checkbox-custom:before { - margin-top: -4px; - top: 0; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selected td { - background: #eeeeee; - color: #333333; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selected td:first-child { - padding-left: 30px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th { - background: #fafafa; - border-bottom: 1px solid #dddddd; - border-left: 1px solid transparent; - border-top: none; - color: rgba(0, 0, 0, 0); - line-height: 1.42857; - padding: 8px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th:first-child { - border-left: none; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th:first-child .header-checkbox { - width: 37px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th.sortable:hover, -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th.sortable.sorted { - background: #f5f5f5; - cursor: pointer; - background-color: #f2f2f2; - background-image: -moz-linear-gradient(top, #fafafa, #e6e6e6); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#e6e6e6)); - background-image: -webkit-linear-gradient(top, #fafafa, #e6e6e6); - background-image: -o-linear-gradient(top, #fafafa, #e6e6e6); - background-image: linear-gradient(to bottom, #fafafa, #e6e6e6); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe6e6e6', GradientType=0); -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th.sorted span.glyphicon { - display: block; - visibility: hidden; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th span.glyphicon { - display: none; - float: right; - margin-top: 2px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th .actions-hidden { - visibility: hidden; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-check { - display: inline-block; - height: 0; - line-height: 0; - position: relative; - vertical-align: top; - width: 0; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-check span.glyphicon { - left: -22px; - position: absolute; - top: 2px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading { - background: #fafafa; - border-bottom: 1px solid #dddddd; - border-left: 1px solid #dddddd; - border-top: none; - color: #333333; - line-height: 1.42857; - margin-left: -9px; - padding: 8px; - position: absolute; - top: 0; - z-index: 1; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.shifted { - margin-left: -1px; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - .fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.shifted { - margin-left: 0; - } -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.sortable:hover, -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.sortable.sorted { - background: #f5f5f5; - cursor: pointer; - background-color: #f2f2f2; - background-image: -moz-linear-gradient(top, #fafafa, #e6e6e6); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#e6e6e6)); - background-image: -webkit-linear-gradient(top, #fafafa, #e6e6e6); - background-image: -o-linear-gradient(top, #fafafa, #e6e6e6); - background-image: linear-gradient(to bottom, #fafafa, #e6e6e6); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe6e6e6', GradientType=0); -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.sortable.sorted span.glyphicon { - display: block; - visibility: visible; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading span.glyphicon { - display: none; - float: right; - margin-top: 2px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled { - overflow: auto; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list-wrapper { - overflow: visible; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list .frozen-column-wrapper { - position: absolute; - z-index: 2; - left: 0; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list .frozen-thead-wrapper { - position: absolute; - top: 0; - left: 0; - z-index: 3; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list .frozen-thead-wrapper table { - border-right: 1px solid #dddddd; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table { - table-layout: fixed; - word-wrap: break-word; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen { - border-right: 1px solid #dddddd; - z-index: 2; - background: #ffffff; - border-collapse: collapse; - table-layout: fixed; - float: left; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen td, -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen th { - border-collapse: collapse; - word-wrap: break-word; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen .repeater-frozen-heading { - background: #fafafa; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen .repeater-frozen-heading.shifted { - left: -1px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled { - overflow: auto; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list-wrapper { - overflow: visible; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper { - position: absolute; - z-index: 2; - right: 0; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table { - table-layout: fixed; - word-wrap: break-word; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions { - border-left: 1px solid #dddddd; - z-index: 2; - border-collapse: collapse; - table-layout: fixed; - float: right; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr { - border-left: 1px solid #dddddd; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.empty-heading { - background: transparent; - border-left: 1px solid transparent; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.empty-heading th { - background: transparent; - padding-left: 0; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td { - background: #ffffff; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selectable:hover td, -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selectable.hovered td { - background: #f5f5f5; - cursor: pointer; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selectable .checkbox-custom:before { - margin-top: -4px; - top: 0; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selected td { - background: #eeeeee; - color: #333333; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selected td:first-child { - padding-left: 30px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td, -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th { - border-collapse: collapse; - word-wrap: break-word; - padding-bottom: 5px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td .btn-group, -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .btn-group { - width: 100%; - text-align: center; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td .btn-group .btn, -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .btn-group .btn { - float: none; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selected td:first-child { - padding-left: 8px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th { - border-bottom: 1px solid #dddddd; - padding-bottom: 7px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .repeater-list-heading { - padding: 8px 0 7px; - border-left: 1px solid #fafafa; - margin-left: -9px; - width: 100%; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .repeater-list-heading .glyphicon { - display: inline-block; - float: none; - margin-top: 0; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions .caret { - margin-left: 0; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-thead-wrapper { - position: absolute; - top: 0; - right: 0; - z-index: 3; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list table { - table-layout: fixed; - word-wrap: break-word; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list table thead tr th:last-child .repeater-list-heading { - border-left: 1px solid transparent; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions { - background-color: #ffffff; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr { - background-color: transparent; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr.empty-heading { - border-left: 1px solid #fafafa; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr th { - padding-bottom: 8px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr td { - padding-bottom: 6px; - line-height: 1.39; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list thead tr:first-child .header-checkbox { - width: 37px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list thead tr:first-child .header-checkbox label { - top: -10px; - left: 4px; - padding-left: 0; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list tbody tr .body-checkbox { - left: 4px; - top: -3px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list tr.selected td:first-child { - padding-left: 8px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .repeater-list-heading { - border-left: 1px solid #dddddd; -} -.fuelux .repeater[data-viewtype="list"] .repeater-loader { - margin-top: -12px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-loader.noHeader { - margin-top: -32px; -} -.fuelux .repeater[data-viewtype="list"] .repeater-viewport { - overflow: hidden; -} -.fuelux .repeater[data-viewtype="list"] .actions-wrapper { - z-index: 10; - text-align: right; -} -.fuelux .repeater-thumbnail { - border: 1px solid #dddddd; - color: #666666; - float: left; - font-size: 14px; - min-height: 110px; - min-width: 100px; - margin: 8px 7px; - text-align: center; -} -.fuelux .repeater-thumbnail img { - display: block; - margin-top: 10px; - margin-bottom: 3px; -} -.fuelux .repeater-thumbnail-cont { - height: 100%; - overflow-y: auto; - padding: 6px; - width: 100%; -} -.fuelux .repeater-thumbnail-cont.align-center, -.fuelux .repeater-thumbnail-cont.align-justify, -.fuelux .repeater-thumbnail-cont.align-left, -.fuelux .repeater-thumbnail-cont.align-right { - position: relative; - font-size: 0.1px; -} -.fuelux .repeater-thumbnail-cont.align-center:after, -.fuelux .repeater-thumbnail-cont.align-justify:after, -.fuelux .repeater-thumbnail-cont.align-left:after, -.fuelux .repeater-thumbnail-cont.align-right:after { - display: inline-block; - width: 100%; - content: ''; -} -.fuelux .repeater-thumbnail-cont.align-center .infinitescroll-end, -.fuelux .repeater-thumbnail-cont.align-justify .infinitescroll-end, -.fuelux .repeater-thumbnail-cont.align-left .infinitescroll-end, -.fuelux .repeater-thumbnail-cont.align-right .infinitescroll-end, -.fuelux .repeater-thumbnail-cont.align-center .infinitescroll-load, -.fuelux .repeater-thumbnail-cont.align-justify .infinitescroll-load, -.fuelux .repeater-thumbnail-cont.align-left .infinitescroll-load, -.fuelux .repeater-thumbnail-cont.align-right .infinitescroll-load { - display: inline-block; - width: 100%; -} -.fuelux .repeater-thumbnail-cont.align-center .repeater-thumbnail, -.fuelux .repeater-thumbnail-cont.align-justify .repeater-thumbnail, -.fuelux .repeater-thumbnail-cont.align-left .repeater-thumbnail, -.fuelux .repeater-thumbnail-cont.align-right .repeater-thumbnail { - display: inline-block; - float: none; - font-size: 14px; -} -.fuelux .repeater-thumbnail-cont.align-center .repeater-thumbnail:after, -.fuelux .repeater-thumbnail-cont.align-justify .repeater-thumbnail:after, -.fuelux .repeater-thumbnail-cont.align-left .repeater-thumbnail:after, -.fuelux .repeater-thumbnail-cont.align-right .repeater-thumbnail:after { - content: ' '; -} -.fuelux .repeater-thumbnail-cont.align-center { - text-align: center; -} -.fuelux .repeater-thumbnail-cont.align-justify { - text-align: justify; -} -.fuelux .repeater-thumbnail-cont.align-left { - text-align: left; -} -.fuelux .repeater-thumbnail-cont.align-right { - text-align: right; -} -.fuelux .repeater-thumbnail-cont div.empty { - font-size: 14px; - font-style: italic; - padding: 14px 10px 20px; - text-align: center; -} -.fuelux .repeater-thumbnail-cont .selectable:hover { - background: #f5f5f5; - cursor: pointer; -} -.fuelux .repeater-thumbnail-cont .selectable.selected { - background: #eeeeee; -} -.fuelux .repeater-thumbnail-cont .selectable.selected:hover { - background: #dddddd; -} -.fuelux .spinbox { - display: inline-block; - position: relative; -} -.fuelux .spinbox.digits-3 { - width: 60px; -} -.fuelux .spinbox.disabled .spinbox-buttons { - cursor: not-allowed; -} -.fuelux .spinbox .spinbox-input { - float: left; - padding-bottom: 3px; - /* Magic number */ - padding: 0px 25px 0px 7px; -} -.fuelux .spinbox .spinbox-input::-ms-clear { - display: none; -} -.fuelux .spinbox .btn { - position: relative; - width: 20px; - height: 13px; - padding-top: 0; - padding-right: 9px; - padding-left: 9px; - overflow-y: hidden; -} -.fuelux .spinbox .btn.disabled { - cursor: not-allowed; -} -.fuelux .spinbox .spinbox-buttons { - position: absolute; - height: 28px; - width: 20px; - right: 2px; -} -.fuelux .spinbox .spinbox-up { - padding: 0 0 14px 1px; - top: 2px; -} -.fuelux .spinbox .spinbox-up .glyphicon-chevron-up { - position: relative; - top: 0px; -} -.fuelux .spinbox .btn-group > .btn.spinbox-up { - border-top-right-radius: 4px; -} -.fuelux .spinbox .spinbox-down { - padding: 0 0 8px 1px; - top: 2px; - height: 15px; - border-bottom-left-radius: 4px; -} -.fuelux .spinbox .spinbox-down .glyphicon-chevron-down { - position: relative; - left: 0; - top: 0; -} -.fuelux .spinbox input::-ms-clear { - display: none; -} -.fuelux .scheduler { - /* ------------------------------- - START DATE/TIME - ------------------------------- */ - /* ------------------------------- - TIMEZONE - ------------------------------- */ - /* ------------------------------- - REPEAT PANELS - ------------------------------- */ - /* ------------------------------- - END - ------------------------------- */ -} -.fuelux .scheduler .control-label { - min-width: 7em; -} -.fuelux .scheduler .inline-form-text { - float: left; - line-height: 27px; - margin-top: 4px; -} -.fuelux .scheduler .start-datetime.form-group { - margin-bottom: 0; -} -.fuelux .scheduler .start-datetime .form-group { - margin-left: 0; -} -.fuelux .scheduler .start-datetime .combobox { - max-width: 9em; -} -.fuelux .scheduler .start-datetime .combobox .dropdown-menu { - max-height: 200px; - overflow: auto; -} -.fuelux .scheduler .start-datetime .dropdown { - float: left; - margin: 0 10px 0 0; -} -.fuelux .scheduler .timezone-container .input-group { - max-width: 20em; -} -.fuelux .scheduler .timezone-container .dropdown-label { - height: 18px; - white-space: nowrap; - max-width: 20em; - overflow: hidden; - text-overflow: ellipsis; -} -.fuelux .scheduler .timezone-container .dropdown-menu { - max-height: 200px; - overflow: auto; -} -.fuelux .scheduler .repeat-panel { - margin-left: 0; -} -.fuelux .scheduler .repeat-panel label { - font-weight: normal; -} -.fuelux .scheduler .repeat-panel .radio { - margin-right: 10px; -} -.fuelux .scheduler .repeat-panel .form-group { - margin-left: 0; -} -.fuelux .scheduler .repeat-interval { - margin-left: 0; - *zoom: 1; -} -.fuelux .scheduler .repeat-interval:before, -.fuelux .scheduler .repeat-interval:after { - display: table; - content: ""; - line-height: 0; -} -.fuelux .scheduler .repeat-interval:after { - clear: both; -} -.fuelux .scheduler .repeat-interval .form-group { - margin-left: 0; -} -.fuelux .scheduler .repeat-interval .dropdown-menu { - max-height: 200px; - overflow: auto; -} -.fuelux .scheduler .repeat-interval .repeat-every-panel { - float: left; -} -.fuelux .scheduler .repeat-interval .repeat-every-panel .repeat-every-pretext { - padding: 0 10px; -} -.fuelux .scheduler .repeat-interval .repeat-every-panel .spinbox { - float: left; - margin-right: 10px; -} -.fuelux .scheduler .repeat-interval .repeat-every-panel .spinbox input { - margin-bottom: 0; -} -.fuelux .scheduler .repeat-monthly .repeat-monthly-date { - margin-top: 10px; - *zoom: 1; -} -.fuelux .scheduler .repeat-monthly .repeat-monthly-date:before, -.fuelux .scheduler .repeat-monthly .repeat-monthly-date:after { - display: table; - content: ""; - line-height: 0; -} -.fuelux .scheduler .repeat-monthly .repeat-monthly-date:after { - clear: both; -} -.fuelux .scheduler .repeat-monthly .repeat-monthly-date .selectlist { - margin-left: 5px; -} -.fuelux .scheduler .repeat-monthly .repeat-monthly-day { - margin-top: 10px; - *zoom: 1; -} -.fuelux .scheduler .repeat-monthly .repeat-monthly-day:before, -.fuelux .scheduler .repeat-monthly .repeat-monthly-day:after { - display: table; - content: ""; - line-height: 0; -} -.fuelux .scheduler .repeat-monthly .repeat-monthly-day:after { - clear: both; -} -.fuelux .scheduler .repeat-monthly .month-days { - margin-left: 10px; -} -.fuelux .scheduler .repeat-yearly .repeat-yearly-date { - margin-top: 10px; - *zoom: 1; -} -.fuelux .scheduler .repeat-yearly .repeat-yearly-date:before, -.fuelux .scheduler .repeat-yearly .repeat-yearly-date:after { - display: table; - content: ""; - line-height: 0; -} -.fuelux .scheduler .repeat-yearly .repeat-yearly-date:after { - clear: both; -} -.fuelux .scheduler .repeat-yearly .repeat-yearly-date .year-month-day { - margin-left: 10px; -} -.fuelux .scheduler .repeat-yearly .year-month-days { - margin-left: 10px; -} -.fuelux .scheduler .repeat-yearly .year-month { - margin-left: 10px; -} -.fuelux .scheduler .repeat-yearly .repeat-yearly-day { - margin-top: 10px; - *zoom: 1; -} -.fuelux .scheduler .repeat-yearly .repeat-yearly-day:before, -.fuelux .scheduler .repeat-yearly .repeat-yearly-day:after { - display: table; - content: ""; - line-height: 0; -} -.fuelux .scheduler .repeat-yearly .repeat-yearly-day:after { - clear: both; -} -.fuelux .scheduler .repeat-yearly .repeat-yearly-day .repeat-yearly-day-text { - margin-left: 10px; -} -.fuelux .scheduler .repeat-weekly button:not(.active) { - background-color: #ffffff; -} -.fuelux .scheduler .repeat-weekly .btn-group.disabled { - position: relative; - opacity: 0.65; -} -.fuelux .scheduler .repeat-weekly .btn-group.disabled:before { - background: transparent; - bottom: 0; - content: ""; - left: 0; - position: absolute; - right: 0; - top: 0; - z-index: 5; -} -.fuelux .scheduler .selectlist { - float: left; -} -.fuelux .scheduler label.radio { - float: left; - line-height: 27px; -} -.fuelux .scheduler label.radio input { - margin-top: 8px; -} -.fuelux .scheduler .repeat-end .end-after { - float: left; - display: inline-block; - margin-right: 10px; -} -.fuelux .scheduler .repeat-end .form-group { - margin-left: 0; -} -.fuelux .scheduler input::-ms-clear { - display: none; -} -.fuelux .search.disabled .input-group-btn { - cursor: not-allowed; -} -.fuelux .search input::-ms-clear { - display: none; -} -.fuelux .selectlist.disabled { - cursor: not-allowed; -} -.fuelux .selectlist .selected-label { - overflow: hidden; - min-width: 2em; -} -.fuelux .selectlist .dropdown-menu { - min-width: inherit; - overflow-y: auto; -} -.fuelux .selectlist .btn.dropdown-toggle { - text-align: left; - padding-right: 28px; -} -.fuelux .selectlist .btn.dropdown-toggle .caret { - margin: auto; - position: absolute; - top: 0; - bottom: 0; - right: 12px; -} -.fuelux .button-sizer, -.fuelux .selectlist-sizer { - display: inline-block; - position: absolute; - visibility: hidden; - top: 0; - float: left; -} -.fuelux .button-sizer .selectlist, -.fuelux .selectlist-sizer .selectlist { - display: block !important; -} -.fuelux .button-sizer .dropdown-menu, -.fuelux .selectlist-sizer .dropdown-menu { - display: block; - min-width: inherit; -} -.fuelux .button-sizer .selected-label, -.fuelux .selectlist-sizer .selected-label { - width: auto !important; -} -.fuelux .picker { - display: inline-block; - position: relative; -} -.fuelux .picker[data-ellipsis="true"].showing input.picker-field { - overflow: visible; - text-overflow: clip; - white-space: normal; -} -.fuelux .picker[data-ellipsis="true"] input.picker-field { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.fuelux .picker[data-ellipsis="true"] input.picker-field::-ms-clear { - display: none; -} -.fuelux .picker[data-ellipsis="true"] textarea.picker-field[readonly] { - overflow: hidden; -} -.fuelux .picker.showing .picker-footer, -.fuelux .picker.showing .picker-header, -.fuelux .picker.showing .picker-popup { - display: block; - z-index: 1; -} -.fuelux .picker.showing input.picker-field, -.fuelux .picker.showing textarea.picker-field { - background: #ffffff; - border: 1px solid #cccccc; - box-shadow: none; - position: relative; - z-index: 1; -} -.fuelux .picker input.picker-field, -.fuelux .picker textarea.picker-field { - resize: none; -} -.fuelux .picker input.picker-field[readonly], -.fuelux .picker textarea.picker-field[readonly] { - background: #ffffff; - cursor: auto; -} -.fuelux .picker input.picker-field[readonly].glass, -.fuelux .picker textarea.picker-field[readonly].glass { - background: none; -} -.fuelux .picker input.picker-field[readonly].glass:hover, -.fuelux .picker textarea.picker-field[readonly].glass:hover { - background: #d9edf7; - cursor: pointer; -} -.fuelux .picker input.picker-field:focus, -.fuelux .picker textarea.picker-field:focus { - border: 1px solid #cccccc; - box-shadow: none; -} -.fuelux .picker-cancel { - font-size: 12px; - margin-right: 4px; - vertical-align: middle; -} -.fuelux .picker-footer, -.fuelux .picker-header { - display: none; - left: 0; - line-height: 1; - right: 0; -} -.fuelux .picker-footer { - padding: 8px 10px 8px 0; - text-align: right; - bottom: 0; - position: absolute; -} -.fuelux .picker-header { - height: 31px; - padding: 8px 0 0px 10px; -} -.fuelux .picker-header h1, -.fuelux .picker-header h2, -.fuelux .picker-header h3, -.fuelux .picker-header h4, -.fuelux .picker-header h5, -.fuelux .picker-header h6 { - margin: 0; -} -.fuelux .picker-popup { - background: #d9edf7; - background-clip: padding-box; - border: 1px solid #cccccc; - border-radius: 4px; - box-shadow: 0 0 0 1px #ffffff inset; - display: none; - position: absolute; - padding-left: 6px; - padding-right: 6px; - height: 234px; - width: 350px; - margin: 4px 0; -} -.fuelux .picker .picker-body.well { - background-color: #fff; - overflow: scroll; - padding: 0; - height: 165px; -} -.fuelux .picker .tree { - border: none; -} -.fuelux .picker .glass { - background: transparent; - border: 1px solid #ffffff; - box-shadow: none; -} -.fuelux .picker .glass:hover { - background: #d9edf7; - border-color: #5b9dd9; - cursor: pointer; -} -.fuelux .picker .glass:hover[disabled] { - background: transparent; - border-color: #ffffff; - cursor: not-allowed; -} -.fuelux .picker .glass:focus { - background: #ffffff; - border-color: #5b9dd9; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.75), 0 0 8px rgba(91, 157, 217, 0.6); - cursor: auto; -} -.fuelux .picker .glass:focus[disabled] { - background: transparent; - border-color: #ffffff; - cursor: not-allowed; -} -.fuelux .picker .glass[disabled] { - cursor: not-allowed; -} -.fuelux .tree { - border: 1px solid #999999; - border-radius: 4px 4px 4px 4px; - padding: 10px 15px 0 15px; - overflow-x: auto; - overflow-y: auto; - position: relative; - list-style: none; -} -.fuelux .tree *:focus { - outline: none; -} -.fuelux .tree button:focus { - color: #999999; -} -.fuelux .tree ul { - padding-left: 0; - margin-top: 0; - margin-bottom: 0; - list-style: none; -} -.fuelux .tree li { - margin: 0; - margin-top: 5px; - margin-bottom: 5px; -} -.fuelux .tree .tree-loader { - margin-left: 45px; -} -.fuelux .tree .tree-open > .tree-branch-header .glyphicon-play { - transform: rotate(90deg); - -ms-transform: rotate(90deg); - -webkit-transform: rotate(90deg); - position: relative; -} -.fuelux .tree [data-children=false] > .tree-branch-header .icon-caret:before { - content: '\00a0'; -} -.fuelux .tree .tree-branch .tree-branch-header { - position: relative; - border-radius: 6px; - white-space: nowrap; -} -.fuelux .tree .tree-branch .tree-branch-header .tree-branch-name:hover { - color: #999999; -} -.fuelux .tree .tree-branch .tree-branch-header .glyphicon-play { - font-size: 10px; - padding-right: 5px; - padding-left: 7px; -} -.fuelux .tree .tree-branch .tree-branch-header .glyphicon-play:before { - position: relative; - top: -2px; -} -.fuelux .tree .tree-branch .tree-branch-header .tree-branch-name { - white-space: nowrap; - border-radius: 6px; - background-color: transparent; - border: 0; -} -.fuelux .tree .tree-branch .tree-branch-header label { - font-weight: normal; - padding-left: 3px; - margin-bottom: 0; - cursor: pointer; -} -.fuelux .tree .tree-branch .tree-branch-children { - margin-left: 14px; -} -.fuelux .tree .tree-branch[haschildren='false'] .icon-caret, -.fuelux .tree .tree-branch[data-has-children='false'] .icon-caret { - visibility: hidden; -} -.fuelux .tree .tree-item { - white-space: nowrap; - position: relative; - cursor: pointer; - border-radius: 6px; - margin-left: 26px; -} -.fuelux .tree .tree-item .tree-item-name { - white-space: nowrap; - border-radius: 6px; - background-color: transparent; - border: 0; -} -.fuelux .tree .tree-item .tree-item-name:hover { - color: #999999; -} -.fuelux .tree .tree-item.tree-selected .tree-item-name { - background-color: #eeeeee; - color: #333333; -} -.fuelux .tree .tree-item label { - font-weight: normal; - padding-left: 7px; - margin-bottom: 0; - cursor: pointer; -} -.fuelux .tree .icon-caret:hover + .tree-branch-name { - color: #999999; -} -.fuelux .tree.tree-folder-select .tree-branch .icon-caret { - background-color: transparent; - border: 0; -} -.fuelux .tree.tree-folder-select .tree-branch .icon-caret:hover { - cursor: pointer; - color: #999999; -} -.fuelux .tree.tree-folder-select .tree-branch > .tree-branch-name { - padding: 1px 5px 0 5px; - border-radius: 6px; -} -.fuelux .tree.tree-folder-select .tree-branch > .tree-branch-name.tree-selected { - background-color: #eeeeee; -} -.fuelux .tree.tree-folder-select .tree-branch.tree-selected > .tree-branch-header .tree-branch-name { - background-color: #eeeeee; -} -.fuelux .tree.tree-folder-select .tree-branch.tree-selected > .tree-branch-header .tree-branch-name:hover { - background-color: #eeeeee; -} -.fuelux .wizard { - *zoom: 1; - border: 1px solid #d4d4d4; - border-radius: 4px; - background-color: #fafafa; - position: relative; - min-height: 48px; -} -.fuelux .wizard:before, -.fuelux .wizard:after { - display: table; - content: ""; - line-height: 0; -} -.fuelux .wizard:after { - clear: both; -} -.fuelux .wizard.no-steps-container { - overflow: hidden; -} -.fuelux .wizard .steps-container { - border-radius: 4px 4px 0 0; - overflow: hidden; -} -.fuelux .wizard > ul.steps, -.fuelux .wizard > .steps-container > ul.steps { - list-style: none outside none; - padding: 0; - margin: 0; - width: 999999px; -} -.fuelux .wizard > ul.steps.previous-disabled li.complete, -.fuelux .wizard > .steps-container > ul.steps.previous-disabled li.complete { - cursor: default; -} -.fuelux .wizard > ul.steps.previous-disabled li.complete:hover, -.fuelux .wizard > .steps-container > ul.steps.previous-disabled li.complete:hover { - background: #f5f5f5; - color: #468847; - cursor: default; -} -.fuelux .wizard > ul.steps.previous-disabled li.complete:hover .chevron:before, -.fuelux .wizard > .steps-container > ul.steps.previous-disabled li.complete:hover .chevron:before { - border-left-color: #f5f5f5; -} -.fuelux .wizard > ul.steps li, -.fuelux .wizard > .steps-container > ul.steps li { - float: left; - margin: 0; - padding: 0 20px 0 30px; - height: 46px; - line-height: 46px; - position: relative; - background: #eeeeee; - color: #999999; - font-size: 16px; - cursor: not-allowed; -} -.fuelux .wizard > ul.steps li .chevron, -.fuelux .wizard > .steps-container > ul.steps li .chevron { - border: 24px solid transparent; - border-left: 14px solid #d4d4d4; - border-right: 0; - display: block; - position: absolute; - right: -14px; - top: 0; - z-index: 1; -} -.fuelux .wizard > ul.steps li .chevron:before, -.fuelux .wizard > .steps-container > ul.steps li .chevron:before { - border: 24px solid transparent; - border-left: 14px solid #eeeeee; - border-right: 0; - content: ""; - display: block; - position: absolute; - right: 1px; - top: -24px; -} -.fuelux .wizard > ul.steps li.complete, -.fuelux .wizard > .steps-container > ul.steps li.complete { - background: #f5f5f5; - color: #468847; -} -.fuelux .wizard > ul.steps li.complete:hover, -.fuelux .wizard > .steps-container > ul.steps li.complete:hover { - background: #e2eaee; - cursor: pointer; -} -.fuelux .wizard > ul.steps li.complete:hover .chevron:before, -.fuelux .wizard > .steps-container > ul.steps li.complete:hover .chevron:before { - border-left: 14px solid #e2eaee; -} -.fuelux .wizard > ul.steps li.complete .chevron:before, -.fuelux .wizard > .steps-container > ul.steps li.complete .chevron:before { - border-left: 14px solid #f5f5f5; -} -.fuelux .wizard > ul.steps li.active, -.fuelux .wizard > .steps-container > ul.steps li.active { - background: #eef7fb; - color: #3a87ad; - cursor: default; -} -.fuelux .wizard > ul.steps li.active .chevron:before, -.fuelux .wizard > .steps-container > ul.steps li.active .chevron:before { - border-left: 14px solid #eef7fb; -} -.fuelux .wizard > ul.steps li.active .badge, -.fuelux .wizard > .steps-container > ul.steps li.active .badge { - background-color: #3a87ad; -} -.fuelux .wizard > ul.steps li .badge, -.fuelux .wizard > .steps-container > ul.steps li .badge { - margin-right: 8px; -} -.fuelux .wizard > ul.steps li .badge-success, -.fuelux .wizard > .steps-container > ul.steps li .badge-success { - background-color: #468847; -} -.fuelux .wizard > ul.steps li:first-child, -.fuelux .wizard > .steps-container > ul.steps li:first-child { - border-radius: 4px 0 0 0; - padding-left: 20px; -} -.fuelux .wizard.rtl { - direction: rtl; -} -.fuelux .wizard.rtl > ul.steps, -.fuelux .wizard.rtl > .steps-container > ul.steps { - right: 0; - left: auto; - float: right; -} -.fuelux .wizard.rtl > ul.steps.previous-disabled li.complete:hover .chevron:before, -.fuelux .wizard.rtl > .steps-container > ul.steps.previous-disabled li.complete:hover .chevron:before { - border-right-color: #f5f5f5; -} -.fuelux .wizard.rtl > ul.steps li, -.fuelux .wizard.rtl > .steps-container > ul.steps li { - float: right; -} -.fuelux .wizard.rtl > ul.steps li .chevron, -.fuelux .wizard.rtl > .steps-container > ul.steps li .chevron { - right: auto; - left: -14px; - border-right: 14px solid #cccccc; - border-left: 0; -} -.fuelux .wizard.rtl > ul.steps li .chevron:before, -.fuelux .wizard.rtl > .steps-container > ul.steps li .chevron:before { - right: auto; - left: 1px; - border-right: 14px solid #eeeeee; - border-left: 0; -} -.fuelux .wizard.rtl > ul.steps li.active .chevron:before, -.fuelux .wizard.rtl > .steps-container > ul.steps li.active .chevron:before { - border-right: 14px solid #eef7fb; -} -.fuelux .wizard.rtl > ul.steps li.complete .chevron:before, -.fuelux .wizard.rtl > .steps-container > ul.steps li.complete .chevron:before { - border-right: 14px solid #f5f5f5; -} -.fuelux .wizard.rtl > ul.steps li.complete:hover .chevron:before, -.fuelux .wizard.rtl > .steps-container > ul.steps li.complete:hover .chevron:before { - border-right: 14px solid #e2eaee; - border-left: none; -} -.fuelux .wizard.rtl > ul.steps li .badge, -.fuelux .wizard.rtl > .steps-container > ul.steps li .badge { - margin-left: 8px; -} -.fuelux .wizard.rtl > .actions { - right: auto; - left: 0; - float: left; - border-left: none; - border-right: 1px solid #d4d4d4; - border-radius: 4px 0 0 0; -} -.fuelux .wizard.rtl > .actions .btn-prev span { - margin-left: 5px; - margin-right: 0; -} -.fuelux .wizard.rtl > .actions .btn-next span { - margin-left: 0; - margin-right: 5px; -} -.fuelux .wizard > .actions { - z-index: 1000; - position: absolute; - right: 0; - top: 0; - line-height: 46px; - float: right; - padding-left: 15px; - padding-right: 15px; - vertical-align: middle; - background-color: #e6e6e6; - border-left: 1px solid #d4d4d4; - border-radius: 0 4px 0 0; -} -.fuelux .wizard > .actions a { - line-height: 45px; - font-size: 12px; - margin-right: 8px; -} -.fuelux .wizard > .actions .btn-prev[disabled] { - cursor: not-allowed; -} -.fuelux .wizard > .actions .btn-prev span { - margin-right: 5px; -} -.fuelux .wizard > .actions .btn-next[disabled] { - cursor: not-allowed; -} -.fuelux .wizard > .actions .btn-next span { - margin-left: 5px; -} -.fuelux .wizard .step-content { - border-top: 1px solid #cccccc; - padding: 10px; - float: left; - width: 100%; -} -.fuelux .wizard .step-content .step-pane { - display: none; -} -.fuelux .wizard .step-content > .active { - display: block; -} -.fuelux .wizard .step-content > .active .btn-group .active { - display: inline-block; -} -.fuelux .wizard.complete > .actions .btn-next .glyphicon { - display: none; -} -.fuelux .serif { - font-family: Georgia, "Times New Roman", Times, serif; -} -.fuelux .monospace { - font-family: Monaco, Menlo, Consolas, "Courier New", monospace; -} -.fuelux .text-sm { - font-size: 14px * 0.85; -} -.fuelux .text-lg { - font-size: 14px * 1.25; -} -.fuelux .padding-xs { - padding: 5px; -} -.fuelux .padding-xs-horizontal { - padding: 0 5px; -} -.fuelux .padding-xs-vertical { - padding: 5px 0; -} -.fuelux .padding-xs-top { - padding-top: 5px; -} -.fuelux .padding-xs-bottom { - padding-bottom: 5px; -} -.fuelux .padding-xs-left { - padding-left: 5px; -} -.fuelux .padding-xs-right { - padding-right: 5px; -} -.fuelux .padding-sm { - padding: 10px; -} -.fuelux .padding-sm-horizontal { - padding: 0 10px; -} -.fuelux .padding-sm-vertical { - padding: 10px 0; -} -.fuelux .padding-sm-top { - padding-top: 10px; -} -.fuelux .padding-sm-bottom { - padding-bottom: 10px; -} -.fuelux .padding-sm-left { - padding-left: 10px; -} -.fuelux .padding-sm-right { - padding-right: 10px; -} -.fuelux .padding-md { - padding: 15px; -} -.fuelux .padding-md-horizontal { - padding: 0 15px; -} -.fuelux .padding-md-vertical { - padding: 15px 0; -} -.fuelux .padding-md-top { - padding-top: 15px; -} -.fuelux .padding-md-bottom { - padding-bottom: 15px; -} -.fuelux .padding-md-left { - padding-left: 15px; -} -.fuelux .padding-md-right { - padding-right: 15px; -} -.fuelux .padding-lg { - padding: 20px; -} -.fuelux .padding-lg-horizontal { - padding: 0 20px; -} -.fuelux .padding-lg-vertical { - padding: 20px 0; -} -.fuelux .padding-lg-top { - padding-top: 20px; -} -.fuelux .padding-lg-bottom { - padding-bottom: 20px; -} -.fuelux .padding-lg-left { - padding-left: 20px; -} -.fuelux .padding-lg-right { - padding-right: 20px; -} -.fuelux .margin-xs { - margin: 5px; -} -.fuelux .margin-xs-horizontal { - margin: 0 5px; -} -.fuelux .margin-xs-vertical { - margin: 5px 0; -} -.fuelux .margin-xs-top { - margin-top: 5px; -} -.fuelux .margin-xs-bottom { - margin-bottom: 5px; -} -.fuelux .margin-xs-left { - margin-left: 5px; -} -.fuelux .margin-xs-right { - margin-right: 5px; -} -.fuelux .margin-sm { - margin: 10px; -} -.fuelux .margin-sm-horizontal { - margin: 0 10px; -} -.fuelux .margin-sm-vertical { - margin: 10px 0; -} -.fuelux .margin-sm-top { - margin-top: 10px; -} -.fuelux .margin-sm-bottom { - margin-bottom: 10px; -} -.fuelux .margin-sm-left { - margin-left: 10px; -} -.fuelux .margin-sm-right { - margin-right: 10px; -} -.fuelux .margin-md { - margin: 15px; -} -.fuelux .margin-md-horizontal { - margin: 0 15px; -} -.fuelux .margin-md-vertical { - margin: 15px 0; -} -.fuelux .margin-md-top { - margin-top: 15px; -} -.fuelux .margin-md-bottom { - margin-bottom: 15px; -} -.fuelux .margin-md-left { - margin-left: 15px; -} -.fuelux .margin-md-right { - margin-right: 15px; -} -.fuelux .margin-lg { - margin: 20px; -} -.fuelux .margin-lg-horizontal { - margin: 0 20px; -} -.fuelux .margin-lg-vertical { - margin: 20px 0; -} -.fuelux .margin-lg-top { - margin-top: 20px; -} -.fuelux .margin-lg-bottom { - margin-bottom: 20px; -} -.fuelux .margin-lg-left { - margin-left: 20px; -} -.fuelux .margin-lg-right { - margin-right: 20px; -} -.fuelux .data-label { - text-transform: uppercase; - font-size: 10px; - margin-bottom: 2px; - text-shadow: 0 1px #ffffff; - color: #666666; -} -.fuelux .data-value { - font-size: 14px; -} -.fuelux .section-heading { - font-size: 16px; - color: #333333; - margin: 0 0 10px; - padding: 0; - text-shadow: 0 1px #ffffff; -} -/*# sourceMappingURL=fuelux.css.map */ \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/dist/css/fuelux.css.map b/elgg_clean/bower_components/fuelux/dist/css/fuelux.css.map deleted file mode 100644 index 25b9340d..00000000 --- a/elgg_clean/bower_components/fuelux/dist/css/fuelux.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["less/fuelux.less","less/mixins.less","less/icons.less","less/forms.less","less/checkbox.less","less/checkbox-no-js.less","less/radio.less","less/radio-no-js.less","less/combobox.less","less/datepicker.less","less/infinite-scroll.less","less/intelligent-dropdown.less","less/loader.less","less/pillbox.less","less/placard.less","less/repeater.less","less/repeater-list.less","less/repeater-thumbnail.less","less/spinbox.less","less/scheduler.less","less/search.less","less/selectlist.less","less/picker.less","less/tree.less","less/wizard.less","less/utility.less","less/variables.less"],"names":[],"mappings":"AAAA,SAAS;ACCT;EACC,QAAA;;AACA,SAAC;AACD,SAAC;EACA,cAAA;EACA,SAAS,EAAT;EAGA,cAAA;;AAED,SAAC;EACA,WAAA;;ACZF;EACC,aAAa,QAAb;EACA,SAAQ,sBAAR;EACA,SAAQ,8BAAsC,OAAO,0vDACgrD,OAAO,aACvuD,uBAA+B,OAAO,iBACtC,8BAAsC,OAAO,MAHlD;EAIA,mBAAA;EACA,kBAAA;;AASD,OAEC,uBAAsB;AAFvB,OAGC,wBAAuB;EDsCtB,aAD8B,QAC9B;EACA,6BAAA;EACA,8BAAA;EACA,+BAAA;EACA,+BAAA;EACA,cAAA;EACA,WAAA;EACA,mCAAA;EACA,kCAAA;;ACjDF,OAOC,wBAAuB;EACtB,SAAS,OAAT;;AARF,OAWC,qBAAoB;EACnB,SAAS,OAAT;;AAZF,OAeC,qBAAoB;EACnB,SAAS,OAAT;;AAhBF,OAmBC,qBAAoB;EACnB,SAAS,OAAT;;AApBF,OAuBC,qBAAoB;EACnB,SAAS,OAAT;;AAxBF,OA2BC,qBAAoB;EACnB,SAAS,OAAT;;AA5BF,OA+BC,qBAAoB;EACnB,SAAS,OAAT;;AAhCF,OAmCC,qBAAoB;EACnB,SAAS,OAAT;;AApCF,OAuCC,qBAAoB;EACnB,SAAS,OAAT;;AAxCF,OA6CC,mBAAkB;EAChB,SAAS,OAAT;;ACnDF,OAFO,OAEN;AAAD,OAFuB,UAEtB;EACA,eAAA;;AAEA,OALM,OAEN,OAGC;AAAD,OALsB,UAEtB,OAGC;EACA,UAAA;;AAJF,OAFO,OAEN,OAQA;AARD,OAFuB,UAEtB,OAQA;EACC,gBAAA;;AAWA,KADI,OArBC,OAsBJ,MAAM;AAAP,KADI,OArBiB,UAsBpB,MAAM;AAAP,KADI,OArBC,OAgBH,OAMD,MAAM;AAAP,KADI,OArBiB,UAgBnB,OAMD,MAAM;AAAP,YADmB,OArBd,OAsBJ,MAAM;AAAP,YADmB,OArBE,UAsBpB,MAAM;AAAP,YADmB,OArBd,OAgBH,OAMD,MAAM;AAAP,YADmB,OArBE,UAgBnB,OAMD,MAAM;AAAP,OAtBK,OAqBmB,MACvB,MAAM;AAAP,OAtBqB,UAqBG,MACvB,MAAM;AAAP,OAtBK,OAgBH,OAKsB,MACvB,MAAM;AAAP,OAtBqB,UAgBnB,OAKsB,MACvB,MAAM;AAAP,OAtBK,OAqB4B,aAChC,MAAM;AAAP,OAtBqB,UAqBY,aAChC,MAAM;AAAP,OAtBK,OAgBH,OAK+B,aAChC,MAAM;AAAP,OAtBqB,UAgBnB,OAK+B,aAChC,MAAM;EA9BT,kGAAA;;AAwBA,OAhBO,OA2BN;AAXD,OAhBuB,UA2BtB;AAXE,OAhBI,OAgBH,OAWH;AAXE,OAhBoB,UAgBnB,OAWH;AAXD,OAhBO,OA2BC;AAXR,OAhBuB,UA2Bf;AAXL,OAhBI,OAgBH,OAWI;AAXL,OAhBoB,UAgBnB,OAWI;AAAc,KAAK,OA3BpB;AA2Be,KAAK,OA3BJ;AA2BD,KAAK,OA3BpB,OAgBH;AAWkB,KAAK,OA3BJ,UAgBnB;EAYF,eAAA;EACA,mBAAA;;AAMC,OAnCI,OAgCL,UAEC,MAAK,iBAAiB,IAAI,UACxB;AAAF,OAnCoB,UAgCrB,UAEC,MAAK,iBAAiB,IAAI,UACxB;AAAF,OAnCI,OAgBH,OAgBF,UAEC,MAAK,iBAAiB,IAAI,UACxB;AAAF,OAnCoB,UAgBnB,OAgBF,UAEC,MAAK,iBAAiB,IAAI,UACxB;AAAF,OAnCI,OAgCL,UAEuC,MAAK,cAAc,IAAI,UAC3D;AAAF,OAnCoB,UAgCrB,UAEuC,MAAK,cAAc,IAAI,UAC3D;AAAF,OAnCI,OAgBH,OAgBF,UAEuC,MAAK,cAAc,IAAI,UAC3D;AAAF,OAnCoB,UAgBnB,OAgBF,UAEuC,MAAK,cAAc,IAAI,UAC3D;EACD,YAAA;EACA,kBAAA;;AAED,OAvCI,OAgCL,UAEC,MAAK,iBAAiB,IAAI,UAKzB,QAAS;AAAV,OAvCoB,UAgCrB,UAEC,MAAK,iBAAiB,IAAI,UAKzB,QAAS;AAAV,OAvCI,OAgBH,OAgBF,UAEC,MAAK,iBAAiB,IAAI,UAKzB,QAAS;AAAV,OAvCoB,UAgBnB,OAgBF,UAEC,MAAK,iBAAiB,IAAI,UAKzB,QAAS;AAAV,OAvCI,OAgCL,UAEuC,MAAK,cAAc,IAAI,UAK5D,QAAS;AAAV,OAvCoB,UAgCrB,UAEuC,MAAK,cAAc,IAAI,UAK5D,QAAS;AAAV,OAvCI,OAgBH,OAgBF,UAEuC,MAAK,cAAc,IAAI,UAK5D,QAAS;AAAV,OAvCoB,UAgBnB,OAgBF,UAEuC,MAAK,cAAc,IAAI,UAK5D,QAAS;EACT,yBAAA;EACA,UAAA;EACA,UAAA;;AA1BJ,OAhBO,OA+CN,MAAK,iBAAiB,IAAI;AA/B3B,OAhBuB,UA+CtB,MAAK,iBAAiB,IAAI;AA/BxB,OAhBI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI;AA/BxB,OAhBoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI;AA/B3B,OAhBO,OA+CgC,MAAK,cAAc,IAAI;AA/B9D,OAhBuB,UA+CgB,MAAK,cAAc,IAAI;AA/B3D,OAhBI,OAgBH,OA+BmC,MAAK,cAAc,IAAI;AA/B3D,OAhBoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI;EAE5D,kBAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,gBAAA;EACA,MAAM,gBAAN;EACA,SAAA;;;AAEA,OA1DK,OA+CN,MAAK,iBAAiB,IAAI,UAWvB;AAAF,OA1DqB,UA+CtB,MAAK,iBAAiB,IAAI,UAWvB;AAAF,OA1DK,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAWvB;AAAF,OA1DqB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAWvB;AAAF,OA1DK,OA+CgC,MAAK,cAAc,IAAI,UAW1D;AAAF,OA1DqB,UA+CgB,MAAK,cAAc,IAAI,UAW1D;AAAF,OA1DK,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAW1D;AAAF,OA1DqB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAW1D;EACD,eAAA;;AACA,OA5DI,OA+CN,MAAK,iBAAiB,IAAI,UAWvB,QAEA;AAAD,OA5DoB,UA+CtB,MAAK,iBAAiB,IAAI,UAWvB,QAEA;AAAD,OA5DI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAWvB,QAEA;AAAD,OA5DoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAWvB,QAEA;AAAD,OA5DI,OA+CgC,MAAK,cAAc,IAAI,UAW1D,QAEA;AAAD,OA5DoB,UA+CgB,MAAK,cAAc,IAAI,UAW1D,QAEA;AAAD,OA5DI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAW1D,QAEA;AAAD,OA5DoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAW1D,QAEA;EACA,aAAY,sBAAZ;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;EACA,oBAAA;EACA,cAAA;EACA,WAAA;EACA,yBAAA;EACA,cAAA;EACA,cAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,aAAA;EACA,mBAAA;EACA,eAAA;EACA,qBAAA;EACA,gBAAA;EACA,UAAA;EACA,SAAS,EAAT;;AAQF,OAxFK,OA+CN,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ;AAAT,OAxFqB,UA+CtB,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ;AAAT,OAxFK,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ;AAAT,OAxFqB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ;AAAT,OAxFK,OA+CgC,MAAK,cAAc,IAAI,UAyC3D,OAAQ;AAAT,OAxFqB,UA+CgB,MAAK,cAAc,IAAI,UAyC3D,OAAQ;AAAT,OAxFK,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAyC3D,OAAQ;AAAT,OAxFqB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAyC3D,OAAQ;AAAS,OAxFb,OA+CN,MAAK,iBAAiB,IAAI,UAyCN,MAAO;AAAR,OAxFG,UA+CtB,MAAK,iBAAiB,IAAI,UAyCN,MAAO;AAAR,OAxFb,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAyCN,MAAO;AAAR,OAxFG,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAyCN,MAAO;AAAR,OAxFb,OA+CgC,MAAK,cAAc,IAAI,UAyCzC,MAAO;AAAR,OAxFG,UA+CgB,MAAK,cAAc,IAAI,UAyCzC,MAAO;AAAR,OAxFb,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAyCzC,MAAO;AAAR,OAxFG,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAyCzC,MAAO;EACzB,cAAA;EACA,cAAA;EACA,eAAA;;AAEA,OA7FI,OA+CN,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ,QAKP;AAAD,OA7FoB,UA+CtB,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ,QAKP;AAAD,OA7FI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ,QAKP;AAAD,OA7FoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ,QAKP;AAAD,OA7FI,OA+CgC,MAAK,cAAc,IAAI,UAyC3D,OAAQ,QAKP;AAAD,OA7FoB,UA+CgB,MAAK,cAAc,IAAI,UAyC3D,OAAQ,QAKP;AAAD,OA7FI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAyC3D,OAAQ,QAKP;AAAD,OA7FoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAyC3D,OAAQ,QAKP;AAAD,OA7FI,OA+CN,MAAK,iBAAiB,IAAI,UAyCN,MAAO,QAKxB;AAAD,OA7FoB,UA+CtB,MAAK,iBAAiB,IAAI,UAyCN,MAAO,QAKxB;AAAD,OA7FI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAyCN,MAAO,QAKxB;AAAD,OA7FoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAyCN,MAAO,QAKxB;AAAD,OA7FI,OA+CgC,MAAK,cAAc,IAAI,UAyCzC,MAAO,QAKxB;AAAD,OA7FoB,UA+CgB,MAAK,cAAc,IAAI,UAyCzC,MAAO,QAKxB;AAAD,OA7FI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAyCzC,MAAO,QAKxB;AAAD,OA7FoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAyCzC,MAAO,QAKxB;EAjGJ,kEAAA;EAmGI,aAAA;;AAGD,OAlGI,OA+CN,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ;AAUR,OAlGoB,UA+CtB,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ;AAUR,OAlGI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ;AAUR,OAlGoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ;AAUR,OAlGI,OA+CgC,MAAK,cAAc,IAAI,UAyC3D,OAAQ;AAUR,OAlGoB,UA+CgB,MAAK,cAAc,IAAI,UAyC3D,OAAQ;AAUR,OAlGI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAyC3D,OAAQ;AAUR,OAlGoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAyC3D,OAAQ;AAUR,OAlGI,OA+CN,MAAK,iBAAiB,IAAI,UAyCN,MAAO;AAUzB,OAlGoB,UA+CtB,MAAK,iBAAiB,IAAI,UAyCN,MAAO;AAUzB,OAlGI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAyCN,MAAO;AAUzB,OAlGoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAyCN,MAAO;AAUzB,OAlGI,OA+CgC,MAAK,cAAc,IAAI,UAyCzC,MAAO;AAUzB,OAlGoB,UA+CgB,MAAK,cAAc,IAAI,UAyCzC,MAAO;AAUzB,OAlGI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAyCzC,MAAO;AAUzB,OAlGoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAyCzC,MAAO;AAUtB,OAlGC,OA+CN,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ,QAUJ;AAAD,OAlGiB,UA+CtB,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ,QAUJ;AAAD,OAlGC,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ,QAUJ;AAAD,OAlGiB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAyCxB,OAAQ,QAUJ;AAAD,OAlGC,OA+CgC,MAAK,cAAc,IAAI,UAyC3D,OAAQ,QAUJ;AAAD,OAlGiB,UA+CgB,MAAK,cAAc,IAAI,UAyC3D,OAAQ,QAUJ;AAAD,OAlGC,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAyC3D,OAAQ,QAUJ;AAAD,OAlGiB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAyC3D,OAAQ,QAUJ;AAAD,OAlGC,OA+CN,MAAK,iBAAiB,IAAI,UAyCN,MAAO,QAUrB;AAAD,OAlGiB,UA+CtB,MAAK,iBAAiB,IAAI,UAyCN,MAAO,QAUrB;AAAD,OAlGC,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAyCN,MAAO,QAUrB;AAAD,OAlGiB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAyCN,MAAO,QAUrB;AAAD,OAlGC,OA+CgC,MAAK,cAAc,IAAI,UAyCzC,MAAO,QAUrB;AAAD,OAlGiB,UA+CgB,MAAK,cAAc,IAAI,UAyCzC,MAAO,QAUrB;AAAD,OAlGC,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAyCzC,MAAO,QAUrB;AAAD,OAlGiB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAyCzC,MAAO,QAUrB;EACH,cAAA;EACA,eAAA;;AAID,OAxGI,OA+CN,MAAK,iBAAiB,IAAI,UAwDxB,OAAO,MAAO;AACd,OAxGoB,UA+CtB,MAAK,iBAAiB,IAAI,UAwDxB,OAAO,MAAO;AACd,OAxGI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAwDxB,OAAO,MAAO;AACd,OAxGoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAwDxB,OAAO,MAAO;AACd,OAxGI,OA+CgC,MAAK,cAAc,IAAI,UAwD3D,OAAO,MAAO;AACd,OAxGoB,UA+CgB,MAAK,cAAc,IAAI,UAwD3D,OAAO,MAAO;AACd,OAxGI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAwD3D,OAAO,MAAO;AACd,OAxGoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAwD3D,OAAO,MAAO;AACd,OAxGI,OA+CN,MAAK,iBAAiB,IAAI,UAwDA,MAAM,MAAO;AACrC,OAxGoB,UA+CtB,MAAK,iBAAiB,IAAI,UAwDA,MAAM,MAAO;AACrC,OAxGI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAwDA,MAAM,MAAO;AACrC,OAxGoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAwDA,MAAM,MAAO;AACrC,OAxGI,OA+CgC,MAAK,cAAc,IAAI,UAwDnC,MAAM,MAAO;AACrC,OAxGoB,UA+CgB,MAAK,cAAc,IAAI,UAwDnC,MAAM,MAAO;AACrC,OAxGI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAwDnC,MAAM,MAAO;AACrC,OAxGoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAwDnC,MAAM,MAAO;AACrC,OAxGI,OA+CN,MAAK,iBAAiB,IAAI,UAwDuB,MAAM,MAAO;AAC5D,OAxGoB,UA+CtB,MAAK,iBAAiB,IAAI,UAwDuB,MAAM,MAAO;AAC5D,OAxGI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAwDuB,MAAM,MAAO;AAC5D,OAxGoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAwDuB,MAAM,MAAO;AAC5D,OAxGI,OA+CgC,MAAK,cAAc,IAAI,UAwDZ,MAAM,MAAO;AAC5D,OAxGoB,UA+CgB,MAAK,cAAc,IAAI,UAwDZ,MAAM,MAAO;AAC5D,OAxGI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAwDZ,MAAM,MAAO;AAC5D,OAxGoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAwDZ,MAAM,MAAO;AAC5D,OAxGI,OA+CN,MAAK,iBAAiB,IAAI,UAwD8C,QAAQ,MAAO;AACrF,OAxGoB,UA+CtB,MAAK,iBAAiB,IAAI,UAwD8C,QAAQ,MAAO;AACrF,OAxGI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAwD8C,QAAQ,MAAO;AACrF,OAxGoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAwD8C,QAAQ,MAAO;AACrF,OAxGI,OA+CgC,MAAK,cAAc,IAAI,UAwDW,QAAQ,MAAO;AACrF,OAxGoB,UA+CgB,MAAK,cAAc,IAAI,UAwDW,QAAQ,MAAO;AACrF,OAxGI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAwDW,QAAQ,MAAO;AACrF,OAxGoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAwDW,QAAQ,MAAO;AAClF,OAxGC,OA+CN,MAAK,iBAAiB,IAAI,UAwDxB,OAAO,MAAO,QACV;AAAD,OAxGiB,UA+CtB,MAAK,iBAAiB,IAAI,UAwDxB,OAAO,MAAO,QACV;AAAD,OAxGC,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAwDxB,OAAO,MAAO,QACV;AAAD,OAxGiB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAwDxB,OAAO,MAAO,QACV;AAAD,OAxGC,OA+CgC,MAAK,cAAc,IAAI,UAwD3D,OAAO,MAAO,QACV;AAAD,OAxGiB,UA+CgB,MAAK,cAAc,IAAI,UAwD3D,OAAO,MAAO,QACV;AAAD,OAxGC,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAwD3D,OAAO,MAAO,QACV;AAAD,OAxGiB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAwD3D,OAAO,MAAO,QACV;AAAD,OAxGC,OA+CN,MAAK,iBAAiB,IAAI,UAwDA,MAAM,MAAO,QACjC;AAAD,OAxGiB,UA+CtB,MAAK,iBAAiB,IAAI,UAwDA,MAAM,MAAO,QACjC;AAAD,OAxGC,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAwDA,MAAM,MAAO,QACjC;AAAD,OAxGiB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAwDA,MAAM,MAAO,QACjC;AAAD,OAxGC,OA+CgC,MAAK,cAAc,IAAI,UAwDnC,MAAM,MAAO,QACjC;AAAD,OAxGiB,UA+CgB,MAAK,cAAc,IAAI,UAwDnC,MAAM,MAAO,QACjC;AAAD,OAxGC,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAwDnC,MAAM,MAAO,QACjC;AAAD,OAxGiB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAwDnC,MAAM,MAAO,QACjC;AAAD,OAxGC,OA+CN,MAAK,iBAAiB,IAAI,UAwDuB,MAAM,MAAO,QACxD;AAAD,OAxGiB,UA+CtB,MAAK,iBAAiB,IAAI,UAwDuB,MAAM,MAAO,QACxD;AAAD,OAxGC,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAwDuB,MAAM,MAAO,QACxD;AAAD,OAxGiB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAwDuB,MAAM,MAAO,QACxD;AAAD,OAxGC,OA+CgC,MAAK,cAAc,IAAI,UAwDZ,MAAM,MAAO,QACxD;AAAD,OAxGiB,UA+CgB,MAAK,cAAc,IAAI,UAwDZ,MAAM,MAAO,QACxD;AAAD,OAxGC,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAwDZ,MAAM,MAAO,QACxD;AAAD,OAxGiB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAwDZ,MAAM,MAAO,QACxD;AAAD,OAxGC,OA+CN,MAAK,iBAAiB,IAAI,UAwD8C,QAAQ,MAAO,QACjF;AAAD,OAxGiB,UA+CtB,MAAK,iBAAiB,IAAI,UAwD8C,QAAQ,MAAO,QACjF;AAAD,OAxGC,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAwD8C,QAAQ,MAAO,QACjF;AAAD,OAxGiB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAwD8C,QAAQ,MAAO,QACjF;AAAD,OAxGC,OA+CgC,MAAK,cAAc,IAAI,UAwDW,QAAQ,MAAO,QACjF;AAAD,OAxGiB,UA+CgB,MAAK,cAAc,IAAI,UAwDW,QAAQ,MAAO,QACjF;AAAD,OAxGC,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAwDW,QAAQ,MAAO,QACjF;AAAD,OAxGiB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAwDW,QAAQ,MAAO,QACjF;EACH,cAAA;EACA,eAAA;;AAQD,OAlHI,OA+CN,MAAK,iBAAiB,IAAI,UAkExB,qBACE;AAAF,OAlHoB,UA+CtB,MAAK,iBAAiB,IAAI,UAkExB,qBACE;AAAF,OAlHI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAkExB,qBACE;AAAF,OAlHoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAkExB,qBACE;AAAF,OAlHI,OA+CgC,MAAK,cAAc,IAAI,UAkE3D,qBACE;AAAF,OAlHoB,UA+CgB,MAAK,cAAc,IAAI,UAkE3D,qBACE;AAAF,OAlHI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAkE3D,qBACE;AAAF,OAlHoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAkE3D,qBACE;AAAF,OAlHI,OA+CN,MAAK,iBAAiB,IAAI,UAkEA,UACtB;AAAF,OAlHoB,UA+CtB,MAAK,iBAAiB,IAAI,UAkEA,UACtB;AAAF,OAlHI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAkEA,UACtB;AAAF,OAlHoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAkEA,UACtB;AAAF,OAlHI,OA+CgC,MAAK,cAAc,IAAI,UAkEnC,UACtB;AAAF,OAlHoB,UA+CgB,MAAK,cAAc,IAAI,UAkEnC,UACtB;AAAF,OAlHI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAkEnC,UACtB;AAAF,OAlHoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAkEnC,UACtB;AAAF,OAlHI,OA+CN,MAAK,iBAAiB,IAAI,UAkEa,SACnC;AAAF,OAlHoB,UA+CtB,MAAK,iBAAiB,IAAI,UAkEa,SACnC;AAAF,OAlHI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAkEa,SACnC;AAAF,OAlHoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAkEa,SACnC;AAAF,OAlHI,OA+CgC,MAAK,cAAc,IAAI,UAkEtB,SACnC;AAAF,OAlHoB,UA+CgB,MAAK,cAAc,IAAI,UAkEtB,SACnC;AAAF,OAlHI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAkEtB,SACnC;AAAF,OAlHoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAkEtB,SACnC;AAAS,OAlHP,OA+CN,MAAK,iBAAiB,IAAI,UAkExB,qBACa,QAAO;AAAT,OAlHS,UA+CtB,MAAK,iBAAiB,IAAI,UAkExB,qBACa,QAAO;AAAT,OAlHP,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAkExB,qBACa,QAAO;AAAT,OAlHS,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAkExB,qBACa,QAAO;AAAT,OAlHP,OA+CgC,MAAK,cAAc,IAAI,UAkE3D,qBACa,QAAO;AAAT,OAlHS,UA+CgB,MAAK,cAAc,IAAI,UAkE3D,qBACa,QAAO;AAAT,OAlHP,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAkE3D,qBACa,QAAO;AAAT,OAlHS,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAkE3D,qBACa,QAAO;AAAT,OAlHP,OA+CN,MAAK,iBAAiB,IAAI,UAkEA,UACX,QAAO;AAAT,OAlHS,UA+CtB,MAAK,iBAAiB,IAAI,UAkEA,UACX,QAAO;AAAT,OAlHP,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAkEA,UACX,QAAO;AAAT,OAlHS,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAkEA,UACX,QAAO;AAAT,OAlHP,OA+CgC,MAAK,cAAc,IAAI,UAkEnC,UACX,QAAO;AAAT,OAlHS,UA+CgB,MAAK,cAAc,IAAI,UAkEnC,UACX,QAAO;AAAT,OAlHP,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAkEnC,UACX,QAAO;AAAT,OAlHS,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAkEnC,UACX,QAAO;AAAT,OAlHP,OA+CN,MAAK,iBAAiB,IAAI,UAkEa,SACxB,QAAO;AAAT,OAlHS,UA+CtB,MAAK,iBAAiB,IAAI,UAkEa,SACxB,QAAO;AAAT,OAlHP,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UAkEa,SACxB,QAAO;AAAT,OAlHS,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UAkEa,SACxB,QAAO;AAAT,OAlHP,OA+CgC,MAAK,cAAc,IAAI,UAkEtB,SACxB,QAAO;AAAT,OAlHS,UA+CgB,MAAK,cAAc,IAAI,UAkEtB,SACxB,QAAO;AAAT,OAlHP,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UAkEtB,SACxB,QAAO;AAAT,OAlHS,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UAkEtB,SACxB,QAAO;EACnB,cAAA;EACA,YAAA;EACA,mBAAA;EACA,aAAA;EACA,gBAAA;;AAKD,OA5HI,OA+CN,MAAK,iBAAiB,IAAI,UA4ExB,QAAS,QACR;AAAD,OA5HoB,UA+CtB,MAAK,iBAAiB,IAAI,UA4ExB,QAAS,QACR;AAAD,OA5HI,OAgBH,OA+BH,MAAK,iBAAiB,IAAI,UA4ExB,QAAS,QACR;AAAD,OA5HoB,UAgBnB,OA+BH,MAAK,iBAAiB,IAAI,UA4ExB,QAAS,QACR;AAAD,OA5HI,OA+CgC,MAAK,cAAc,IAAI,UA4E3D,QAAS,QACR;AAAD,OA5HoB,UA+CgB,MAAK,cAAc,IAAI,UA4E3D,QAAS,QACR;AAAD,OA5HI,OAgBH,OA+BmC,MAAK,cAAc,IAAI,UA4E3D,QAAS,QACR;AAAD,OA5HoB,UAgBnB,OA+BmC,MAAK,cAAc,IAAI,UA4E3D,QAAS,QACR;EACA,mBAAA;EACA,qBAAA;;AAOF,OArIK,OAoIL,UACC;AAAD,OArIqB,UAoIrB,UACC;AAAD,OArIK,OAgBH,OAoHF,UACC;AAAD,OArIqB,UAgBnB,OAoHF,UACC;EACA,SAAA;EACA,QAAA;;AAQD,OA/IK,OA6IN,UACA,MAAK,iBAAiB,IAAI,UACvB;AAAF,OA/IqB,UA6ItB,UACA,MAAK,iBAAiB,IAAI,UACvB;AAAF,OA/IK,OA6IN,UACsC,MAAK,cAAc,IAAI,UAC1D;AAAF,OA/IqB,UA6ItB,UACsC,MAAK,cAAc,IAAI,UAC1D;EACD,UAAA;EACA,kBAAA;;AAMH,OAvJO,OAuJN;AAAD,OAvJuB,UAuJtB;EACA,eAAA;;AAIA,OA5JM,OAuJN,OAKC;AAAD,OA5JsB,UAuJtB,OAKC;EACA,OAAA;EACA,QAAA;;AAUH,OAEC,UAAS;AAFV,OAEsB,OAAM;EAC1B,WAAA;EACA,iBAAA;;AAMF,OAEC,UAAS,UAAW;AAFrB,OAEuC,OAAM,UAAW;EACtD,WAAA;EACA,UAAA;EACA,iBAAA;EACA,gBAAA;;AAEA,OAND,UAAS,UAAW,iBAMjB;AAAF,OANqC,OAAM,UAAW,iBAMpD;EACD,mBAAA;EACA,eAAA;;ACtMH,OAEC;;;AAME,OANF,UAEE,UAIE,YAAW;EACZ,gBAAA;;AAGD,OAVF,UAEE,UAQE,MAAK;EACN,yBAAA;;AAID,OAfF,UAEE,UAaC,QAAS,MAAK;AAbhB,OAFD,UAEE,UAaiC,MAAK,QAAQ;EAC7C,mBAAA;EACA,kBAAA;;AAnBJ,OAEC,UAsBC,MAAK,iBAAiB,MAAO;AAxB/B,OAEC,UAuBC,MAAK,iBAAiB,MAAO;AAzB/B,OAEC,UAwBC,gBAAe;EAEd,cAAA;;AA5BH,OAEC,UA6BC,MAAK,iBAAiB,SAAS,MAAO;AA/BxC,OAEC,UA8BC,MAAK,iBAAiB,SAAS,MAAO;AACtC,OA/BD,UA+BE,SAAU,MAAK;EAEf,cAAA;;AAnCH,OAwCC,iBAAiB;EAChB,cAAA;;AAzCF,OA4CC,mBAAkB,gBAAgB,gBAAgB;EACjD,UAAA;EACA,QAAA;;AA9CF,OAiDC;EACC,kBAAA;;;;AAEA,OAHD,iBAGE;EHMD,aGL6B,sBHK7B;EACA,6BAAA;EACA,8BAAA;EACA,+BAAA;EACA,+BAAA;EACA,cAAA;EACA,WAAA;EACA,mCAAA;EACA,kCAAA;EGZC,yBAAA;EACA,kBAAA;EACA,cAAA;EACA,SAAS,GAAT;EACA,cAAA;EACA,YAAA;EACA,SAAA;EACA,oBAAA;EACA,kBAAA;EACA,QAAA;EACA,WAAA;;AAID,OAnBD,iBAmBE,OAAO;AAAS,OAnBlB,iBAmBmB,MAAM;EACvB,cAAA;EACA,eAAA;EACA,kEAAA;;AAIA,OA1BF,iBAyBE,UACC;EACA,SAAA;EACA,QAAA;;AAKD,OAjCF,iBAgCE,QACC;EACA,mBAAA;EACA,qBAAA;EACA,SAAS,OAAT;;AAIF,OAxCD,iBAwCE;EACA,mBAAA;EACA,YAAA;;AAEA,OA5CF,iBAwCE,SAIC;EAEA,mBAAA;EACA,YAAA;;AAKD,OApDF,iBAmDE,gBACC;EACA,OAAA;EACA,QAAA;;AAGD,OAzDF,iBAmDE,gBAMC;EACA,yBAAA;EACA,UAAA;;AAEA,OA7DH,iBAmDE,gBAMC,UAIC;EACA,SAAA;EACA,QAAA;;AAGD,OAlEH,iBAmDE,gBAMC,UASC;EACA,mBAAA;EACA,kBAAA;;AArHL,OAiDC,iBA2EC,MAAK,iBAAiB,MAAO;EAC5B,cAAA;;AA7HH,OAkIC,MAAK,gBAAgB;EACpB,kBAAA;;AC5HE,OAJH,UAEC,MAAK,iBAAiB,IAAI,UACvB,QACA;AAAD,OAJQ,iBAEV,MAAK,iBAAiB,IAAI,UACvB,QACA;EACA,kBAAA;EACA,UAAA;;AAMA,OAZJ,UAEC,MAAK,iBAAiB,IAAI,UAQxB,QACE,QACA;AAAD,OAZO,iBAEV,MAAK,iBAAiB,IAAI,UAQxB,QACE,QACA;EACA,YAAA;EACA,SAAS,OAAT;EACA,gBAAA;EACA,iBAAA;EACA,cAAA;EACA,gBAAA;;AAOH,OAzBF,UAwBE,WACE,mBAAkB;AAApB,OAzBS,iBAwBT,WACE,mBAAkB;EACnB,kBAAA;;AACA,OA3BH,UAwBE,WACE,mBAAkB,UAElB;AAAD,OA3BQ,iBAwBT,WACE,mBAAkB,UAElB;EACA,gBAAA;;AAUD,OAJH,UAEE,UACA,MAAK,iBAAiB,IAAI,UACvB;EACD,UAAA;;AChCL,OACC;;;AACC,OADD,OACE;EACA,YAAA;EACA,iBAAA;;AAEA,OALF,OACE,UAIE,SAAQ;EACT,gBAAA;;AAED,OARF,OACE,UAOE,MAAK;EACN,UAAA;EACA,yBAAA;EACA,kBAAA;;AACA,OAZH,OACE,UAOE,MAAK,aAIL;EACA,SAAA;EACA,QAAA;;AAED,OAhBH,OACE,UAOE,MAAK,aAQL;EACA,SAAA;EACA,SAAA;;AAGF,OArBF,OACE,UAoBC,QAAS,MAAK;AACf,OAtBF,OACE,UAqBE,MAAK,aAAa;EACnB,mBAAA;EACA,kBAAA;;AAzBJ,OACC,OA6BC,MAAK,cAAc,MAAO;AA9B5B,OACC,OA8BC,MAAK,cAAc,MAAO;AA/B5B,OACC,OA+BC,aAAY;EACX,cAAA;;AAjCH,OAoCC,iBAAiB;EAChB,cAAA;;AAGA,OADD,mBAAkB,aAAa,aAC7B;EACA,UAAA;EACA,QAAA;;AAED,OALD,mBAAkB,aAAa,aAK7B;EACA,UAAA;EACA,SAAA;;AA9CH,OAiDC;EACC,kBAAA;;;AAlDF,OAiDC,cAGC;EACC,YAAA;EACA,iBAAA;;AAEA,OAPF,cAGC,WAIE;EACA,mBAAA;EACA,kBAAA;;AAGF,OAZD,cAYE;EACA,uBAAA;EACA,kBAAA;EACA,SAAS,GAAT;EACA,WAAA;EACA,SAAA;EACA,kBAAA;EACA,QAAA;EACA,UAAA;;AAED,OAtBD,cAsBE;EACA,yBAAA;EACA,mBAAA;EACA,SAAS,GAAT;EACA,YAAA;EACA,SAAA;EACA,kBAAA;EACA,QAAA;EACA,WAAA;;AAGA,OAjCF,cAgCE,QACC;EACA,mBAAA;;AAED,OApCF,cAgCE,QAIC;EACA,mBAAA;EACA,qBAAA;;AAGF,OAzCD,cAyCE;EACA,mBAAA;EACA,YAAA;;AAEA,OA7CF,cAyCE,SAIC;EACA,mBAAA;;AAED,OAhDF,cAyCE,SAOC;EACA,mBAAA;EACA,YAAA;;AAID,OAtDF,cAqDE,aACC;EACA,SAAA;EACA,QAAA;;AAED,OA1DF,cAqDE,aAKC;EACA,OAAA;EACA,QAAA;;AAED,OA9DF,cAqDE,aASC;EACA,UAAA;EAEA,yBAAA;;AAEA,OAnEH,cAqDE,aASC,UAKC;EACA,SAAA;EACA,SAAA;;AAED,OAvEH,cAqDE,aASC,UASC;EACA,SAAA;EACA,QAAA;;AAED,OA3EH,cAqDE,aASC,UAaC;EACA,mBAAA;EACA,kBAAA;;AA9HL,OAiDC,cAmFC,MAAK,cAAc,MAAO;EACzB,cAAA;;AArIH,OAyIC,MAAK,aAAa;EACjB,kBAAA;;AClJF,OACC,OAEC,MAAK,cAAc,IAAI;AAHzB,OACS,cAEP,MAAK,cAAc,IAAI;;;;AAGrB,OALH,OAEC,MAAK,cAAc,IAAI,UAEpB,QACA;AAAD,OALK,cAEP,MAAK,cAAc,IAAI,UAEpB,QACA;EACA,kBAAA;EACA,UAAA;;AAOA,OAdJ,OAEC,MAAK,cAAc,IAAI,UASrB,QAEE,QACA;AAAD,OAdI,cAEP,MAAK,cAAc,IAAI,UASrB,QAEE,QACA;EACA,mBAAA;;EACA,YAAY,+FAAZ;;EACA,YAAY,kEAAkE,yBAA4B,0BAA6B,0BAAuC,0BAA9K;;EACA,YAAY,kGAAZ;;EACA,YAAY,6FAAZ;;EACA,YAAY,8FAAZ;;EACA,YAAY,sFAAZ;;EACA,kHAAA;;;AASF,OA/BH,OAEC,MAAK,cAAc,IAAI,UA2BrB,MAAO,QAEN;AAAD,OA/BK,cAEP,MAAK,cAAc,IAAI,UA2BrB,MAAO,QAEN;AAAD,OA/BH,OAEC,MAAK,cAAc,IAAI,UA2BJ,OAAQ,QAExB;AAAD,OA/BK,cAEP,MAAK,cAAc,IAAI,UA2BJ,OAAQ,QAExB;AAAD,OA/BH,OAEC,MAAK,cAAc,IAAI,UA2Bc,MAAO,QAEzC;AAAD,OA/BK,cAEP,MAAK,cAAc,IAAI,UA2Bc,MAAO,QAEzC;EJ5BJ,kEAAA;;AImCG,OAtCH,OAEC,MAAK,cAAc,IAAI,UAmCrB,OAAO,MAAO,QACb;AAAD,OAtCK,cAEP,MAAK,cAAc,IAAI,UAmCrB,OAAO,MAAO,QACb;AAAD,OAtCH,OAEC,MAAK,cAAc,IAAI,UAmCG,MAAM,MAAO,QACpC;AAAD,OAtCK,cAEP,MAAK,cAAc,IAAI,UAmCG,MAAM,MAAO,QACpC;AAAD,OAtCH,OAEC,MAAK,cAAc,IAAI,UAmC0B,MAAM,MAAO,QAC3D;AAAD,OAtCK,cAEP,MAAK,cAAc,IAAI,UAmC0B,MAAM,MAAO,QAC3D;AAAD,OAtCH,OAEC,MAAK,cAAc,IAAI,UAmCiD,QAAQ,MAAO,QACpF;AAAD,OAtCK,cAEP,MAAK,cAAc,IAAI,UAmCiD,QAAQ,MAAO,QACpF;EACA,mBAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,eAAA;;AAGD,OA9CH,OAEC,MAAK,cAAc,IAAI,UAmCrB,OAAO,MAAO;AASd,OA9CK,cAEP,MAAK,cAAc,IAAI,UAmCrB,OAAO,MAAO;AASd,OA9CH,OAEC,MAAK,cAAc,IAAI,UAmCG,MAAM,MAAO;AASrC,OA9CK,cAEP,MAAK,cAAc,IAAI,UAmCG,MAAM,MAAO;AASrC,OA9CH,OAEC,MAAK,cAAc,IAAI,UAmC0B,MAAM,MAAO;AAS5D,OA9CK,cAEP,MAAK,cAAc,IAAI,UAmC0B,MAAM,MAAO;AAS5D,OA9CH,OAEC,MAAK,cAAc,IAAI,UAmCiD,QAAQ,MAAO;AASrF,OA9CK,cAEP,MAAK,cAAc,IAAI,UAmCiD,QAAQ,MAAO;AASlF,OA9CN,OAEC,MAAK,cAAc,IAAI,UAmCrB,OAAO,MAAO,QASV;AAAD,OA9CE,cAEP,MAAK,cAAc,IAAI,UAmCrB,OAAO,MAAO,QASV;AAAD,OA9CN,OAEC,MAAK,cAAc,IAAI,UAmCG,MAAM,MAAO,QASjC;AAAD,OA9CE,cAEP,MAAK,cAAc,IAAI,UAmCG,MAAM,MAAO,QASjC;AAAD,OA9CN,OAEC,MAAK,cAAc,IAAI,UAmC0B,MAAM,MAAO,QASxD;AAAD,OA9CE,cAEP,MAAK,cAAc,IAAI,UAmC0B,MAAM,MAAO,QASxD;AAAD,OA9CN,OAEC,MAAK,cAAc,IAAI,UAmCiD,QAAQ,MAAO,QASjF;AAAD,OA9CE,cAEP,MAAK,cAAc,IAAI,UAmCiD,QAAQ,MAAO,QASjF;EACH,cAAA;EACA,eAAA;;AChDH,OADA,UACC,SACA;EACC,mBAAA;;AAID,OAPD,UAMA,MACE;EACA,aAAA;;ACNF,OAFD,YAEE;EACA,oBAAA;EACA,iBAAA;;AAFD,OAFD,YAEE,SAIA;EACC,SAAA;EACA,UAAA;EACA,6BAAA;;AAGD,OAZF,YAEE,SAUC;EACA,aAAA;EACA,mBAAA;EACA,WAAA;;;AAHD,OAZF,YAEE,SAUC,KAKA;EACC,gCAAA;;AANF,OAZF,YAEE,SAUC,KAUA,MAAK;EACJ,kBAAA;EACA,SAAS,OAAT;EACA,cAAA;EACA,gBAAA;EACA,kBAAA;;AAfF,OAZF,YAEE,SAUC,KAkBA;AAlBD,OAZF,YAEE,SAUC,KAkBI;EACH,eAAA;EACA,YAAA;EACA,kBAAA;EACA,sBAAA;EACA,aAAA;;AAvBF,OAZF,YAEE,SAUC,KA0BA,GACC;AA3BF,OAZF,YAEE,SAUC,KA0BA,GACI;EACF,cAAA;EACA,qBAAA;EACA,mBAAA;EACA,YAAA;EACA,qBAAA;EACA,WAAA;;AAjCH,OAZF,YAEE,SAUC,KA0BA,GAUC;EACC,iBAAA;;AArCH,OAZF,YAEE,SAUC,KA0BA,GAcC;EACC,cAAA;EAEA,kBAAA;;AAEA,OAzDL,YAEE,SAUC,KA0BA,GAcC,KAKE;EACA,mBAAA;EACA,qBAAA;;AAIF,OA/DJ,YAEE,SAUC,KA0BA,GAyBE,YACA;EACC,yBAAA;;AAIF,OArEJ,YAEE,SAUC,KA0BA,GA+BE;AAAa,OArElB,YAEE,SAUC,KA0BA,GA+BgB;EACd,mBAAA;;AACA,OAvEL,YAEE,SAUC,KA0BA,GA+BE,WAEC;AAAD,OAvEL,YAEE,SAUC,KA0BA,GA+BgB,WAEb;EACA,2BAAA;EACA,8BAAA;EACA,iBAAA;;AAED,OA5EL,YAEE,SAUC,KA0BA,GA+BE,WAOC;AAAD,OA5EL,YAEE,SAUC,KA0BA,GA+BgB,WAOb;EACA,4BAAA;EACA,+BAAA;EACA,kBAAA;;AAIF,OAnFJ,YAEE,SAUC,KA0BA,GA6CE,KACA;AADD,OAnFJ,YAEE,SAUC,KA0BA,GA6CE,KACG;EACF,cAAA;;AAIF,OAzFJ,YAEE,SAUC,KA0BA,GAmDE,WACA;AADD,OAzFJ,YAEE,SAUC,KA0BA,GAmDE,WACG;EACF,eAAA;EACA,kBAAA;;AAEA,OA9FN,YAEE,SAUC,KA0BA,GAmDE,WACA,EAIE;AAAD,OA9FN,YAEE,SAUC,KA0BA,GAmDE,WACG,OAID;EACA,6BAAA;EACA,SAAA;EACA,SAAS,GAAT;EACA,cAAA;EACA,SAAA;EACA,kBAAA;EACA,UAAA;EACA,QAAA;;AAGD,OAzGN,YAEE,SAUC,KA0BA,GAmDE,WACA,EAeE;AAAD,OAzGN,YAEE,SAUC,KA0BA,GAmDE,WACG,OAeD;EACA,gBAAA;;AAKH,OA/GJ,YAEE,SAUC,KA0BA,GAyEE,SACA;EACC,mBAAA;;AAEA,OAnHN,YAEE,SAUC,KA0BA,GAyEE,SACA,KAGE;EACA,mBAAA;;AALH,OA/GJ,YAEE,SAUC,KA0BA,GAyEE,SASA;AATD,OA/GJ,YAEE,SAUC,KA0BA,GAyEE,SASG;EACF,cAAA;;AAGD,OA5HL,YAEE,SAUC,KA0BA,GAyEE,SAaC;EACA,oCAAA;;AADD,OA5HL,YAEE,SAUC,KA0BA,GAyEE,SAaC,YAEA;AAFD,OA5HL,YAEE,SAUC,KA0BA,GAyEE,SAaC,YAEG;EACF,cAAA;;AAIA,OAnIP,YAEE,SAUC,KA0BA,GAyEE,SAaC,YAMA,KACE,MACA;AADD,OAnIP,YAEE,SAUC,KA0BA,GAyEE,SAaC,YAMA,KACE,MACG;EACF,qBAAA;;AAzHP,OAZF,YAEE,SAUC,KAiIA;EACC,iBAAA;EACA,YAAA;EACA,mBAAA;;AAIF,OApJF,YAEE,SAkJC;ERpJH,QAAA;;AACA,OQDA,YAEE,SAkJC,ORnJF;AACD,OQFA,YAEE,SAkJC,ORlJF;EACA,cAAA;EACA,SAAS,EAAT;EAGA,cAAA;;AAED,OQTA,YAEE,SAkJC,OR3IF;EACA,WAAA;;AQ0IC,OApJF,YAEE,SAkJC,OAGA;EACC,SAAA;EACA,UAAA;EACA,6BAAA;;AANF,OApJF,YAEE,SAkJC,OASA;EACC,cAAA;EACA,kBAAA;EACA,cAAA;EACA,YAAA;EACA,cAAA;EACA,eAAA;EACA,iBAAA;EACA,0BAAA;EACA,sBAAA;;AAEC,OAxKL,YAEE,SAkJC,OASA,OAWG;EACA,cAAA;EACA,0BAAA;;AAGD,OA7KL,YAEE,SAkJC,OASA,OAgBG;EACA,eAAA;EACA,oBAAA;EACA,qBAAA;;AA5BJ,OApJF,YAEE,SAkJC,OASA,OAsBE;EACC,eAAA;EACA,SAAA;EACA,UAAA;;AAlCJ,OApJF,YAEE,SAkJC,OASA,OAsBE,OAKC;EACC,aAAA;;AAEA,OA3LP,YAEE,SAkJC,OASA,OAsBE,OAKC,KAGE;EACA,eAAA;;AAxCN,OApJF,YAEE,SAkJC,OA8CA;AA9CD,OApJF,YAEE,SAkJC,OA8CO;EACN,mBAAA;EACA,4BAAA;EACA,mBAAA;EACA,eAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,WAAA;;AAtDF,OApJF,YAEE,SAkJC,OA8CA,MAUC,KAAI;AAxDN,OApJF,YAEE,SAkJC,OA8CO,MAUN,KAAI;EACH,cAAA;EACA,eAAA;EACA,iBAAA;;AAGD,OAlNJ,YAEE,SAkJC,OA8CA,MAgBE;AAAD,OAlNJ,YAEE,SAkJC,OA8CO,MAgBL;EACA,mBAAA;;AA/DH,OApJF,YAEE,SAkJC,OAmEA;EACC,YAAA;;AApEF,OApJF,YAEE,SAkJC,OAmEA,MAGC,KAAI;EACH,iBAAA;;AAKH,OAhOF,YAEE,SA8NC;EACA,mBAAA;EACA,4BAAA;EACA,0BAAA;EACA,6BAAA;EACA,YAAA;EACA,eAAA;EACA,iBAAA;;AAPD,OAhOF,YAEE,SA8NC,OASA;EACC,cAAA;EACA,eAAA;EACA,0BAAA;;AAEA,OA9OJ,YAEE,SA8NC,OASA,kBAKE;EACA,cAAA;EACA,0BAAA;;AAGD,OAnPJ,YAEE,SA8NC,OASA,kBAUE;EACA,cAAA;EACA,eAAA;EACA,oBAAA;;AAEA,OAxPL,YAEE,SA8NC,OASA,kBAUE,SAKC;EACA,cAAA;;AAOL,OAhQD,YAgQE;EACA,yBAAA;EACA,gBAAA;EACA,UAAA;EACA,YAAA;;AAGD,OAvQD,YAuQE;EACA,aAAA;;AADD,OAvQD,YAuQE,OAGA,GAAG;EACF,SAAA;EACA,UAAA;EACA,6BAAA;;AAGD,OAhRF,YAuQE,OASC;EACA,mBAAA;EACA,0BAAA;EACA,6BAAA;EACA,WAAA;;AAJD,OAhRF,YAuQE,OASC,OAMA;EACC,cAAA;EACA,cAAA;EACA,WAAA;EACA,iBAAA;EACA,SAAA;EACA,6BAAA;;AAEA,OA9RJ,YAuQE,OASC,OAMA,wBAQE;EACA,cAAA;;AAfH,OAhRF,YAuQE,OASC,OAmBA;EACC,YAAA;EACA,6BAAA;EACA,cAAA;;AAEA,OAxSJ,YAuQE,OASC,OAmBA,0BAKE;EACA,cAAA;;AAKH,OA9SF,YAuQE,OAuCC;AAAQ,OA9SX,YAuQE,OAuCU;EACT,WAAA;EACA,UAAA;;AAFD,OA9SF,YAuQE,OAuCC,MAIA;AAJQ,OA9SX,YAuQE,OAuCU,KAIT;EACC,aAAA;EACA,qBAAA;EACA,SAAA;EACA,cAAA;EACA,UAAA;EACA,kBAAA;;AAVF,OA9SF,YAuQE,OAuCC,MAIA,GAQC;AAZO,OA9SX,YAuQE,OAuCU,KAIT,GAQC;EACC,aAAA;;AAbH,OA9SF,YAuQE,OAuCC,MAIA,GAQC,GAGC;AAfM,OA9SX,YAuQE,OAuCU,KAIT,GAQC,GAGC;EAEC,WAAA;EACA,kBAAA;EACA,cAAA;EACA,cAAA;EACA,eAAA;EACA,iBAAA;EACA,qBAAA;;AAEA,OAvUN,YAuQE,OAuCC,MAIA,GAQC,GAGC,OAUE;AAAD,OAvUN,YAuQE,OAuCU,KAIT,GAQC,GAGC,OAUE;EACA,mBAAA;EACA,qBAAA;;AAIF,OA7UL,YAuQE,OAuCC,MAIA,GAQC,GAmBE,SACA;AADD,OA7UL,YAuQE,OAuCU,KAIT,GAQC,GAmBE,SACA;EACC,mBAAA;EACA,cAAA;;AAEA,OAlVP,YAuQE,OAuCC,MAIA,GAQC,GAmBE,SACA,OAIE;AAAD,OAlVP,YAuQE,OAuCU,KAIT,GAQC,GAmBE,SACA,OAIE;EACA,mBAAA;;AArCN,OA9SF,YAuQE,OAuCC,MA4CA;AA5CQ,OA9SX,YAuQE,OAuCU,KA4CT;EACC,mBAAA;EACA,4BAAA;EACA,gCAAA;EACA,wBAAA;EACA,cAAA;EACA,eAAA;EACA,iBAAA;EACA,iBAAA;EACA,aAAA;EACA,gBAAA;EACA,kBAAA;;AAGD,OAxWH,YAuQE,OAuCC,MA0DC;AAAD,OAxWH,YAuQE,OAuCU,KA0DR;EACA,cAAA;EACA,WAAA;;AAFD,OAxWH,YAuQE,OAuCC,MA0DC,KAIA;AAJD,OAxWH,YAuQE,OAuCU,KA0DR,KAIA;EACC,0BAAA;;AAKH,OAlXF,YAuQE,OA2GC;EACA,8BAAA;EACA,YAAA;;AAFD,OAlXF,YAuQE,OA2GC,KAIA;EACC,wBAAA;;AAMF,OA7XF,YA4XC,MACE;EACA,aAAA;;AChYJ,OAEC;EACC,gBAAA;;AAHF,OAEC,gBAGC;EACC,WAAA;EACA,kBAAA;EACA,YAAA;EACA,kBAAA;;AATH,OAEC,gBAUC;EACC,WAAA;EACA,YAAA;;AAdH,OAEC,gBAUC,qBAIC;EACC,iBAAA;EACA,WAAA;;AAlBJ,OAEC,gBAUC,qBASC;EACC,eAAA;EACA,YAAA;EACA,cAAA;EACA,WAAA;;ACzBJ,OAEC;EACC,+CAAA;EACA,4CAAA;EACA,uCAAA;;ACLF,OAEC;EACC,YAAA;EACA,eAAA;EACA,kBAAA;EACA,WAAA;;AAEA,OAND,QAME;AAAQ,OANV,QAMW;EXkDV,aAD8B,QAC9B;EACA,6BAAA;EACA,8BAAA;EACA,+BAAA;EACA,+BAAA;EACA,cAAA;EACA,WAAA;EACA,mCAAA;EACA,kCAAA;EWvDC,SAAA;EACA,cAAA;EACA,OAAA;EACA,kBAAA;EACA,QAAA;EACA,MAAA;;AAGD,OAjBD,QAiBE;EACA,SAAS,OAAT;EACA,aAAA;;AAGD,OAtBD,QAsBE,MAAM;EACN,cAAA;EACA,UAAA;;AAGD,OA3BD,QA2BE,gBAAgB;EAChB,SAAS,OAAT;;AAGD,OA/BD,QA+BE,gBAAgB;EAChB,SAAS,OAAT;;AAGD,OAnCD,QAmCE,gBAAgB;EAChB,SAAS,OAAT;;AAGD,OAvCD,QAuCE,gBAAgB;EAChB,SAAS,OAAT;;AAGD,OA3CD,QA2CE,gBAAgB;EAChB,SAAS,OAAT;;AAGD,OA/CD,QA+CE,gBAAgB;EAChB,SAAS,OAAT;;AAGD,OAnDD,QAmDE,gBAAgB;EAChB,SAAS,OAAT;;AAGD,OAvDD,QAuDE,gBAAgB;EAChB,SAAS,OAAT;;AC1DH,OAEC;EACC,yBAAA;EACA,kBAAA;EACA,YAAA;EACA,YAAA;;AAEA,OAND,SAME;EACA,6BAAA;;AAEA,OATF,SAME,eAGC,SACA;EACC,qBAAA;;AAEA,OAbJ,SAME,eAGC,SACA,oBAGE;EACA,aAAA;;AALH,OATF,SAME,eAGC,SASA;EACC,eAAA;;AAbH,OAND,SAME,eAiBA,MACC,KAAI;EACH,aAAA;;AAnBH,OAND,SAME,eAuBA;EACC,aAAA;;AAxBF,OAND,SAME,eA2BA;EACC,aAAA;;AA5BF,OAND,SAME,eA2BA,oBAGC,OAAM;EACL,aAAA;;AAKH,OA1CD,SA0CE,eACA,YACC,MACC;EACC,YAAA;;AAEA,OAhDL,SA0CE,eACA,YACC,MACC,KAGE;EACA,eAAA;;AAnDP,OAEC,SAwDC;EACC,SAAA;EACA,UAAA;EACA,WAAA;;AA7DH,OAEC,SAwDC,cAKC;EACC,WAAA;EACA,eAAA;EACA,WAAA;EACA,qBAAA;;AAEA,OAnEH,SAwDC,cAKC,QAME;EACA,2BAAA;;AAGD,OAvEH,SAwDC,cAKC,QAUE;EACA,aAAA;;AA1EL,OAEC,SAwDC,cAKC,QAcC;EACC,YAAA;EACA,cAAA;EACA,mBAAA;EACA,kBAAA;;AAEA,OAjFJ,SAwDC,cAKC,QAcC,mBAME;EACA,aAAA;EACA,YAAA;;AArFN,OAEC,SAwDC,cAKC,QA0BC;EACC,eAAA;EACA,SAAA;EACA,SAAA;;AAEA,OA5FJ,SAwDC,cAKC,QA0BC,iBAKE;EACA,SAAS,QAAT;;AAGD,OAhGJ,SAwDC,cAKC,QA0BC,iBASE;EACA,WAAA;;AAnGN,OAEC,SAwGC;EACC,kBAAA;EACA,qBAAA;EACA,WAAA;;AAEA,OA7GF,SAwGC,oBAKE;EACA,yBAAA;EACA,kBAAA;EACA,qBAAA;;AAHD,OA7GF,SAwGC,oBAKE,QAKA,MAAK;EACJ,kBAAA;EACA,cAAA;EACA,YAAA;;AAvHL,OAEC,SA0HC;EACC,YAAA;EACA,gBAAA;;AAEA,OA9HF,SA0HC,kBAIE;EACA,aAAA;EACA,YAAA;;AAlIJ,OAEC,SAoIC;EACC,eAAA;EACA,aAAA;EACA,iBAAA;;AAzIH,OAEC,SA0IC;EACC,iBAAA;EACA,gBAAA;;AA9IH,OAEC,SA0IC,SAIC;EACC,mBAAA;EACA,eAAA;EACA,iBAAA;;AAEA,OAnJH,SA0IC,SAIC,KAKE;EACA,yBAAA;;AAGD,OAvJH,SA0IC,SAIC,KASE;EACA,yBAAA;;AAMF,OA9JF,SA4JC,MAEE;EACA,aAAA;;ACjKJ,OAEC;EACC,qBAAA;EACA,kBAAA;;AAGC,OALF,SAIE,sBACC,QACA,MAAK;EACJ,iBAAA;EACA,mBAAA;EACA,mBAAA;;AALH,OAJD,SAIE,sBASA,MAAK;EACJ,gBAAA;EACA,uBAAA;EACA,mBAAA;;AAEA,OAlBH,SAIE,sBASA,MAAK,cAKH;EACA,aAAA;;AAKD,OAxBH,SAIE,sBAmBA,SAAQ,cACN;EACA,gBAAA;;AAKH,OA9BD,SA8BE,QACA;AADD,OA9BD,SA8BE,QAEA;AAFD,OA9BD,SA8BE,QAGA;EACC,cAAA;EACA,UAAA;;AALF,OA9BD,SA8BE,QAQA,MAAK;AARN,OA9BD,SA8BE,QAQqB,SAAQ;EAC5B,mBAAA;EACA,yBAAA;EACA,gBAAA;EACA,kBAAA;EACA,UAAA;;AA7CJ,OAEC,SA+CC,MAAK;AAjDP,OAEC,SA+CsB,SAAQ;EAC5B,YAAA;;AAEA,OAlDF,SA+CC,MAAK,cAGH;AAAD,OAlDF,SA+CsB,SAAQ,cAG3B;EACA,mBAAA;EACA,YAAA;;AAEA,OAtDH,SA+CC,MAAK,cAGH,UAIC;AAAD,OAtDH,SA+CsB,SAAQ,cAG3B,UAIC;EACA,gBAAA;;AAEA,OAzDJ,SA+CC,MAAK,cAGH,UAIC,MAGC;AAAD,OAzDJ,SA+CsB,SAAQ,cAG3B,UAIC,MAGC;EACA,mBAAA;EACA,eAAA;;AAKH,OAhEF,SA+CC,MAAK,cAiBH;AAAD,OAhEF,SA+CsB,SAAQ,cAiB3B;EACA,yBAAA;EACA,gBAAA;;AAIF,OAtED,SAsEE;EACA,eAAA;EACA,iBAAA;EACA,sBAAA;;AAGD,OA5ED,SA4EE;AACD,OA7ED,SA6EE;EACA,aAAA;EACA,OAAA;EACA,cAAA;EACA,kBAAA;EACA,QAAA;;AAGD,OArFD,SAqFE;EACA,oBAAA;EACA,iBAAA;EACA,SAAA;;AAGD,OA3FD,SA2FE;EACA,YAAA;EACA,oBAAA;;AAFD,OA3FD,SA2FE,OAIA;AAJD,OA3FD,SA2FE,OAII;AAJL,OA3FD,SA2FE,OAIQ;AAJT,OA3FD,SA2FE,OAIY;AAJb,OA3FD,SA2FE,OAIgB;AAJjB,OA3FD,SA2FE,OAIoB;EACnB,SAAA;;AAIF,OApGD,SAoGE;EACA,mBAAA;EACA,4BAAA;EACA,yBAAA;EACA,kBAAA;EACA,YAAA;EACA,mCAAA;EACA,aAAA;EACA,UAAA;EACA,kBAAA;EACA,WAAA;EACA,SAAA;;AAjHH,OAEC,SAkHC;EACC,uBAAA;EACA,yBAAA;EACA,gBAAA;;AAEA,OAvHF,SAkHC,OAKE;EACA,mBAAA;EACA,qBAAA;EACA,eAAA;;AAEA,OA5HH,SAkHC,OAKE,MAKC;EACA,uBAAA;EACA,qBAAA;EACA,mBAAA;;AAIF,OAnIF,SAkHC,OAiBE;EACA,mBAAA;EACA,qBAAA;EACA,gFAAA;EACA,YAAA;;AAEA,OAzIH,SAkHC,OAiBE,MAMC;EACA,uBAAA;EACA,qBAAA;EACA,mBAAA;;AAIF,OAhJF,SAkHC,OA8BE;EACA,mBAAA;;ACnJJ,OAEC;EACC,yBAAA;EACA,kBAAA;;;;;AAGC,OALF,UAIE,OACC;EACA,SAAA;EACA,OAAA;EACA,gBAAA;EACA,kBAAA;EACA,QAAA;EACA,MAAA;;AAIF,OAfD,UAeE;AACD,OAhBD,UAgBE;EAEA,mBAAA;EACA,gBAAA;EACA,YAAA;EdpBF,QAAA;;AACA,OcDA,UAeE,OddD;AAAD,OcDA,UAgBE,OdfD;AACD,OcFA,UAeE,OdbD;AAAD,OcFA,UAgBE,OddD;EACA,cAAA;EACA,SAAS,EAAT;EAGA,cAAA;;AAED,OcTA,UAeE,OdND;AAAD,OcTA,UAgBE,OdPD;EACA,WAAA;;AcaC,OAvBF,UAeE,OAQC;AAAD,OAvBF,UAgBE,OAOC;EACA,WAAA;;AAGD,OA3BF,UAeE,OAYC;AAAD,OA3BF,UAgBE,OAWC;EACA,YAAA;;AAcF,QAX2B;EACzB,OAhCH,UAeE,OAiBE;EAAD,OAhCH,UAgBE,OAgBE;EACD,OAjCH,UAeE,OAkBE;EAAD,OAjCH,UAgBE,OAiBE;IACA,WAAA;IdlCJ,QAAA;;EACA,OcDA,UAeE,OAiBE,Kd/BH;EAAD,OcDA,UAgBE,OAgBE,Kd/BH;EAAD,OcDA,UAeE,OAkBE,MdhCH;EAAD,OcDA,UAgBE,OAiBE,MdhCH;EACD,OcFA,UAeE,OAiBE,Kd9BH;EAAD,OcFA,UAgBE,OAgBE,Kd9BH;EAAD,OcFA,UAeE,OAkBE,Md/BH;EAAD,OcFA,UAgBE,OAiBE,Md/BH;IACA,cAAA;IACA,SAAS,EAAT;IAGA,cAAA;;EAED,OcTA,UAeE,OAiBE,KdvBH;EAAD,OcTA,UAgBE,OAgBE,KdvBH;EAAD,OcTA,UAeE,OAkBE,MdxBH;EAAD,OcTA,UAgBE,OAiBE,MdxBH;IACA,WAAA;;Ec4BE,OAtCH,UAeE,OAuBE;EAAD,OAtCH,UAgBE,OAsBE;IACA,kBAAA;;;AAKH,OA5CD,UA4CE;EACA,gCAAA;Ed5BD,4BAAA;EACA,2BAAA;;Ac+BA,OAjDD,UAiDE;EACA,6BAAA;EdzBD,+BAAA;EACA,8BAAA;;Ac4BA,OAtDD,UAsDE;EACA,aAAA;EACA,SAAA;EACA,kBAAA;EACA,uBAAA;EACA,QAAA;;AAGD,OA9DD,UA8DE;EACA,gBAAA;EACA,kBAAA;;AAGD,OAnED,UAmEE,WAEA;EACC,mBAAA;;AAHF,OAnED,UAmEE,WAMA;EACC,aAAA;EACA,sBAAA;EACA,YAAA;;AAEA,OA9EH,UAmEE,WAMA,wBAKE;EACA,qBAAA;;AAZH,OAnED,UAmEE,WAMA,wBASC,GAAE;EACD,gBAAA;;AAhBH,OAnED,UAmEE,WAoBA;EACC,aAAA;EACA,WAAA;;AAEA,OA3FH,UAmEE,WAoBA,0BAIE;EACA,qBAAA;;AAKH,OAjGD,UAiGE;EACA,WAAA;EACA,YAAA;;AAGD,OAtGD,UAsGE;EACA,cAAA;EACA,WAAA;EACA,iBAAA;EACA,kBAAA;;AAMD,OAhHD,UAgHE,YAAa;AACd,OAjHD,UAiHE;AACD,OAlHD,UAkHE;AACD,OAnHD,UAmHE;AACD,OApHD,UAoHE;AACD,OArHD,UAqHE;EAEA,kBAAA;;AC9FA,OAFF,UAAS,sBACR,iBACE;EACA,iBAAA;;AADD,OAFF,UAAS,sBACR,iBACE,UAGA;EACC,SAAA;EACA,OAAA;EACA,kBAAA;EACA,QAAA;EACA,MAAA;;AARF,OAFF,UAAS,sBACR,iBACE,UAWA;EACC,YAAA;EACA,cAAA;;AAhBL,OACC,UAAS,sBACR,iBAkBC;EACC,kBAAA;;AArBJ,OACC,UAAS,sBACR,iBAkBC,eAGC;EACC,gBAAA;EACA,WAAA;;AAzBL,OACC,UAAS,sBACR,iBAkBC,eAGC,MAIC,MACC;EACC,gCAAA;EACA,8BAAA;EACA,gBAAA;;AAEA,OAhCN,UAAS,sBACR,iBAkBC,eAGC,MAIC,MACC,GAKE;EACA,iBAAA;;AAGD,OApCN,UAAS,sBACR,iBAkBC,eAGC,MAIC,MACC,GASE;EACA,mBAAA;;AAKD,OA1CN,UAAS,sBACR,iBAkBC,eAGC,MAIC,MAeC,GACE;EACA,2BAAA;;AAGD,OA9CN,UAAS,sBACR,iBAkBC,eAGC,MAIC,MAeC,GAKE,MACA;EACC,mBAAA;EACA,eAAA;EACA,kBAAA;EACA,aAAA;EACA,kBAAA;EACA,WAAA;;AA3EP,OAsBD,UAAS,sBACR,iBAkBC,eAGC,MAIC,MAeC,GAhEJ,WACC,MAAO;AAAI,OAsBb,UAAS,sBACR,iBAkBC,eAGC,MAIC,MAeC,GAhEJ,WACa,QAAS;EACrB,mBAAA;EACA,eAAA;;AAHF,OAuBA,UAAS,sBACR,iBAkBC,eAGC,MAIC,MAeC,GAhEJ,WAKA,iBAAgB;EACf,gBAAA;EACA,MAAA;;AAGF,OAaA,UAAS,sBACR,iBAkBC,eAGC,MAIC,MAeC,GAtDJ,SACA;EACC,mBAAA;EACA,cAAA;;AAEA,OAQF,UAAS,sBACR,iBAkBC,eAGC,MAIC,MAeC,GAtDJ,SACA,GAIE;EACA,kBAAA;;AAMJ,OACC,UAAS,sBACR,iBAkBC,eAGC,MAuCC,MAAM,KAAK;EACV,mBAAA;EACA,gCAAA;EACA,kCAAA;EACA,gBAAA;EACA,uBAAA;EACA,oBAAA;EACA,YAAA;EftBJ,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,oBAAA;EACA,iBAAA;;AesBI,OAxEL,UAAS,sBACR,iBAkBC,eAGC,MAuCC,MAAM,KAAK,KAWT;EACA,iBAAA;;AADD,OAxEL,UAAS,sBACR,iBAkBC,eAGC,MAuCC,MAAM,KAAK,KAWT,YAEA;EACC,WAAA;;AAKD,OAhFN,UAAS,sBACR,iBAkBC,eAGC,MAuCC,MAAM,KAAK,KAkBT,SACC;AAAQ,OAhFf,UAAS,sBACR,iBAkBC,eAGC,MAuCC,MAAM,KAAK,KAkBT,SACU;EACT,mBAAA;EACA,eAAA;Ef7DN,yBAAA;EACA,kBAAkB,2CAAlB;EACA,kBAAkB,sCAAsC,eAAmB,YAA3E;EACA,kBAAkB,8CAAlB;EACA,kBAAkB,yCAAlB;EACA,kBAAkB,4CAAlB;EACA,2BAAA;EACA,sHAAA;;Ae2DI,OAvFL,UAAS,sBACR,iBAkBC,eAGC,MAuCC,MAAM,KAAK,KA0BT,OACA,KAAI;EACH,cAAA;EACA,kBAAA;;AA3FR,OACC,UAAS,sBACR,iBAkBC,eAGC,MAuCC,MAAM,KAAK,KAiCV,KAAI;EACH,aAAA;EACA,YAAA;EACA,eAAA;;AAlGP,OACC,UAAS,sBACR,iBAkBC,eAGC,MAuCC,MAAM,KAAK,KAuCV;EACC,kBAAA;;AAKH,OA1GH,UAAS,sBACR,iBAkBC,eAuFE;EACA,qBAAA;EACA,SAAA;EACA,cAAA;EACA,kBAAA;EACA,mBAAA;EACA,QAAA;;AAND,OA1GH,UAAS,sBACR,iBAkBC,eAuFE,MAQA,KAAI;EACH,WAAA;EACA,kBAAA;EACA,QAAA;;AAIF,OAzHH,UAAS,sBACR,iBAkBC,eAsGE;EACA,mBAAA;EACA,gCAAA;EACA,8BAAA;EACA,gBAAA;EACA,cAAA;EACA,oBAAA;EACA,iBAAA;EACA,YAAA;EACA,kBAAA;EACA,MAAA;EACA,UAAA;EftFH,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,oBAAA;EACA,iBAAA;;AesFG,OAxIJ,UAAS,sBACR,iBAkBC,eAsGE,QAeC;EACA,iBAAA;;AAMD,mBAHuD;EAGvD,OA/IJ,UAAS,sBACR,iBAkBC,eAsGE,QAeC;IAKC,cAAA;;;AAKD,OAlJL,UAAS,sBACR,iBAkBC,eAsGE,QAwBC,SACC;AAAQ,OAlJd,UAAS,sBACR,iBAkBC,eAsGE,QAwBC,SACU;EACT,mBAAA;EACA,eAAA;Ef/HL,yBAAA;EACA,kBAAkB,2CAAlB;EACA,kBAAkB,sCAAsC,eAAmB,YAA3E;EACA,kBAAkB,8CAAlB;EACA,kBAAkB,yCAAlB;EACA,kBAAkB,4CAAlB;EACA,2BAAA;EACA,sHAAA;;Ae4HI,OAxJL,UAAS,sBACR,iBAkBC,eAsGE,QAwBC,SAOC,OACA,KAAI;EACH,cAAA;EACA,mBAAA;;AAlCJ,OAzHH,UAAS,sBACR,iBAkBC,eAsGE,QAuCA,KAAI;EACH,aAAA;EACA,YAAA;EACA,eAAA;;AAMH,OAzKF,UAAS,sBACR,iBAwKE;EACA,cAAA;;AADD,OAzKF,UAAS,sBACR,iBAwKE,eAEA;EACC,iBAAA;;AAHF,OAzKF,UAAS,sBACR,iBAwKE,eAKA,eACC;EACC,kBAAA;EACA,UAAA;EACA,OAAA;;AATH,OAzKF,UAAS,sBACR,iBAwKE,eAKA,eASC;EACC,kBAAA;EACA,MAAA;EACA,OAAA;EACA,UAAA;;AAlBH,OAzKF,UAAS,sBACR,iBAwKE,eAKA,eASC,sBAKC;EACC,+BAAA;;AApBJ,OAzKF,UAAS,sBACR,iBAwKE,eAKA,eAkBC;EACC,mBAAA;EACA,qBAAA;;AAEA,OApML,UAAS,sBACR,iBAwKE,eAKA,eAkBC,MAIE;EACA,+BAAA;EACA,UAAA;EACA,mBAAA;EACA,yBAAA;EACA,mBAAA;EACA,WAAA;;AAND,OApML,UAAS,sBACR,iBAwKE,eAKA,eAkBC,MAIE,aAOA;AAPD,OApML,UAAS,sBACR,iBAwKE,eAKA,eAkBC,MAIE,aAOI;EACH,yBAAA;EACA,qBAAA;;AATF,OApML,UAAS,sBACR,iBAwKE,eAKA,eAkBC,MAIE,aAWA;EACC,mBAAA;;AACA,OAjNP,UAAS,sBACR,iBAwKE,eAKA,eAkBC,MAIE,aAWA,yBAEE;EACA,UAAA;;AASN,OA3NF,UAAS,sBACR,iBA0NE;EACA,cAAA;;AADD,OA3NF,UAAS,sBACR,iBA0NE,gBAEA;EACC,iBAAA;;AAHF,OA3NF,UAAS,sBACR,iBA0NE,gBAKA,eACC;EACC,kBAAA;EACA,UAAA;EACA,QAAA;;AATH,OA3NF,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC;EACC,mBAAA;EACA,qBAAA;;AAEA,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE;EACA,8BAAA;EACA,UAAA;EACA,yBAAA;EACA,mBAAA;EACA,YAAA;;AALD,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA;EACC,8BAAA;;AACA,OAjPR,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAEE;EACA,uBAAA;EACA,kCAAA;;AAFD,OAjPR,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAEE,cAGA;EACC,uBAAA;EACA,eAAA;;AAbJ,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAUC;EACC,mBAAA;;AAhRR,OAsBD,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAtQN,WACC,MAAO;AAAI,OAsBb,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAtQN,WACa,QAAS;EACrB,mBAAA;EACA,eAAA;;AAHF,OAuBA,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAtQN,WAKA,iBAAgB;EACf,gBAAA;EACA,MAAA;;AAGF,OAaA,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GA5PN,SACA;EACC,mBAAA;EACA,cAAA;;AAEA,OAQF,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GA5PN,SACA,GAIE;EACA,kBAAA;;AAgPG,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAeC;AArBF,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAeK;EACH,yBAAA;EACA,qBAAA;EACA,mBAAA;;AAxBH,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAeC,GAIC;AAzBH,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAeK,GAIH;EACC,WAAA;EACA,kBAAA;;AA3BJ,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAeC,GAIC,WAGC;AA5BJ,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GAeK,GAIH,WAGC;EACC,WAAA;;AAIH,OA1QR,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GA2BE,SAAU,GAAE;EACZ,iBAAA;;AAlCH,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GA8BC;EACC,gCAAA;EACA,mBAAA;;AAtCH,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GA8BC,GAGC;EACC,kBAAA;EACA,8BAAA;EACA,iBAAA;EACA,WAAA;;AA3CJ,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAMA,GA8BC,GAGC,uBAKC;EACC,qBAAA;EACA,WAAA;EACA,aAAA;;AA/CL,OAzON,UAAS,sBACR,iBA0NE,gBAKA,eACC,wBAIC,MAIE,cAqDA;EACC,cAAA;;AApEN,OA3NF,UAAS,sBACR,iBA0NE,gBAKA,eAoEC;EACC,kBAAA;EACA,MAAA;EACA,QAAA;EACA,UAAA;;AA7EH,OA3NF,UAAS,sBACR,iBA0NE,gBAKA,eA0EC;EACC,mBAAA;EACA,qBAAA;;AAIG,OAhTR,UAAS,sBACR,iBA0NE,gBAKA,eA0EC,MAGC,MACC,GACC,GACE,WACA;EACC,kCAAA;;AAqBH,OAvUP,UAAS,sBACR,iBA0NE,gBAKA,eAoGE,KACA,wBACC,MACE;EACA,yBAAA;;AADD,OAvUP,UAAS,sBACR,iBA0NE,gBAKA,eAoGE,KACA,wBACC,MACE,cAEA;EACC,6BAAA;;AACA,OA3UT,UAAS,sBACR,iBA0NE,gBAKA,eAoGE,KACA,wBACC,MACE,cAEA,GAEE;EACA,8BAAA;;AALH,OAvUP,UAAS,sBACR,iBA0NE,gBAKA,eAoGE,KACA,wBACC,MACE,cAEA,GAKC;EACC,mBAAA;;AARH,OAvUP,UAAS,sBACR,iBA0NE,gBAKA,eAoGE,KACA,wBACC,MACE,cAEA,GAQC;EACC,mBAAA;EACA,iBAAA;;AAUR,OA7VF,UAAS,sBACR,iBA4VE,qBACA,eACC,MACC,GAAE,YACD;EACC,WAAA;;AALL,OA7VF,UAAS,sBACR,iBA4VE,qBACA,eACC,MACC,GAAE,YACD,iBAEC;EACC,UAAA;EACA,SAAA;EACA,eAAA;;AATN,OA7VF,UAAS,sBACR,iBA4VE,qBACA,eAaC,MACC,GACC;EACC,SAAA;EACA,SAAA;;AAOA,OAtXP,UAAS,sBACR,iBA4VE,qBACA,eAqBC,GACE,SACA,GACE;EACA,iBAAA;;AAQN,OA/XF,UAAS,sBACR,iBA8XE,qBAAqB,gBACrB,eAAe,wBAAwB,MAAK,cAAe,GAAG,GAAG;EAChE,8BAAA;;AAlYL,OACC,UAAS,sBAsYR;EACC,iBAAA;;AAEA,OAzYF,UAAS,sBAsYR,iBAGE;EACA,iBAAA;;AA3YJ,OACC,UAAS,sBA8YR;EACC,gBAAA;;AAhZH,OACC,UAAS,sBAkZR;EACC,WAAA;EACA,iBAAA;;AC7aH,OAEC;EACC,yBAAA;EACA,cAAA;EACA,WAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;EACA,kBAAA;;AAVF,OAEC,oBAUC;EACC,cAAA;EACA,gBAAA;EACA,kBAAA;;AAGD,OAhBD,oBAgBE;EACA,YAAA;EACA,gBAAA;EACA,YAAA;EACA,WAAA;;AAEA,OAtBF,oBAgBE,KAMC;AAAe,OAtBlB,oBAgBE,KAMiB;AAAgB,OAtBnC,oBAgBE,KAMkC;AAAa,OAtBjD,oBAgBE,KAMgD;EAC/C,kBAAA;EACA,gBAAA;;AAEA,OA1BH,oBAgBE,KAMC,aAIC;AAAD,OA1BH,oBAgBE,KAMiB,cAIf;AAAD,OA1BH,oBAgBE,KAMkC,WAIhC;AAAD,OA1BH,oBAgBE,KAMgD,YAI9C;EACA,qBAAA;EACA,WAAA;EACA,SAAS,EAAT;;AAIA,OAjCJ,oBAgBE,KAMC,aAUA,gBACE;AAAD,OAjCJ,oBAgBE,KAMiB,cAUhB,gBACE;AAAD,OAjCJ,oBAgBE,KAMkC,WAUjC,gBACE;AAAD,OAjCJ,oBAgBE,KAMgD,YAU/C,gBACE;AAAM,OAjCX,oBAgBE,KAMC,aAUA,gBACS;AAAD,OAjCX,oBAgBE,KAMiB,cAUhB,gBACS;AAAD,OAjCX,oBAgBE,KAMkC,WAUjC,gBACS;AAAD,OAjCX,oBAgBE,KAMgD,YAU/C,gBACS;EACP,qBAAA;EACA,WAAA;;AAbH,OAtBF,oBAgBE,KAMC,aAiBA;AAjBe,OAtBlB,oBAgBE,KAMiB,cAiBhB;AAjBgC,OAtBnC,oBAgBE,KAMkC,WAiBjC;AAjB8C,OAtBjD,oBAgBE,KAMgD,YAiB/C;EACC,qBAAA;EACA,WAAA;EACA,eAAA;;AAEA,OA5CJ,oBAgBE,KAMC,aAiBA,oBAKE;AAAD,OA5CJ,oBAgBE,KAMiB,cAiBhB,oBAKE;AAAD,OA5CJ,oBAgBE,KAMkC,WAiBjC,oBAKE;AAAD,OA5CJ,oBAgBE,KAMgD,YAiB/C,oBAKE;EACA,SAAS,GAAT;;AAIH,OAjDF,oBAgBE,KAiCC;EAAgB,kBAAA;;AACjB,OAlDF,oBAgBE,KAkCC;EAAiB,mBAAA;;AAClB,OAnDF,oBAgBE,KAmCC;EAAc,gBAAA;;AACf,OApDF,oBAgBE,KAoCC;EAAe,iBAAA;;AApCjB,OAhBD,oBAgBE,KAsCA,IAAG;EACF,eAAA;EACA,kBAAA;EACA,uBAAA;EACA,kBAAA;;AAIA,OA9DH,oBAgBE,KA6CA,YACE;EACA,mBAAA;EACA,eAAA;;AAGD,OAnEH,oBAgBE,KA6CA,YAME;EACA,mBAAA;;AAEA,OAtEJ,oBAgBE,KA6CA,YAME,SAGC;EACA,mBAAA;;ACzEN,OAEC;EACC,qBAAA;EACA,kBAAA;;AAEA,OAJD,SAIE;EACA,WAAA;;AAGD,OARD,SAQE,SACA;EACC,mBAAA;;AAZJ,OAEC,SAcC;EACC,WAAA;EACA,mBAAA;;EACA,yBAAA;;AAEA,OAnBF,SAcC,eAKE;EACA,aAAA;;AAtBJ,OAEC,SAwBC;EACC,kBAAA;EACA,WAAA;EACA,YAAA;EACA,cAAA;EACA,kBAAA;EACA,iBAAA;EACA,kBAAA;;AAEA,OAjCF,SAwBC,KASE;EACA,mBAAA;;AApCJ,OAEC,SAsCC;EACC,kBAAA;EACA,YAAA;EACA,WAAA;EACA,UAAA;;AA5CH,OAEC,SA6CC;EACC,qBAAA;EACA,QAAA;;AAjDH,OAEC,SA6CC,YAIC;EACC,kBAAA;EACA,QAAA;;AArDJ,OAEC,SAwDC,WAAW,OAAM;EAChB,4BAAA;;AA3DH,OAEC,SA4DC;EACC,oBAAA;EACA,QAAA;EACA,YAAA;EACA,8BAAA;;AAlEH,OAEC,SA4DC,cAMC;EACC,kBAAA;EACA,OAAA;EACA,MAAA;;AAID,OAzEF,SAwEC,MACE;EACA,aAAA;;AC5EJ,OAEC;;;;;;;;;;;;;;AAFD,OAEC,WAEC;EACC,cAAA;;AALH,OAEC,WAMC;EACC,WAAA;EACA,iBAAA;EACA,eAAA;;AASA,OAlBF,WAgBC,gBAEE;EACA,gBAAA;;AArBJ,OAEC,WAgBC,gBAMC;EACC,cAAA;;AAzBJ,OAEC,WAgBC,gBAUC;EACC,cAAA;;AA7BJ,OAEC,WAgBC,gBAUC,UAGC;EACC,iBAAA;EACA,cAAA;;AAjCL,OAEC,WAgBC,gBAoBC;EACC,WAAA;EACA,kBAAA;;AAxCJ,OAEC,WA+CC,oBACC;EACC,eAAA;;AAnDJ,OAEC,WA+CC,oBAKC;EACC,YAAA;EACA,mBAAA;EACA,eAAA;EACA,gBAAA;EACA,uBAAA;;AA3DJ,OAEC,WA+CC,oBAaC;EACC,iBAAA;EACA,cAAA;;AAhEJ,OAEC,WAuEC;EACC,cAAA;;AA1EH,OAEC,WAuEC,cAGC;EACC,mBAAA;;AA7EJ,OAEC,WAuEC,cAOC;EACC,kBAAA;;AAjFJ,OAEC,WAuEC,cAWC;EACC,cAAA;;AArFJ,OAEC,WA0FC;EACC,cAAA;ElB3FF,QAAA;;AACA,OkBDA,WA0FC,iBlBzFA;AACD,OkBFA,WA0FC,iBlBxFA;EACA,cAAA;EACA,SAAS,EAAT;EAGA,cAAA;;AAED,OkBTA,WA0FC,iBlBjFA;EACA,WAAA;;AkBZF,OAEC,WA0FC,iBAKC;EACC,cAAA;;AAlGJ,OAEC,WA0FC,iBASC;EACC,iBAAA;EACA,cAAA;;AAvGJ,OAEC,WA0FC,iBAcC;EACC,WAAA;;AA3GJ,OAEC,WA0FC,iBAcC,oBAGC;EACC,eAAA;;AA9GL,OAEC,WA0FC,iBAcC,oBAOC;EACC,WAAA;EACA,kBAAA;;AAnHL,OAEC,WA0FC,iBAcC,oBAOC,SAIC;EACC,gBAAA;;AAtHN,OAEC,WA8HE,gBAEC;EACC,gBAAA;ElBjIJ,QAAA;;AACA,OkBDA,WA8HE,gBAEC,qBlB/HF;AACD,OkBFA,WA8HE,gBAEC,qBlB9HF;EACA,cAAA;EACA,SAAS,EAAT;EAGA,cAAA;;AAED,OkBTA,WA8HE,gBAEC,qBlBvHF;EACA,WAAA;;AkBZF,OAEC,WA8HE,gBAEC,qBAIC;EACC,gBAAA;;AAvIN,OAEC,WA8HE,gBAWC;EACC,gBAAA;ElB1IJ,QAAA;;AACA,OkBDA,WA8HE,gBAWC,oBlBxIF;AACD,OkBFA,WA8HE,gBAWC,oBlBvIF;EACA,cAAA;EACA,SAAS,EAAT;EAGA,cAAA;;AAED,OkBTA,WA8HE,gBAWC,oBlBhIF;EACA,WAAA;;AkBZF,OAEC,WA8HE,gBAgBC;EACC,iBAAA;;AAjJL,OAEC,WAsJE,eAEC;EACC,gBAAA;ElBzJJ,QAAA;;AACA,OkBDA,WAsJE,eAEC,oBlBvJF;AACD,OkBFA,WAsJE,eAEC,oBlBtJF;EACA,cAAA;EACA,SAAS,EAAT;EAGA,cAAA;;AAED,OkBTA,WAsJE,eAEC,oBlB/IF;EACA,WAAA;;AkBZF,OAEC,WAsJE,eAEC,oBAIC;EACC,iBAAA;;AA/JN,OAEC,WAsJE,eAWC;EACC,iBAAA;;AApKL,OAEC,WAsJE,eAeC;EACC,iBAAA;;AAxKL,OAEC,WAsJE,eAoBC;EACC,gBAAA;ElB3KJ,QAAA;;AACA,OkBDA,WAsJE,eAoBC,mBlBzKF;AACD,OkBFA,WAsJE,eAoBC,mBlBxKF;EACA,cAAA;EACA,SAAS,EAAT;EAGA,cAAA;;AAED,OkBTA,WAsJE,eAoBC,mBlBjKF;EACA,WAAA;;AkBZF,OAEC,WAsJE,eAoBC,mBAIC;EACC,iBAAA;;AAjLN,OAEC,WAwLE,eAEC,OAAM,IAAI;EACT,yBAAA;;AAIA,OA/LJ,WAwLE,eAMC,WACE;EACA,kBAAA;EACA,aAAA;;AAEA,OAnML,WAwLE,eAMC,WACE,SAIC;EACA,uBAAA;EACA,SAAA;EACA,SAAS,EAAT;EACA,OAAA;EACA,kBAAA;EACA,QAAA;EACA,MAAA;EACA,UAAA;;AA7MP,OAEC,WAiNE;EACC,WAAA;;AApNJ,OAEC,WAqNE,MAAK;EACJ,WAAA;EACA,iBAAA;;AAzNJ,OAEC,WAqNE,MAAK,MAIJ;EACC,eAAA;;AA5NL,OAEC,WAkOC,YAEC;EACC,WAAA;EACA,qBAAA;EACA,kBAAA;;AAzOJ,OAEC,WAkOC,YAQC;EACC,cAAA;;AAUD,OArPF,WAoPC,MACE;EACA,aAAA;;ACrPF,OADD,QACE,SACA;EACC,mBAAA;;AAID,OAPF,QAMC,MACE;EACA,aAAA;;ACFF,OAFD,YAEE;EACA,mBAAA;;AALH,OAEC,YAMC;EACC,gBAAA;EACA,cAAA;;AAVH,OAEC,YAWC;EACC,kBAAA;EACA,gBAAA;;AAfH,OAEC,YAeC,KAAI;EACH,gBAAA;EACA,mBAAA;;AAnBH,OAEC,YAeC,KAAI,gBAIH;EpByFD,YAAA;EACA,kBAAA;EACA,MAAA;EACA,SAAA;EoB1FE,WAAA;;AAvBJ,OA8BC;AA9BD,OA8BgB;EACd,qBAAA;EACA,kBAAA;EACA,kBAAA;EACA,MAAA;EACA,WAAA;;AAnCF,OA8BC,cAMC;AApCF,OA8BgB,kBAMd;EACC,yBAAA;;AArCH,OA8BC,cASC;AAvCF,OA8BgB,kBASd;EACC,cAAA;EACA,kBAAA;;AAzCH,OA8BC,cAaC;AA3CF,OA8BgB,kBAad;EACC,sBAAA;;AChDH,OAEC;EACC,qBAAA;EACA,kBAAA;;AAGC,OALF,QAIE,sBACC,QACA,MAAK;EACJ,iBAAA;EACA,mBAAA;EACA,mBAAA;;AALH,OAJD,QAIE,sBASA,MAAK;EACJ,gBAAA;EACA,uBAAA;EACA,mBAAA;;AAEA,OAlBH,QAIE,sBASA,MAAK,aAKH;EACA,aAAA;;AAKD,OAxBH,QAIE,sBAmBA,SAAQ,aACN;EACA,gBAAA;;AAKH,OA9BD,QA8BE,QACA;AADD,OA9BD,QA8BE,QAEA;AAFD,OA9BD,QA8BE,QAGA;EACC,cAAA;EACA,UAAA;;AALF,OA9BD,QA8BE,QAQA,MAAK;AARN,OA9BD,QA8BE,QAQoB,SAAQ;EAC3B,mBAAA;EACA,yBAAA;EACA,gBAAA;EACA,kBAAA;EACA,UAAA;;AA7CJ,OAEC,QA+CC,MAAK;AAjDP,OAEC,QA+CqB,SAAQ;EAC3B,YAAA;;AAEA,OAlDF,QA+CC,MAAK,aAGH;AAAD,OAlDF,QA+CqB,SAAQ,aAG1B;EACA,mBAAA;EACA,YAAA;;AAEA,OAtDH,QA+CC,MAAK,aAGH,UAIC;AAAD,OAtDH,QA+CqB,SAAQ,aAG1B,UAIC;EACA,gBAAA;;AAEA,OAzDJ,QA+CC,MAAK,aAGH,UAIC,MAGC;AAAD,OAzDJ,QA+CqB,SAAQ,aAG1B,UAIC,MAGC;EACA,mBAAA;EACA,eAAA;;AAKH,OAhEF,QA+CC,MAAK,aAiBH;AAAD,OAhEF,QA+CqB,SAAQ,aAiB1B;EACA,yBAAA;EACA,gBAAA;;AAIF,OAtED,QAsEE;EACA,eAAA;EACA,iBAAA;EACA,sBAAA;;AAGD,OA5ED,QA4EE;AACD,OA7ED,QA6EE;EACA,aAAA;EACA,OAAA;EACA,cAAA;EACA,QAAA;;AAGD,OApFD,QAoFE;EACA,uBAAA;EACA,iBAAA;EACA,SAAA;EACA,kBAAA;;AAGD,OA3FD,QA2FE;EACA,YAAA;EACA,uBAAA;;AAFD,OA3FD,QA2FE,OAIA;AAJD,OA3FD,QA2FE,OAII;AAJL,OA3FD,QA2FE,OAIQ;AAJT,OA3FD,QA2FE,OAIY;AAJb,OA3FD,QA2FE,OAIgB;AAJjB,OA3FD,QA2FE,OAIoB;EACnB,SAAA;;AAIF,OApGD,QAoGE;EACA,mBAAA;EACA,4BAAA;EACA,yBAAA;EACA,kBAAA;EACA,mCAAA;EACA,aAAA;EACA,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,aAAA;EACA,YAAA;EACA,aAAA;;AAlHH,OAEC,QAoHC,aAAY;EACX,sBAAA;EACA,gBAAA;EACA,UAAA;EACA,aAAA;;AA1HH,OAEC,QA2HC;EACC,YAAA;;AA9HH,OAEC,QA+HC;EACC,uBAAA;EACA,yBAAA;EACA,gBAAA;;AAEA,OApIF,QA+HC,OAKE;EACA,mBAAA;EACA,qBAAA;EACA,eAAA;;AAEA,OAzIH,QA+HC,OAKE,MAKC;EACA,uBAAA;EACA,qBAAA;EACA,mBAAA;;AAIF,OAhJF,QA+HC,OAiBE;EACA,mBAAA;EACA,qBAAA;EACA,gFAAA;EACA,YAAA;;AAEA,OAtJH,QA+HC,OAiBE,MAMC;EACA,uBAAA;EACA,qBAAA;EACA,mBAAA;;AAIF,OA7JF,QA+HC,OA8BE;EACA,mBAAA;;AChKJ,OAEC;EACC,yBAAA;EACA,8BAAA;EACA,yBAAA;EACA,gBAAA;EACA,gBAAA;EACA,kBAAA;EACA,gBAAA;;AATF,OAEC,MASC,EAAC;EACA,aAAA;;AAZH,OAEC,MAaC,OAAM;EACL,cAAA;;AAhBH,OAEC,MAiBC;EACC,eAAA;EACA,aAAA;EACA,gBAAA;EACA,gBAAA;;AAvBH,OAEC,MAwBC;EACC,SAAA;EACA,eAAA;EACA,kBAAA;;AA7BH,OAEC,MA8BC;EAEC,iBAAA;;AAlCH,OAEC,MAmCC,WAAW,sBAAsB;EAChC,WAAU,aAAV;EACA,eAAc,aAAd;EACA,mBAAkB,aAAlB;EACA,kBAAA;;AAzCH,OAEC,MA0CC,sBAAsB,sBAAsB,YAAW;EACtD,SAAS,OAAT;;AA7CH,OAEC,MA8CC,aAEC;EACC,kBAAA;EACA,kBAAA;EACA,mBAAA;;AArDJ,OAEC,MA8CC,aAEC,oBAKC,kBAAiB;EAChB,cAAA;;AAxDL,OAEC,MA8CC,aAEC,oBASC;EACC,eAAA;EACA,kBAAA;EACA,iBAAA;;AAEA,OA9DJ,MA8CC,aAEC,oBASC,gBAKE;EACA,kBAAA;EACA,SAAA;;AAlEN,OAEC,MA8CC,aAEC,oBAqBC;EACC,mBAAA;EACA,kBAAA;EACA,6BAAA;EACA,SAAA;;AA3EL,OAEC,MA8CC,aAEC,oBA4BC;EACC,mBAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;;AAlFL,OAEC,MA8CC,aAuCC;EACC,iBAAA;;AAED,OAxFF,MA8CC,aA0CE,qBACA;AADuB,OAxF1B,MA8CC,aA0C0B,2BACxB;EACC,kBAAA;;AA5FL,OAEC,MAgGC;EACC,mBAAA;EACA,kBAAA;EACA,eAAA;EACA,kBAAA;EACA,iBAAA;;AAvGH,OAEC,MAgGC,WAOC;EACC,mBAAA;EACA,kBAAA;EACA,6BAAA;EACA,SAAA;;AA7GJ,OAEC,MAgGC,WAcC,gBAAe;EACd,cAAA;;AAGD,OAlHF,MAgGC,WAkBE,cAAe;EACf,yBAAA;EACA,cAAA;;AAtHJ,OAEC,MAgGC,WAuBC;EACC,mBAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;;AA7HJ,OAEC,MAgIC,YAAW,MAAO;EACjB,cAAA;;AAOD,OAxID,MAwIE,mBAEA,aAEC;EACC,6BAAA;EACA,SAAA;;AANH,OAxID,MAwIE,mBAEA,aAOC,YAAW;EACV,eAAA;EACA,cAAA;;AAXH,OAxID,MAwIE,mBAEA,aAYC;EACC,sBAAA;EACA,kBAAA;;AAGA,OA3JJ,MAwIE,mBAEA,aAYC,oBAKE;EACA,yBAAA;;AApBJ,OAxID,MAwIE,mBA0BA,aAAY,cAAe,sBAAsB;EAChD,yBAAA;;AAEA,OArKH,MAwIE,mBA0BA,aAAY,cAAe,sBAAsB,kBAG/C;EACA,yBAAA;;ACxKL,OAEC;EvBAA,QAAA;EuBIC,yBAAA;EACA,kBAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;;AvBPD,OuBDA,QvBCC;AACD,OuBFA,QvBEC;EACA,cAAA;EACA,SAAS,EAAT;EAGA,cAAA;;AAED,OuBTA,QvBSC;EACA,WAAA;;AuBAA,OAVD,QAUE;EACA,gBAAA;;AAbH,OAEC,QAcC;EACC,0BAAA;EACA,gBAAA;;AAlBH,OAEC,QAoBC,KAAI;AAtBN,OAEC,QAoBa,mBAAmB,KAAI;EAClC,6BAAA;EACA,UAAA;EACA,SAAA;EACA,eAAA;;AAIE,OA5BJ,QAoBC,KAAI,MAMF,kBACA,GACE;AAAD,OA5BJ,QAoBa,mBAAmB,KAAI,MAMjC,kBACA,GACE;EACA,eAAA;;AAEA,OA/BL,QAoBC,KAAI,MAMF,kBACA,GACE,SAGC;AAAD,OA/BL,QAoBa,mBAAmB,KAAI,MAMjC,kBACA,GACE,SAGC;EACA,mBAAA;EACA,cAAA;EACA,eAAA;;AAHD,OA/BL,QAoBC,KAAI,MAMF,kBACA,GACE,SAGC,MAKA,SAAQ;AALT,OA/BL,QAoBa,mBAAmB,KAAI,MAMjC,kBACA,GACE,SAGC,MAKA,SAAQ;EACP,0BAAA;;AAvCR,OAEC,QAoBC,KAAI,MAwBH;AA9CH,OAEC,QAoBa,mBAAmB,KAAI,MAwBlC;EACC,WAAA;EACA,SAAA;EACA,sBAAA;EACA,YAAA;EACA,iBAAA;EACA,kBAAA;EACA,mBAAA;EACA,cAAA;EACA,eAAA;EACA,mBAAA;;AAxDJ,OAEC,QAoBC,KAAI,MAwBH,GAYC;AA1DJ,OAEC,QAoBa,mBAAmB,KAAI,MAwBlC,GAYC;EACC,8BAAA;EACA,+BAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;EACA,YAAA;EACA,MAAA;EACA,UAAA;;AAlEL,OAEC,QAoBC,KAAI,MAwBH,GAuBC,SAAQ;AArEZ,OAEC,QAoBa,mBAAmB,KAAI,MAwBlC,GAuBC,SAAQ;EACP,8BAAA;EACA,+BAAA;EACA,eAAA;EACA,SAAS,EAAT;EACA,cAAA;EACA,kBAAA;EACA,UAAA;EACA,UAAA;;AAGD,OA9EH,QAoBC,KAAI,MAwBH,GAkCE;AAAD,OA9EH,QAoBa,mBAAmB,KAAI,MAwBlC,GAkCE;EACA,mBAAA;EACA,cAAA;;AAEA,OAlFJ,QAoBC,KAAI,MAwBH,GAkCE,SAIC;AAAD,OAlFJ,QAoBa,mBAAmB,KAAI,MAwBlC,GAkCE,SAIC;EACA,mBAAA;EACA,eAAA;;AAFD,OAlFJ,QAoBC,KAAI,MAwBH,GAkCE,SAIC,MAIA,SAAQ;AAJT,OAlFJ,QAoBa,mBAAmB,KAAI,MAwBlC,GAkCE,SAIC,MAIA,SAAQ;EACP,+BAAA;;AATH,OA9EH,QAoBC,KAAI,MAwBH,GAkCE,SAaA,SAAQ;AAbT,OA9EH,QAoBa,mBAAmB,KAAI,MAwBlC,GAkCE,SAaA,SAAQ;EACP,+BAAA;;AAIF,OAhGH,QAoBC,KAAI,MAwBH,GAoDE;AAAD,OAhGH,QAoBa,mBAAmB,KAAI,MAwBlC,GAoDE;EACA,mBAAA;EACA,cAAA;EACA,eAAA;;AAHD,OAhGH,QAoBC,KAAI,MAwBH,GAoDE,OAKA,SAAQ;AALT,OAhGH,QAoBa,mBAAmB,KAAI,MAwBlC,GAoDE,OAKA,SAAQ;EACP,+BAAA;;AANF,OAhGH,QAoBC,KAAI,MAwBH,GAoDE,OASA;AATD,OAhGH,QAoBa,mBAAmB,KAAI,MAwBlC,GAoDE,OASA;EACC,yBAAA;;AA5GN,OAEC,QAoBC,KAAI,MAwBH,GAkEC;AAhHJ,OAEC,QAoBa,mBAAmB,KAAI,MAwBlC,GAkEC;EACC,iBAAA;;AAjHL,OAEC,QAoBC,KAAI,MAwBH,GAsEC;AApHJ,OAEC,QAoBa,mBAAmB,KAAI,MAwBlC,GAsEC;EACC,yBAAA;;AArHL,OAEC,QAoBC,KAAI,MAmGH,GAAE;AAzHL,OAEC,QAoBa,mBAAmB,KAAI,MAmGlC,GAAE;EACD,wBAAA;EACA,kBAAA;;AAIF,OA7HD,QA6HE;EACA,cAAA;;AADD,OA7HD,QA6HE,IAGA,KAAI;AAHL,OA7HD,QA6HE,IAGY,mBAAmB,KAAI;EAClC,QAAA;EACA,UAAA;EACA,YAAA;;AAKG,OAxIN,QA6HE,IAGA,KAAI,MAKF,kBACA,GACE,SACC,MACA,SAAQ;AADT,OAxIN,QA6HE,IAGY,mBAAmB,KAAI,MAKjC,kBACA,GACE,SACC,MACA,SAAQ;EACP,2BAAA;;AAbP,OA7HD,QA6HE,IAGA,KAAI,MAiBH;AApBF,OA7HD,QA6HE,IAGY,mBAAmB,KAAI,MAiBlC;EACC,YAAA;;AArBH,OA7HD,QA6HE,IAGA,KAAI,MAiBH,GAGC;AAvBH,OA7HD,QA6HE,IAGY,mBAAmB,KAAI,MAiBlC,GAGC;EACC,WAAA;EACA,WAAA;EACA,gCAAA;EACA,cAAA;;AAGA,OA3JL,QA6HE,IAGA,KAAI,MAiBH,GAGC,SAOE;AAAD,OA3JL,QA6HE,IAGY,mBAAmB,KAAI,MAiBlC,GAGC,SAOE;EACA,WAAA;EACA,SAAA;EACA,gCAAA;EACA,cAAA;;AAMA,OArKN,QA6HE,IAGA,KAAI,MAiBH,GAkBE,OACA,SACE;AAAD,OArKN,QA6HE,IAGY,mBAAmB,KAAI,MAiBlC,GAkBE,OACA,SACE;EACA,gCAAA;;AAOD,OA7KN,QA6HE,IAGA,KAAI,MAiBH,GA0BE,SACA,SACE;AAAD,OA7KN,QA6HE,IAGY,mBAAmB,KAAI,MAiBlC,GA0BE,SACA,SACE;EACA,gCAAA;;AAMA,OApLP,QA6HE,IAGA,KAAI,MAiBH,GA0BE,SAOC,MACA,SACE;AAAD,OApLP,QA6HE,IAGY,mBAAmB,KAAI,MAiBlC,GA0BE,SAOC,MACA,SACE;EACA,gCAAA;EACA,iBAAA;;AAzDP,OA7HD,QA6HE,IAGA,KAAI,MAiBH,GA2CC;AA/DH,OA7HD,QA6HE,IAGY,mBAAmB,KAAI,MAiBlC,GA2CC;EACC,gBAAA;;AAhEJ,OA7HD,QA6HE,IAqEA;EACC,WAAA;EACA,OAAA;EACA,WAAA;EACA,iBAAA;EACA,+BAAA;EACA,wBAAA;;AA3EF,OA7HD,QA6HE,IAqEA,WAQC,UACC;EACC,gBAAA;EACA,eAAA;;AAhFJ,OA7HD,QA6HE,IAqEA,WAeC,UACC;EACC,cAAA;EACA,iBAAA;;AAtNN,OAEC,QA0NC;EACC,aAAA;EACA,kBAAA;EACA,QAAA;EACA,MAAA;EACA,iBAAA;EACA,YAAA;EACA,kBAAA;EACA,mBAAA;EACA,sBAAA;EACA,yBAAA;EACA,8BAAA;EACA,wBAAA;;AAxOH,OAEC,QA0NC,WAcC;EACC,iBAAA;EACA,eAAA;EACA,iBAAA;;AAIA,OA/OH,QA0NC,WAoBC,UACE;EACA,mBAAA;;AAlPL,OAEC,QA0NC,WAoBC,UAKC;EACC,iBAAA;;AAKD,OAzPH,QA0NC,WA8BC,UACE;EACA,mBAAA;;AA5PL,OAEC,QA0NC,WA8BC,UAKC;EACC,gBAAA;;AAhQL,OAEC,QAmQC;EACC,6BAAA;EACA,aAAA;EACA,WAAA;EACA,WAAA;;AAzQH,OAEC,QAmQC,cAMC;EACC,aAAA;;AA5QJ,OAEC,QAmQC,cAUC;EACC,cAAA;;AAhRJ,OAEC,QAmQC,cAUC,UAGC,WACC;EACC,qBAAA;;AAOJ,OAzRD,QAyRE,SACA,WACC,UACC;EACC,aAAA;;AC/RN,OAIC;EACC,sBC4E+B,+BD5E/B;;AALF,OAOC;EACC,sCC0E+C,wBD1E/C;;AARF,OAWC;EACC,sBAAA;;AAZF,OAcC;EACC,sBAAA;;AAMA,OADD,SACE;EACA,YAAA;;AACA,OAHF,SACE,GAEC;EACA,cAAA;;AAED,OANF,SACE,GAKC;EACA,cAAA;;AAED,OATF,SACE,GAQC;EACA,gBAAA;;AAED,OAZF,SACE,GAWC;EACA,mBAAA;;AAED,OAfF,SACE,GAcC;EACA,iBAAA;;AAED,OAlBF,SACE,GAiBC;EACA,kBAAA;;AAGF,OAtBD,SAsBE;EACA,aAAA;;AACA,OAxBF,SAsBE,GAEC;EACA,eAAA;;AAED,OA3BF,SAsBE,GAKC;EACA,eAAA;;AAED,OA9BF,SAsBE,GAQC;EACA,iBAAA;;AAED,OAjCF,SAsBE,GAWC;EACA,oBAAA;;AAED,OApCF,SAsBE,GAcC;EACA,kBAAA;;AAED,OAvCF,SAsBE,GAiBC;EACA,mBAAA;;AAGF,OA3CD,SA2CE;EACA,aAAA;;AACA,OA7CF,SA2CE,GAEC;EACA,eAAA;;AAED,OAhDF,SA2CE,GAKC;EACA,eAAA;;AAED,OAnDF,SA2CE,GAQC;EACA,iBAAA;;AAED,OAtDF,SA2CE,GAWC;EACA,oBAAA;;AAED,OAzDF,SA2CE,GAcC;EACA,kBAAA;;AAED,OA5DF,SA2CE,GAiBC;EACA,mBAAA;;AAGF,OAhED,SAgEE;EACA,aAAA;;AACA,OAlEF,SAgEE,GAEC;EACA,eAAA;;AAED,OArEF,SAgEE,GAKC;EACA,eAAA;;AAED,OAxEF,SAgEE,GAQC;EACA,iBAAA;;AAED,OA3EF,SAgEE,GAWC;EACA,oBAAA;;AAED,OA9EF,SAgEE,GAcC;EACA,kBAAA;;AAED,OAjFF,SAgEE,GAiBC;EACA,mBAAA;;AAQF,OADD,QACE;EACA,WAAA;;AAEA,OAJF,QACE,GAGC;EACA,aAAA;;AAED,OAPF,QACE,GAMC;EACA,aAAA;;AAED,OAVF,QACE,GASC;EACA,eAAA;;AAED,OAbF,QACE,GAYC;EACA,kBAAA;;AAED,OAhBF,QACE,GAeC;EACA,gBAAA;;AAED,OAnBF,QACE,GAkBC;EACA,iBAAA;;AAGF,OAvBD,QAuBE;EACA,YAAA;;AACA,OAzBF,QAuBE,GAEC;EACA,cAAA;;AAED,OA5BF,QAuBE,GAKC;EACA,cAAA;;AAED,OA/BF,QAuBE,GAQC;EACA,gBAAA;;AAED,OAlCF,QAuBE,GAWC;EACA,mBAAA;;AAED,OArCF,QAuBE,GAcC;EACA,iBAAA;;AAED,OAxCF,QAuBE,GAiBC;EACA,kBAAA;;AAGF,OA5CD,QA4CE;EACA,YAAA;;AACA,OA9CF,QA4CE,GAEC;EACA,cAAA;;AAED,OAjDF,QA4CE,GAKC;EACA,cAAA;;AAED,OApDF,QA4CE,GAQC;EACA,gBAAA;;AAED,OAvDF,QA4CE,GAWC;EACA,mBAAA;;AAED,OA1DF,QA4CE,GAcC;EACA,iBAAA;;AAED,OA7DF,QA4CE,GAiBC;EACA,kBAAA;;AAGF,OAjED,QAiEE;EACA,YAAA;;AACA,OAnEF,QAiEE,GAEC;EACA,cAAA;;AAED,OAtEF,QAiEE,GAKC;EACA,cAAA;;AAED,OAzEF,QAiEE,GAQC;EACA,gBAAA;;AAED,OA5EF,QAiEE,GAWC;EACA,mBAAA;;AAED,OA/EF,QAiEE,GAcC;EACA,iBAAA;;AAED,OAlFF,QAiEE,GAiBC;EACA,kBAAA;;AAhMJ,OAuMC;ExBhHE,yBAAA;EACA,eAAA;EACA,kBAAA;EACA,0BAAA;EACA,cAAA;;AwB3FH,OA0MC;ExB3GE,eAAA;;AwB/FH,OA6MC;ExB1GE,eAAA;EACA,cAAA;EACA,gBAAA;EACA,UAAA;EACA,0BAAA","sourcesContent":["@charset \"UTF-8\";\n\n\n// Core variables, mixins, and icons\n@import \"variables.less\";\t// Modify this for custom colors, font-sizes, etc\n@import \"mixins.less\";\n@import \"icons.less\";\n\n// Fuel UX controls\n@import \"forms.less\"; // forms.less contains code shared between form elements.\n@import \"checkbox.less\"; // Checkbox styles that will be deprecated.\n@import \"checkbox-no-js.less\"; // Checkbox styles that are not dependant upon custom javascript controls.\n@import \"radio.less\"; // Radio styles that will be deprecated.\n@import \"radio-no-js.less\"; // Radio styles that are not dependant upon custom javascript controls.\n@import \"combobox.less\";\n@import \"datepicker.less\";\n@import \"infinite-scroll.less\";\n@import \"intelligent-dropdown.less\";\n@import \"loader.less\";\n@import \"pillbox.less\";\n@import \"placard.less\";\n@import \"repeater.less\";\n@import \"repeater-list.less\";\n@import \"repeater-thumbnail.less\";\n@import \"spinbox.less\";\n@import \"scheduler.less\";\n@import \"search.less\";\n@import \"selectlist.less\";\n@import \"picker.less\";\n@import \"tree.less\";\n@import \"wizard.less\";\n@import \"utility.less\";\n\n\n","// For clearing floats\n.clearfix {\n\t*zoom: 1;\n\t&:before,\n\t&:after {\n\t\tdisplay: table;\n\t\tcontent: \"\";\n\t\t// Fixes Opera/contenteditable bug:\n\t\t// http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952\n\t\tline-height: 0;\n\t}\n\t&:after {\n\t\tclear: both;\n\t}\n}\n\n#fuelux {\n\t// Single side border-radius\n\t.border-top-radius(@radius) {\n\t\tborder-top-right-radius: @radius;\n\t\tborder-top-left-radius: @radius;\n\t}\n\t.border-right-radius(@radius) {\n\t\tborder-bottom-right-radius: @radius;\n\t \tborder-top-right-radius: @radius;\n\t}\n\t.border-bottom-radius(@radius) {\n\t\tborder-bottom-right-radius: @radius;\n\t\tborder-bottom-left-radius: @radius;\n\t}\n\t.border-left-radius(@radius) {\n\t\tborder-bottom-left-radius: @radius;\n\t\tborder-top-left-radius: @radius;\n\t}\n\n\t// Gradient Bar Colors for buttons and alerts\n\t.gradient-bar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {\n\t\tcolor: @textColor;\n\t\ttext-shadow: @textShadow;\n\t\t#gradient > .vertical(@primaryColor, @secondaryColor);\n\t\tborder-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);\n\t\tborder-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);\n\t}\n\n\t// Gradients\n\t.vertical(@startColor: @gray33, @endColor: @gray20) {\n\t\tbackground-color: mix(@startColor, @endColor, 60%);\n\t\tbackground-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+\n\t\tbackground-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\n\t\tbackground-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+\n\t\tbackground-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10\n\t\tbackground-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10\n\t\tbackground-repeat: repeat-x;\n\t\tfilter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@startColor),argb(@endColor))); // IE9 and down\n\t}\n\n\t// Icon Base Styles\n\t.icon-base-styles(@fontFamily: \"fuelux\"){\n\t\tfont-family: @fontFamily !important;\n\t\tfont-style: normal !important;\n\t\tfont-weight: normal !important;\n\t\tfont-variant: normal !important;\n\t\ttext-transform: none !important;\n\t\tline-height: 1;\n\t\tspeak: none;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t}\n\n\t// Disables selection of text\n\t.no-selection-allowed(){\n\t\t-webkit-user-select: none;\n\t\t-moz-user-select: none;\n\t\t-ms-user-select: none;\n\t\t-o-user-select: none;\n\t\tuser-select: none;\n\t}\n\n\t// Opacity\n\t.opacity(@opacity) {\n\t\topacity: @opacity / 100;\n\t\tfilter: ~\"alpha(opacity=@{opacity})\";\n\t}\n\n\t// Helpers\n\t// -------------------------\n\t.data-label() {\n\t text-transform: uppercase;\n\t font-size: 10px;\n\t margin-bottom: 2px;\n\t text-shadow: 0 1px @true-white;\n\t color: @gray40;\n\t}\n\n\t.data-value() {\n\t font-size: 14px;\n\t}\n\n\t.section-heading() {\n\t font-size: 16px;\n\t color: @gray20;\n\t margin: 0 0 10px;\n\t padding: 0;\n\t text-shadow: 0 1px @true-white;\n\t}\n\n\t.text-emphasis-variant(@color) {\n\t\tcolor: @color;\n\t\t&:hover {\n\t\t\tcolor: darken(@color, 10%);\n\t\t}\n\t}\n\n\t.vertical-align() {\n\t\tmargin: auto;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tbottom: 0;\n\t}\n\n}\n","@font-face {\n\tfont-family: \"fuelux\";\n\tsrc:url(\"@{fueluxFontPath}fuelux.eot\");\n\tsrc:url(\"@{fueluxFontPath}fuelux.eot?#iefix\") format(\"embedded-opentype\"),\n\t\turl(data:font-woff;base64,d09GRk9UVE8AAAUUAAsAAAAABuAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAAAegAAAIisWS2RkZGVE0AAALwAAAAGQAAABxvEtzhR0RFRgAAAwwAAAAdAAAAIAA4AARPUy8yAAADLAAAAEoAAABgL7lMbGNtYXAAAAN4AAAAPAAAAUrAGiK3aGVhZAAAA7QAAAAvAAAANgDSVuNoaGVhAAAD5AAAABwAAAAkBCkCA2htdHgAAAQAAAAAGgAAABoHmgL4bWF4cAAABBwAAAAGAAAABgALUABuYW1lAAAEJAAAAN0AAAF3kxoWmXBvc3QAAAUEAAAAEAAAACAAAwABeJw90M9rE0EUB/D30uzusLtuNTqiGIs/+gt6ifVHtgfRHqQHLTYumEsrpSSWRVNozNJc2t6S2K2bBATbS0tLe9jDUlJ6aS85hFT8H6SCFPwTZiCIbpnq6fMe8+Y7j0GIRgERlbdO9r1TBIwAwijvi/D+Ln4tuqqjq3e5erRHhetW7I/r/i90xfN4ndelOHztjgNcjMP3S3HQ41iIgX4WQ6AbrsJN6IUhGIYReApjMA6WM2c/SyQSgnuCYcF9wQPBQ8EjQVJgCkbEvudbA2AZK/gRV9DFVfyEHlaxBhpiJPlk7GX6TebdhxWDDfEb9JbaGezI9Laa74zTOyqTn9O7KosFtFdlg0ymfeE5e0X7VTZaogOqwXz+OOwM/pqbZz2vs+VwyGC/2YXwjsGWf4YBxrdfYZjhMT9M/veQwU7ZHD3MNianstmpyUb28KjROOox+OcrLnV1Nfysy0AQ6YD5Yjpf+jJxLB0Eza2WR0zFruSW5otEq7W2m3v7pJ2SFvKLubJNNPvAaVZa5ET27LXcxjzRkopVS29n9ki7Le0s+ItBmWjHE9KMnXasCjlRAs9f290gWskqpGczJNWWNnfW/WpAtB9Kq9Qs7M+SVErKb+bW7SrRgpmttGcRU64ES35xl2h/Ac9Ys4h4nGNgYGBkAILzccd+gelbXJ9hNABYswg7AAAAeJxjYGRgYOADYgkGEGBiYARCLiBmAfMYAAS4AD0AAAB4nGNgZmJgnMDAysDB6MOYxsDA4A6lvzJIMrQwMDAxsHIywIEAgskQkOaawuDwgOEBJ+OD/w8Y9Bj//v8LFGaEK1AAQkYALokNlwAAeJxjYGBgZoBgGQZGBhBwAfIYwXwWBg0gzQakGRmYGBgecP7/D1LwgAFEKzBC1QMBIxsDgjNCAQBlrAaweJxjYGRgYADiH2cX2sfz23xl4GZiAIHzt7g+w2lmBmbGv4x/gVwOBrA0AFSyC6wAeJxjYGRgYPzLwMCgx8QAAkA2IwMqYAIANwYCMQIAAAACAAADARUBhwGDAQ8AWAADAAMAXACnAAAAAFAAAAsAAHicbY49asNAEIU/2bJMsEmX1JsipYS0BAwuU/gAKdy7WAuDkPDagtzDkD5djpED5AQ5TZ7kKVJ4l9n59vHmB1jyQcJwEjLujSfMeTae8sTROJXn03jGgm/jTPdXziS9k7IcqwaeqOOD8ZRXcuNUnovxjEe+jDPpP+zpCTR632Hfh6ZXfpNUS2rYEfUNdd/sBBs6Ws5jjnIEHJ6CUnmt+N/sqnitsVJ4eSpe1KJrz5su1sH5onRrdx0p8Pkq92Uly82VtpIiJw7jCk7NhrFsQzwdutZVRXm78A9U7zY2AAAAeJxjYGZABowMaAAAAI4ABQ==) format(\"woff\"),\n\t\turl(\"@{fueluxFontPath}fuelux.ttf\") format(\"truetype\"),\n\t\turl(\"@{fueluxFontPath}fuelux.svg#fuelux\") format(\"svg\");\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n//This could be an interesting addition...\n//[data-icon]:before {\n//\t#fuelux > .icon-base-styles();\n//\tcontent: attr(data-icon);\n//}\n\n.fuelux {\n\n\t[class^=\"fueluxicon-\"]:before,\n\t[class*=\" fueluxicon-\"]:before {\n\t\t#fuelux > .icon-base-styles();\n\t}\n\n\t.fueluxicon-loader-full:before {\n\t\tcontent: \"\\e000\";\n\t}\n\n\t.fueluxicon-loader-1:before {\n\t\tcontent: \"\\e001\";\n\t}\n\n\t.fueluxicon-loader-2:before {\n\t\tcontent: \"\\e002\";\n\t}\n\n\t.fueluxicon-loader-3:before {\n\t\tcontent: \"\\e003\";\n\t}\n\n\t.fueluxicon-loader-4:before {\n\t\tcontent: \"\\e004\";\n\t}\n\n\t.fueluxicon-loader-5:before {\n\t\tcontent: \"\\e005\";\n\t}\n\n\t.fueluxicon-loader-6:before {\n\t\tcontent: \"\\e006\";\n\t}\n\n\t.fueluxicon-loader-7:before {\n\t\tcontent: \"\\e007\";\n\t}\n\n\t.fueluxicon-loader-8:before {\n\t\tcontent: \"\\e008\";\n\t}\n\n\t//tree\n\n\t.fueluxicon-bullet:before {\n\t content: \"\\e009\";\n\t}\n\n}\n","// mixins\n.checkbox-radio-hover() {\n\tbox-shadow: inset 0px 0px 2px 1px rgba(91, 157, 217, .7), 0px 0px 5px 0px rgba(91, 157, 217, .7);\n}\n\n.checkbox-radio-focus() {\n\tbox-shadow: inset 0px 0px 2px 1px rgb(91, 157, 217), 0px 0px 5px 0px rgb(91, 157, 217);\n}\n\n\n.fuelux .radio, .fuelux .checkbox {\n\n\t&-inline {\n\t\tpadding-left: 0;\n\n\t\t&.highlight {\n\t\t\tleft: -8px;\n\t\t}\n\n\t\t// for checkboxes without text labels and alignment in .input-group-addon container\n\t\tlabel {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n\n\t// This handy trick allows us to make rules for .radio, .checkbox, .radio-inline, and, .checkbox-inline all at once.\n\t&, &-inline {\n\n\t\t// Sometimes the wrapping containter is a div with .checkbox or .radio, and has a label within it.\n\t\t// Sometimes the label itself is the wrapping container, and has .checkbox or .radio on it.\n\t\t// The use of the amperstand \"parent selector\" here allows us to cover many scenarios at once, with terse, but elegant, code.\n\t\tlabel&, .input-label&, & label, & .input-label {\n\t\t\t&:hover:before {\n\t\t\t\t.checkbox-radio-hover();\n\t\t\t}\n\t\t}\n\t\t\n\t\tlabel, .input-label, label& {\n\t\t\tcursor: pointer;\n\t\t\tfont-weight: normal;\n\t\t}\n\n\t\t&.highlight {\n\n\t\t\t\tinput[type=\"checkbox\"]:not(.sr-only), input[type=\"radio\"]:not(.sr-only) {\n\t\t\t\t& ~ label {\n\t\t\t\t\tpadding: 4px;\n\t\t\t\t\tborder-radius: @baseBorderRadius;\n\t\t\t\t}\n\t\t\t\t&:checked ~ label {\n\t\t\t\t\tbackground-color: @gray90;\n\t\t\t\t\topacity: 1;\n\t\t\t\t\tz-index: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinput[type=\"checkbox\"]:not(.sr-only), input[type=\"radio\"]:not(.sr-only) {\n\n\t\t\tposition: absolute;\n\t\t\twidth: 1px;\n\t\t\theight: 1px;\n\t\t\tmargin: -1px;\n\t\t\tpadding: 0;\n\t\t\toverflow: hidden;\n\t\t\tclip: rect(0,0,0,0);\n\t\t\tborder: 0;\n\n\t\t\t& ~ label {\n\t\t\t\tpadding-left: 0;\n\t\t\t\t&:before {\n\t\t\t\t\tfont-family:\"Glyphicons Halflings\";\n\t\t\t\t\tfont-style: normal;\n\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\tfont-variant: normal;\n\t\t\t\t\ttext-transform: none;\n\t\t\t\t\tline-height: 1;\n\t\t\t\t\tspeak: none;\n\t\t\t\t\tborder: 1px solid @gray67;\n\t\t\t\t\tcolor: @true-white;\n\t\t\t\t\tfont-size: 9px;\n\t\t\t\t\twidth: 14px;\n\t\t\t\t\theight: 14px;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\tmargin-bottom: -2px;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\ttext-align: left;\n\t\t\t\t\tz-index: 2;\n\t\t\t\t\tcontent: \"\";\n\t\t\t\t}\n\n\t\t\t}\n\n\n\n\t\t\t/* for keyboard tabbing */\n\t\t\t&:active ~ label, &:focus ~ label {\n\t\t\t\tcolor: @text-color;\n\t\t\t\tcolor: @checkboxPrimaryColor;\n\t\t\t\tcursor: pointer;\n\t\t\t\t\n\t\t\t\t&:before {\n\t\t\t\t\t.checkbox-radio-focus();\n\t\t\t\t\toutline: none;\n\t\t\t\t}\n\n\t\t\t\t&, &:hover {\n\t\t\t\t\tcolor: @text-color;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\t\t\t}\n\t\t\t&:active:hover ~ label, &:focus:hover ~ label, &:focus:hover ~ label, &:checked:hover ~ label {\n\t\t\t\t&, &:hover {\n\t\t\t\t\tcolor: @text-color;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\t\t\t}\n\n\n\n\n\t\t\t&[disabled=\"disabled\"], &[disabled], &:disabled {\n\t\t\t\t& ~ label, & ~ label:before {\n\t\t\t\t\tcolor: @text-color;\n\t\t\t\t\topacity: .65;\n\t\t\t\t\tcursor: not-allowed !important;\n\t\t\t\t\toutline: none;\n\t\t\t\t\tbox-shadow: none;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:checked ~ label {\n\t\t\t\t&:before {\n\t\t\t\t\tbackground: @checkboxPrimaryColor;\n\t\t\t\t\tborder-color: @checkboxPrimaryColor;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t&.highlight {\n\t\t\t&:before {\n\t\t\t\tleft: 4px;\n\t\t\t\ttop: 7px;\n\t\t\t}\n\t\t}\n\t}\n\n\n\t&.highlight {\n\t\tinput[type=\"checkbox\"]:not(.sr-only), input[type=\"radio\"]:not(.sr-only) {\n\t\t\t& ~ label {\n\t\t\t\tleft: -8px;\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t}\n\t}\n\n\n\t&-inline {\n\t\tpadding-left: 0;\n\t\t&.highlight {\n\t\t\t// left: -8px;\n\t\t}\n\t\t&:before {\n\t\t\tleft: 0;\n\t\t\ttop: 3px;\n\t\t}\n\t}\n\n}\n\n\n\n// Allows multiline labels next to checkboxes and radio \n// Should be wrapped in `<form class=\"form-horizontal\"><div class=\"form-group\">`\n.fuelux {\n\n\t.checkbox.multiline, .radio.multiline {\n\t\tfloat: left; \n\t\tmargin-left: 15px;\n\t}\n\n}\n\n\n.fuelux {\n\n\t.checkbox.multiline ~ .control-label, .radio.multiline ~ .control-label {\n\t\tfloat: left; \n\t\twidth: 80%; \n\t\tmargin-left: 10px; \n\t\ttext-align: left;\n\n\t\t& > label {\n\t\t\tfont-weight: normal;\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n}\n\n",".fuelux {\n\n\t.checkbox {\n\n\t\t&.highlight {\n\n\t\t\t// padding: 4px;\n\n\t\t\t& + .checkbox.highlight {\n\t\t\t\tmargin-top: -5px;\n\t\t\t}\n\n\t\t\t& label.checkbox-custom {\n\t\t\t\tpadding: 4px 4px 4px 24px;\n\t\t\t\t//margin-left: -8px;\n\t\t\t}\n\n\t\t\t&.checked label.checkbox-custom, label.checked.checkbox-custom {\n\t\t\t\tbackground: @gray90;\n\t\t\t\tborder-radius: @baseBorderRadius;\n\t\t\t}\n\t\t}\n\n\t\t/* for keyboard tabbing */\n\t\tinput[type=\"checkbox\"]:focus + .checkbox-label,\n\t\tinput[type=\"checkbox\"]:hover + .checkbox-label,\n\t\t.checkbox-label:hover\n\t\t {\n\t\t\tcolor: @gray60;\n\t\t}\n\n\t\tinput[type=\"checkbox\"]:disabled:focus + .checkbox-label,\n\t\tinput[type=\"checkbox\"]:disabled:hover + .checkbox-label,\n\t\t&.disabled label:hover\n\t\t {\n\t\t\tcolor: inherit;\n\t\t}\n\n\t}\n\n\t.form-horizontal .checkbox-inline {\n\t\tpadding-top: 0;\n\t}\n\n\t.input-group-addon.checkbox-custom.checkbox-inline:before {\n\t\tleft: 11px;\n\t\ttop: 9px;\n\t}\n\n\t.checkbox-custom {\n\t\tposition: relative;\n\n\t\t&:before {\n\t\t\t#fuelux > .icon-base-styles(\"Glyphicons Halflings\");\n\t\t\tborder: 1px solid @gray67;\n\t\t\tborder-radius: @baseBorderRadius;\n\t\t\tcolor: @true-white;\n\t\t\tcontent: \" \";\n\t\t\tfont-size: 9px;\n\t\t\theight: 14px;\n\t\t\tleft: 0px;\n\t\t\tpadding: 1px 0 0 1px;\n\t\t\tposition: absolute;\n\t\t\ttop: 3px;\n\t\t\twidth: 14px;\n\t\t}\n\n\t\t/* for keyboard tabbing */\n\t\t&:active:before, &:focus:before {\n\t\t\tcolor: @focusColor;\n\t\t\tcursor: pointer;\n\t\t\tbox-shadow: inset 0px 0px 2px 1px @focusColor, 0px 0px 5px 0px @focusColor;\n\t\t}\n\n\t\t&.highlight {\n\t\t\t&:before {\n\t\t\t\tleft: 4px;\n\t\t\t\ttop: 6px;\n\t\t\t}\n\t\t}\n\n\t\t&.checked {\n\t\t\t&:before {\n\t\t\t\tbackground: @checkboxPrimaryColor;\n\t\t\t\tborder-color: @checkboxPrimaryColor;\n\t\t\t\tcontent: \"\\e013\";\n\t\t\t}\n\t\t}\n\n\t\t&.disabled {\n\t\t\tcursor: not-allowed;\n\t\t\topacity: .65;\n\n\t\t\t&:before\n\t\t\t{\n\t\t\t\tcursor: not-allowed;\n\t\t\t\topacity: .65;\n\t\t\t}\n\t\t}\n\n\t\t&.checkbox-inline {\n\t\t\t&:before {\n\t\t\t\tleft: 0;\n\t\t\t\ttop: 3px;\n\t\t\t}\n\n\t\t\t&.highlight {\n\t\t\t\tpadding: 4px 4px 4px 24px;\n\t\t\t\tleft: -4px;\n\n\t\t\t\t&:before {\n\t\t\t\t\tleft: 4px;\n\t\t\t\t\ttop: 7px;\n\t\t\t\t}\n\n\t\t\t\t&.checked {\n\t\t\t\t\tbackground: @gray90;\n\t\t\t\t\tborder-radius: @baseBorderRadius;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t\t/* for keyboard tabbing */\n\t\tinput[type=\"checkbox\"]:focus + .checkbox-label {\n\t\t\tcolor: @gray60;\n\t\t}\n\n\t}\n\n\tlabel.checkbox-custom.checkbox-inline {\n\t\tpadding-left: 20px;\n\t}\n\n}\n","@import \"forms.less\";\n\n.fuelux {\n\t.checkbox, .checkbox-inline {\n\t\t\n\t\tinput[type=\"checkbox\"]:not(.sr-only) {\n\t\t\t& ~ label {\n\t\t\t\t&:before {\n\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t\tz-index: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:checked {\n\t\t\t\t& ~ label {\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tcolor: white;\n\t\t\t\t\t\tcontent: \"\\e013\";\n\t\t\t\t\t\tline-height: 1em;\n\t\t\t\t\t\tpadding-left: 1px;\n\t\t\t\t\t\tfont-size: 8px;\n\t\t\t\t\t\tpadding-top: 2px;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.hightlight {\n\t\t\t& + .checkbox-inline.highlight {\n\t\t\t\tmargin-left: -14px;\n\t\t\t\t&.checkbox-custom {\n\t\t\t\t\tmargin-left: 0px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t.checkbox {\n\n\t\t&.highlight {\n\t\t\tinput[type=\"checkbox\"]:not(.sr-only) {\n\t\t\t\t& ~ label {\n\t\t\t\t\tleft: -4px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n}",".radioTabbing() {\n\n\t/* for keyboard tabbing */\n\tinput[type=\"radio\"]:focus + .radio-label,\n\tinput[type=\"radio\"]:hover + .radio-label,\n\t.radio-label:hover {\n\t\tcolor: @gray60;\n\t}\n}\n\n.fuelux {\n\t.radio {\n\t\t&.highlight {\n\t\t\tpadding: 4px;\n\t\t\tmargin: 0 0 5px 0;\n\n\t\t\t& + .radio.highlight {\n\t\t\t\tmargin-top: -9px;\n\t\t\t}\n\t\t\t& label.radio-custom {\n\t\t\t\tleft: -8px;\n\t\t\t\tpadding: 4px 4px 4px 24px;\n\t\t\t\tborder-radius: @baseBorderRadius;\n\t\t\t\t&:before {\n\t\t\t\t\tleft: 5px;\n\t\t\t\t\ttop: 7px;\n\t\t\t\t}\n\t\t\t\t&:after {\n\t\t\t\t\tleft: 9px;\n\t\t\t\t\ttop: 11px;\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.checked label.radio-custom,\n\t\t\t& label.radio-custom.checked {\n\t\t\t\tbackground: @gray90;\n\t\t\t\tborder-radius: @baseBorderRadius;\n\t\t\t}\n\t\t}\n\n\t\t/* for keyboard tabbing */\n\t\tinput[type=\"radio\"]:focus + .radio-label,\n\t\tinput[type=\"radio\"]:hover + .radio-label,\n\t\t.radio-label:hover {\n\t\t\tcolor: @gray60;\n\t\t}\n\t}\n\t.form-horizontal .radio-inline {\n\t\tpadding-top: 0;\n\t}\n\t.input-group-addon.radio-custom.radio-inline {\n\t\t&:before {\n\t\t\tleft: 11px;\n\t\t\ttop: 9px;\n\t\t}\n\t\t&:after {\n\t\t\tleft: 15px;\n\t\t\ttop: 13px;\n\t\t}\n\t}\n\t.radio-custom {\n\t\tposition: relative;\n\n\t\t.highlight {\n\t\t\tpadding: 4px;\n\t\t\tmargin: 0 0 5px 0;\n\n\t\t\t&.checked {\n\t\t\t\tbackground: @gray90;\n\t\t\t\tborder-radius: @baseBorderRadius;\n\t\t\t}\n\t\t}\n\t\t&:after {\n\t\t\tbackground: transparent;\n\t\t\tborder-radius: 6px;\n\t\t\tcontent: \" \";\n\t\t\theight: 6px;\n\t\t\tleft: 4px;\n\t\t\tposition: absolute;\n\t\t\ttop: 7px;\n\t\t\twidth: 6px;\n\t\t}\n\t\t&:before {\n\t\t\tborder: 1px solid @gray67;\n\t\t\tborder-radius: 14px;\n\t\t\tcontent: \" \";\n\t\t\theight: 14px;\n\t\t\tleft: 0px;\n\t\t\tposition: absolute;\n\t\t\ttop: 3px;\n\t\t\twidth: 14px;\n\t\t}\n\t\t&.checked {\n\t\t\t&:after {\n\t\t\t\tbackground: @true-white;\n\t\t\t}\n\t\t\t&:before {\n\t\t\t\tbackground: @checkboxPrimaryColor;\n\t\t\t\tborder-color: @checkboxPrimaryColor;\n\t\t\t}\n\t\t}\n\t\t&.disabled {\n\t\t\tcursor: not-allowed;\n\t\t\topacity: .65;\n\n\t\t\t&:after {\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\t\t\t&:before {\n\t\t\t\tcursor: not-allowed;\n\t\t\t\topacity: .65;\n\t\t\t}\n\t\t}\n\t\t&.radio-inline {\n\t\t\t&:after {\n\t\t\t\tleft: 4px;\n\t\t\t\ttop: 7px;\n\t\t\t}\n\t\t\t&:before {\n\t\t\t\tleft: 0;\n\t\t\t\ttop: 3px;\n\t\t\t}\n\t\t\t&.highlight {\n\t\t\t\tleft: -3px;\n\n\t\t\t\tpadding: 4px 4px 4px 24px;\n\n\t\t\t\t&:after {\n\t\t\t\t\tleft: 8px;\n\t\t\t\t\ttop: 11px;\n\t\t\t\t}\n\t\t\t\t&:before {\n\t\t\t\t\tleft: 4px;\n\t\t\t\t\ttop: 7px;\n\t\t\t\t}\n\t\t\t\t&.checked {\n\t\t\t\t\tbackground: @gray90;\n\t\t\t\t\tborder-radius: @baseBorderRadius;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* for keyboard tabbing */\n\t\tinput[type=\"radio\"]:focus + .radio-label {\n\t\t\tcolor: @gray60;\n\t\t}\n\t}\n\n\tlabel.radio-custom.radio-inline {\n\t\tpadding-left: 20px;\n\t}\n\n}\n","@import \"forms.less\";\n\n.fuelux {\n\t.radio, .radio-inline {\n\t\n\t\tinput[type=\"radio\"]:not(.sr-only) {\n\n\t\t\t& ~ label {\n\t\t\t\t&:before {\n\t\t\t\t\tborder-radius: 8px;\n\t\t\t\t\tz-index: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:checked {\n\n\t\t\t\t& ~ label {\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tbackground: @checkboxPrimaryColor; /* Old browsers */\n\t\t\t\t\t\tbackground: -moz-radial-gradient(center, ellipse cover, @true-white 0%, @true-white 40%, @checkboxPrimaryColor 41%, @checkboxPrimaryColor 100%); /* FF3.6+ */\n\t\t\t\t\t\tbackground: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,@true-white), color-stop(40%,@true-white), color-stop(41%,@checkboxPrimaryColor), color-stop(100%,@checkboxPrimaryColor)); /* Chrome,Safari4+ */\n\t\t\t\t\t\tbackground: -webkit-radial-gradient(center, ellipse cover, @true-white 0%, @true-white 40%, @checkboxPrimaryColor 41%, @checkboxPrimaryColor 100%); /* Chrome10+,Safari5.1+ */\n\t\t\t\t\t\tbackground: -o-radial-gradient(center, ellipse cover, @true-white 0%, @true-white 40%, @checkboxPrimaryColor 41%, @checkboxPrimaryColor 100%); /* Opera 12+ */\n\t\t\t\t\t\tbackground: -ms-radial-gradient(center, ellipse cover, @true-white 0%, @true-white 40%, @checkboxPrimaryColor 41%, @checkboxPrimaryColor 100%); /* IE10+ */\n\t\t\t\t\t\tbackground: radial-gradient(ellipse at center, @true-white 0%, @true-white 40%, @checkboxPrimaryColor 41%, @checkboxPrimaryColor 100%); /* W3C */\n\t\t\t\t\t\tfilter: ~\"progid:DXImageTransform.Microsoft.gradient(startColorstr='@{true-white}', endColorstr='@{checkboxPrimaryColor}', GradientType=1)\"; /* IE6-9 fallback on horizontal gradient */\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t/* for keyboard tabbing */\n\t\t\t&:hover ~ label, &:active ~ label, &:focus ~ label {\n\t\t\t\n\t\t\t\t&:before {\n\t\t\t\t\t.checkbox-radio-focus();\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t/* for keyboard tabbing */\n\t\t\t&:active:hover ~ label, &:focus:hover ~ label, &:focus:hover ~ label, &:checked:hover ~ label {\n\t\t\t\t&:before {\n\t\t\t\t\toutline-color: none;\n\t\t\t\t\toutline-offset: 0;\n\t\t\t\t\toutline-style: none;\n\t\t\t\t\toutline-width: 0;\n\t\t\t\t\tcursor: default;\n\t\t\t\t}\n\n\t\t\t\t&, &:hover {\n\t\t\t\t\tcolor: @text-color;\n\t\t\t\t\tcursor: default;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n}\n",".fuelux {\n\n\t .combobox {\n\t\t&.disabled {\n\t\t\t.input-group-btn {\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\t\t}\n\t\tinput {\n\t\t\t&::-ms-clear {\n\t\t\t\tdisplay:none;\n\t\t\t}\n\t\t}\n\t}\n\n}\n",".fuelux {\n\n\t.datepicker {\n\n\t\t&-calendar {\n\t\t\tpadding: 16px 16px 0;\n\t\t\tmin-height: 262px;\n\n\t\t\tbutton {\n\t\t\t\tborder: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\n\t\t\t&-days {\n\t\t\t\theight: 182px;\n\t\t\t\tmargin: 10px 0 12px;\n\t\t\t\twidth: 100%;\n\n\t\t\t\tthead {\n\t\t\t\t\tborder-bottom: 1px solid @gray80;\n\t\t\t\t}\n\n\t\t\t\t/* for spacing */\n\t\t\t\ttbody:before {\n\t\t\t\t\tcolor: transparent;\n\t\t\t\t\tcontent: \"\\200C\";\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tline-height: 3px;\n\t\t\t\t\tvisibility: hidden;\n\t\t\t\t}\n\n\t\t\t\ttd, th {\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\theight: 32px;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\twidth: 14.29%;\n\t\t\t\t}\n\n\t\t\t\ttd {\n\t\t\t\t\tb, button {\n\t\t\t\t\t\tcolor: @gray20;\n\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\theight: 30px;\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\twidth: 30px;\n\t\t\t\t\t}\n\n\t\t\t\t\tb {\n\t\t\t\t\t\tline-height: 30px;\n\t\t\t\t\t}\n\n\t\t\t\t\tspan {\n\t\t\t\t\t\tdisplay: block;\n\n\t\t\t\t\t\tborder-radius: @baseBorderRadius;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground: @selectableHover;\n\t\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&.current-day {\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tborder: 1px solid @gray20;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&.last-month, &.next-month {\n\t\t\t\t\t\tbackground: darken(@selected, 10%);\n\t\t\t\t\t\t&.first {\n\t\t\t\t\t\t\tborder-top-left-radius: @baseBorderRadius;\n\t\t\t\t\t\t\tborder-bottom-left-radius: @baseBorderRadius;\n\t\t\t\t\t\t\tpadding-left: 1px;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.last {\n\t\t\t\t\t\t\tborder-top-right-radius: @baseBorderRadius;\n\t\t\t\t\t\t\tborder-bottom-right-radius: @baseBorderRadius;\n\t\t\t\t\t\t\tpadding-right: 1px;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&.past {\n\t\t\t\t\t\tb, button {\n\t\t\t\t\t\t\tcolor: lighten(@gray20, 40%);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&.restricted {\n\t\t\t\t\t\tb, button {\n\t\t\t\t\t\t\tcursor: no-drop;\n\t\t\t\t\t\t\tposition: relative;\n\n\t\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\t\tborder-top: 1px solid darken(@btnDangerBackground, 10%);\n\t\t\t\t\t\t\t\tbottom: 0;\n\t\t\t\t\t\t\t\tcontent: \" \";\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\tleft: 5px;\n\t\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\t\tright: 5px;\n\t\t\t\t\t\t\t\ttop: 50%;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&.selected {\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tbackground: @selected;\n\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tbackground: @selectedHover;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tb, button {\n\t\t\t\t\t\t\tcolor: @gray53;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&.current-day {\n\t\t\t\t\t\t\tbox-shadow: 0 0 0 1px @true-white offset;\n\t\t\t\t\t\t\tb, button {\n\t\t\t\t\t\t\t\tcolor: @gray13;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\t\tb, button {\n\t\t\t\t\t\t\t\t\t\tborder-color: @datepickerHover;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tth {\n\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\theight: 22px;\n\t\t\t\t\tvertical-align: top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&-header {\n\t\t\t\t.clearfix;\n\n\t\t\t\tbutton {\n\t\t\t\t\tborder: 0;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t}\n\n\t\t\t\t.title {\n\t\t\t\t\tmargin: 0 auto;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 174px;\n\t\t\t\t\tcolor: @gray13;\n\t\t\t\t\tfont-size: 20px;\n\t\t\t\t\tline-height: 30px;\n\t\t\t\t\ttext-decoration: underline;\n\t\t\t\t\tvertical-align: middle;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tcolor: @datepickerHover;\n\t\t\t\t\t\t\ttext-decoration: underline;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&.disabled {\n\t\t\t\t\t\t\tcursor: default;\n\t\t\t\t\t\t\tpointer-events: none;\n\t\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.month {\n\t\t\t\t\t\t\tdisplay: inline;\n\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\tpadding: 0;\n\n\t\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\t\tdisplay: none;\n\n\t\t\t\t\t\t\t\t&.current {\n\t\t\t\t\t\t\t\t\tdisplay: inline;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t.next, .prev {\n\t\t\t\t\tbackground: @gray40;\n\t\t\t\t\tbackground-clip: padding-box;\n\t\t\t\t\tborder-radius: 30px;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\tfloat: left;\n\t\t\t\t\theight: 30px;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\twidth: 30px;\n\n\t\t\t\t\tspan.glyphicon {\n\t\t\t\t\t\tcolor: @true-white;\n\t\t\t\t\t\tfont-size: 16px;\n\t\t\t\t\t\tline-height: 30px;\n\t\t\t\t\t}\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tbackground: @datepickerHover;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.next {\n\t\t\t\t\tfloat: right;\n\n\t\t\t\t\tspan.glyphicon {\n\t\t\t\t\t\tline-height: 28px;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&-footer {\n\t\t\t\tbackground: @gray90;\n\t\t\t\tbackground-clip: padding-box;\n\t\t\t\tborder-radius: 0 0 4px 4px;\n\t\t\t\tborder-top: 1px solid @gray80;\n\t\t\t\theight: 30px;\n\t\t\t\tmargin: 0 -16px;\n\t\t\t\tpadding: 4px 14px;\n\n\t\t\t\t.datepicker-today {\n\t\t\t\t\tcolor: @gray20;\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\ttext-decoration: underline;\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tcolor: @datepickerHoverAlt;\n\t\t\t\t\t\ttext-decoration: underline;\n\t\t\t\t\t}\n\n\t\t\t\t\t&.disabled {\n\t\t\t\t\t\tcolor: @gray53;\n\t\t\t\t\t\tcursor: default;\n\t\t\t\t\t\tpointer-events: none;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tcolor: @gray53;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-calendar-wrapper {\n\t\t\tborder: 1px solid @gray46;\n\t\t\tmin-height: 20px;\n\t\t\tpadding: 0;\n\t\t\twidth: 300px;\n\t\t}\n\n\t\t&-wheels {\n\t\t\tdisplay: none;\n\n\t\t\tul button {\n\t\t\t\tborder: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\n\t\t\t&-footer {\n\t\t\t\tbackground: @gray90;\n\t\t\t\tborder-radius: 0 0 4px 4px;\n\t\t\t\tborder-top: 1px solid @gray80;\n\t\t\t\tclear: both;\n\n\t\t\t\t.datepicker-wheels-back {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tcolor: @gray13;\n\t\t\t\t\tfloat: left;\n\t\t\t\t\tline-height: 22px;\n\t\t\t\t\tborder: 0;\n\t\t\t\t\tbackground-color: transparent;\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tcolor: @datepickerHoverAlt;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.datepicker-wheels-select {\n\t\t\t\t\tfloat: right;\n\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\tcolor: @focusColor;\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tcolor: @datepickerHoverAlt;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&-month, &-year {\n\t\t\t\tfloat: left;\n\t\t\t\twidth: 50%;\n\n\t\t\t\tul {\n\t\t\t\t\theight: 217px;\n\t\t\t\t\tlist-style-type: none;\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\toverflow: auto;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\ttext-align: center;\n\n\t\t\t\t\tli {\n\t\t\t\t\t\tmargin: 4px 0;\n\n\t\t\t\t\t\tbutton {\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\tcolor: @gray27;\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tfont-size: 16px;\n\t\t\t\t\t\t\tline-height: 24px;\n\t\t\t\t\t\t\ttext-decoration: none;\n\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tbackground: @infoBackground;\n\t\t\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&.selected {\n\t\t\t\t\t\t\tbutton {\n\t\t\t\t\t\t\t\tbackground: @datepickerHoverAlt;\n\t\t\t\t\t\t\t\tcolor: @true-white;\n\n\t\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\t\tbackground: @datepickerHover;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.header {\n\t\t\t\t\tbackground: @gray90;\n\t\t\t\t\tbackground-clip: padding-box;\n\t\t\t\t\tborder-bottom: 1px solid @gray80;\n\t\t\t\t\tborder-radius: 4px 0 0 0;\n\t\t\t\t\tcolor: @gray13;\n\t\t\t\t\tfont-size: 20px;\n\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\tline-height: 30px;\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&.full {\n\t\t\t\t\tborder-left: 0;\n\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t.header {\n\t\t\t\t\t\tborder-radius: 4px 4px 0 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&-year {\n\t\t\t\tborder-left: 1px solid @gray80;\n\t\t\t\tfloat: right;\n\n\t\t\t\t.header {\n\t\t\t\t\tborder-radius: 0 4px 0 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinput {\n\t\t\t&::-ms-clear {\n\t\t\t\tdisplay:none;\n\t\t\t}\n\t\t}\n\t}\n\n}",".fuelux {\n\n\t.infinitescroll {\n\t\toverflow-y: auto;\n\n\t\t.infinitescroll-end {\n\t\t\tclear: both;\n\t\t\tfont-style: italic;\n\t\t\tpadding: 6px;\n\t\t\ttext-align: center;\n\t\t}\n\n\t\t.infinitescroll-load {\n\t\t\tclear: both;\n\t\t\tpadding: 6px;\n\n\t\t\tbutton {\n\t\t\t\tpadding: 5px 12px;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.loader {\n\t\t\t\tfont-size: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin: 0 auto;\n\t\t\t\twidth: 32px;\n\t\t\t}\n\t\t}\n\t}\n\n}",".fuelux {\n\n\t.dropUp {\n\t\t-webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n\t\t-moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n\t\tbox-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n\t}\n\n}",".fuelux {\n\n\t.loader {\n\t\theight: 64px;\n\t\tfont-size: 64px;\n\t\tposition: relative;\n\t\twidth: 64px;\n\n\t\t&:after, &:before {\n\t\t\t#fuelux > .icon-base-styles();\n\n\t\t\tbottom: 0;\n\t\t\tdisplay: block;\n\t\t\tleft: 0;\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t\ttop: 0;\n\t\t}\n\n\t\t&:before {\n\t\t\tcontent: '\\e000';\n\t\t\topacity: 0.33;\n\t\t}\n\n\t\t&.iefix:before{\n\t\t\tcolor: @gray74;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t&[data-frame=\"1\"]:after {\n\t\t\tcontent: '\\e001';\n\t\t}\n\n\t\t&[data-frame=\"2\"]:after {\n\t\t\tcontent: '\\e002';\n\t\t}\n\n\t\t&[data-frame=\"3\"]:after {\n\t\t\tcontent: '\\e003';\n\t\t}\n\n\t\t&[data-frame=\"4\"]:after {\n\t\t\tcontent: '\\e004';\n\t\t}\n\n\t\t&[data-frame=\"5\"]:after {\n\t\t\tcontent: '\\e005';\n\t\t}\n\n\t\t&[data-frame=\"6\"]:after {\n\t\t\tcontent: '\\e006';\n\t\t}\n\n\t\t&[data-frame=\"7\"]:after {\n\t\t\tcontent: '\\e007';\n\t\t}\n\n\t\t&[data-frame=\"8\"]:after {\n\t\t\tcontent: '\\e008';\n\t\t}\n\t}\n\n}\n",".fuelux {\n\n\t.pillbox {\n\t\tborder: 1px solid @gray74;\n\t\tborder-radius: 4px;\n\t\tcursor: text;\n\t\tpadding: 3px;\n\n\t\t&[data-readonly] {\n\t\t\tborder: 1px solid transparent;\n\n\t\t\t&.truncate {\n\t\t\t\t.pillbox-input-wrap {\n\t\t\t\t\tdisplay: inline-block;\n\n\t\t\t\t\t&.truncated {\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.pillbox-more {\n\t\t\t\t\tdisplay: inline;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.pill {\n\t\t\t\tspan.glyphicon-close {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.pillbox-add-item {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t.pillbox-input-wrap {\n\t\t\t\tdisplay: none;\n\n\t\t\t\tbutton.dropdown-toggle {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.pills-editable {\n\t\t\t.pill-group {\n\t\t\t\t.pill {\n\t\t\t\t\tspan {\n\t\t\t\t\t\tcursor: text;\n\n\t\t\t\t\t\t&.glyphicon-close {\n\t\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t> .pill-group {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t\twidth: 100%;\n\n\t\t\t> .pill {\n\t\t\t\tmargin: 2px;\n\t\t\t\tcursor: default;\n\t\t\t\tfloat:left;\n\t\t\t\tword-break: break-all;\n\n\t\t\t\t&.pillbox-highlight {\n\t\t\t\t\toutline: 1px dotted @gray60;\n\t\t\t\t}\n\n\t\t\t\t&.truncated {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\n\t\t\t\t.pillbox-list-edit {\n\t\t\t\t\tborder: none;\n\t\t\t\t\tcolor: @gray20;\n\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\tborder-radius: 2px;\n\n\t\t\t\t\t&:focus {\n\t\t\t\t\t\toutline: none;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.glyphicon-close {\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\ttop: -1px;\n\t\t\t\t\tleft: 2px;\n\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tcontent: \" \\00d7\";\n\t\t\t\t\t}\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\topacity: .4;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\t.pillbox-input-wrap {\n\t\t\tposition: relative;\n\t\t\tmargin: 4px 0 3px 3px;\n\t\t\tfloat: left;\n\n\t\t\t&.editing {\n\t\t\t\tborder: 1px solid @gray80;\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tmargin: 2px 0 3px 3px;\n\n\t\t\t\tinput.pillbox-add-item {\n\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t\tcolor: @gray20;\n\t\t\t\t\theight: 32px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.pillbox-add-item {\n\t\t\tborder: none;\n\t\t\tbox-shadow: none;\n\n\t\t\t&:focus {\n\t\t\t\toutline: none;\n\t\t\t\tborder: none;\n\t\t\t}\n\t\t}\n\n\t\t.pillbox-more {\n\t\t\tcursor: pointer;\n\t\t\tdisplay: none;\n\t\t\tline-height: 30px;\n\t\t}\n\n\t\t.suggest {\n\t\t\tmax-height: 166px; // arbitrary number\n\t\t\toverflow-y: auto;\n\n\t\t\t> li {\n\t\t\t\twhite-space: nowrap;\n\t\t\t\tcursor: pointer;\n\t\t\t\tpadding: 3px 20px;\n\n\t\t\t\t&.pillbox-suggest-sel {\n\t\t\t\t\tbackground-color: @gray93;\n\t\t\t\t}\n\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground-color: @gray93;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinput {\n\n\t\t\t&::-ms-clear {\n\t\t\t\tdisplay:none;\n\t\t\t}\n\t\t}\n\t}\n\n}",".fuelux {\n\n\t.placard {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\n\t\t&[data-ellipsis=\"true\"] {\n\t\t\t&.showing {\n\t\t\t\tinput.placard-field {\n\t\t\t\t\toverflow: visible;\n\t\t\t\t\ttext-overflow: clip;\n\t\t\t\t\twhite-space: normal;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinput.placard-field {\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\n\t\t\t\t&::-ms-clear {\n\t\t\t\t\tdisplay:none;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttextarea.placard-field {\n\t\t\t\t&[readonly] {\n\t\t\t\t\toverflow: hidden;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.showing {\n\t\t\t.placard-footer,\n\t\t\t.placard-header,\n\t\t\t.placard-popup {\n\t\t\t\tdisplay: block;\n\t\t\t\tz-index: 1;\n\t\t\t}\n\n\t\t\tinput.placard-field, textarea.placard-field {\n\t\t\t\tbackground: @true-white;\n\t\t\t\tborder: 1px solid @gray80;\n\t\t\t\tbox-shadow: none;\n\t\t\t\tposition: relative;\n\t\t\t\tz-index: 1;\n\t\t\t}\n\t\t}\n\n\t\tinput.placard-field, textarea.placard-field {\n\t\t\tresize: none;\n\n\t\t\t&[readonly] {\n\t\t\t\tbackground: @true-white;\n\t\t\t\tcursor: auto;\n\n\t\t\t\t&.glass {\n\t\t\t\t\tbackground: none;\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tbackground: @infoBackground;\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:focus {\n\t\t\t\tborder: 1px solid @gray80;\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\t\t}\n\n\t\t&-cancel {\n\t\t\tfont-size: 12px;\n\t\t\tmargin-right: 4px;\n\t\t\tvertical-align: middle;\n\t\t}\n\n\t\t&-footer,\n\t\t&-header {\n\t\t\tdisplay: none;\n\t\t\tleft: 0;\n\t\t\tline-height: 1;\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t}\n\n\t\t&-footer {\n\t\t\tpadding: 4px 0 8px 0;\n\t\t\ttext-align: right;\n\t\t\ttop: 100%;\n\t\t}\n\n\t\t&-header {\n\t\t\tbottom: 100%;\n\t\t\tpadding: 8px 0 4px 0;\n\n\t\t\th1, h2, h3, h4, h5, h6 {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-popup {\n\t\t\tbackground: @infoBackground;\n\t\t\tbackground-clip: padding-box;\n\t\t\tborder: 1px solid @gray80;\n\t\t\tborder-radius: 4px;\n\t\t\tbottom: -8px;\n\t\t\tbox-shadow: 0 0 0 1px @true-white inset;\n\t\t\tdisplay: none;\n\t\t\tleft: -8px;\n\t\t\tposition: absolute;\n\t\t\tright: -8px;\n\t\t\ttop: -8px;\n\t\t}\n\n\t\t.glass {\n\t\t\tbackground: transparent;\n\t\t\tborder: 1px solid @true-white;\n\t\t\tbox-shadow: none;\n\n\t\t\t&:hover {\n\t\t\t\tbackground: @infoBackground;\n\t\t\t\tborder-color: @focusColor;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&[disabled] {\n\t\t\t\t\tbackground: transparent;\n\t\t\t\t\tborder-color: @true-white;\n\t\t\t\t\tcursor: not-allowed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:focus {\n\t\t\t\tbackground: @true-white;\n\t\t\t\tborder-color: @focusColor;\n\t\t\t\tbox-shadow: inset 0 1px 1px fade(@true-black, 75%), 0 0 8px fade(@focusColor, 60%);\n\t\t\t\tcursor: auto;\n\n\t\t\t\t&[disabled] {\n\t\t\t\t\tbackground: transparent;\n\t\t\t\t\tborder-color: @true-white;\n\t\t\t\t\tcursor: not-allowed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&[disabled] {\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\t\t}\n\t}\n\n}",".fuelux {\n\n\t.repeater {\n\t\tborder: 1px solid @gray87;\n\t\tborder-radius: 4px;\n\n\t\t&-canvas {\n\t\t\t&.scrolling{\n\t\t\t\tbottom: 0;\n\t\t\t\tleft: 0;\n\t\t\t\toverflow-y: auto;\n\t\t\t\tposition: absolute;\n\t\t\t\tright: 0;\n\t\t\t\ttop: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-header,\n\t\t&-footer\n\t\t{\n\t\t\tbackground: @gray98;\n\t\t\tmin-height: 50px;\n\t\t\tpadding: 8px;\n\t\t\t.clearfix;\n\n\t\t\t&-left {\n\t\t\t\tfloat: left;\n\t\t\t}\n\n\t\t\t&-right {\n\t\t\t\tfloat: right;\n\t\t\t}\n\n\t\t\t@media (max-width: 625px) {\n\t\t\t\t&-left,\n\t\t\t\t&-right {\n\t\t\t\t\tfloat: none;\n\t\t\t\t\t.clearfix;\n\t\t\t\t}\n\n\t\t\t\t&-left {\n\t\t\t\t\tmargin-bottom: 8px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-header {\n\t\t\tborder-bottom: 1px solid @gray87;\n\t\t\t#fuelux > .border-top-radius(4px);\n\t\t}\n\n\t\t&-footer {\n\t\t\tborder-top: 1px solid @gray87;\n\t\t\t#fuelux > .border-bottom-radius(4px);\n\t\t}\n\n\t\t&-loader {\n\t\t\tdisplay: none;\n\t\t\tleft: 50%;\n\t\t\tposition: absolute;\n\t\t\tmargin: -32px 0 0 -32px;\n\t\t\ttop: 50%;\n\t\t}\n\n\t\t&-viewport {\n\t\t\tmin-height: 80px;\n\t\t\tposition: relative;\n\t\t}\n\n\t\t&-pagination {\n\n\t\t\tlabel {\n\t\t\t\tfont-weight: normal;\n\t\t\t}\n\n\t\t\t.repeater-primaryPaging {\n\t\t\t\tdisplay: none;\n\t\t\t\tvertical-align: middle;\n\t\t\t\twidth: 116px;\n\n\t\t\t\t&.active {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t}\n\n\t\t\t\tul.dropdown-menu {\n\t\t\t\t\tmin-width: 116px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.repeater-secondaryPaging {\n\t\t\t\tdisplay: none;\n\t\t\t\twidth: 82px;\n\n\t\t\t\t&.active {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-search {\n\t\t\tfloat: left;\n\t\t\twidth: 200px;\n\t\t}\n\n\t\t&-title {\n\t\t\tdisplay: block;\n\t\t\tfloat: left;\n\t\t\tline-height: 34px;\n\t\t\tmargin-right: 10px;\n\t\t}\n\n\t\t/*\n\t\t * reinforce spacing around control buttons\n\t\t */\n\t\t&-itemization .selectlist, // TODO add specfic class for page size dropdown\n\t\t&-filters,\n\t\t&-secondaryPaging,\n\t\t&-primaryPaging,\n\t\t&-next,\n\t\t&-prev\n\t\t{\n\t\t\tmargin: auto 0.3em;\n\t\t}\n\t}\n\n}","@mutli-select-enabled-width: 37px;\n.selectable() {\n\t&.selectable {\n\t\t&:hover td, &.hovered td {\n\t\t\tbackground: @selectableHover;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.checkbox-custom:before {\n\t\t\tmargin-top: -4px;\n\t\t\ttop: 0\n\t\t}\n\t}\n\t&.selected {\n\t\ttd {\n\t\t\tbackground: @selected;\n\t\t\tcolor: @gray20;\n\n\t\t\t&:first-child {\n\t\t\t\tpadding-left: 30px;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.fuelux {\n\t.repeater[data-viewtype=\"list\"] {\n\t\t.repeater-canvas {\n\t\t\t&.scrolling {\n\t\t\t\toverflow: visible;\n\n\t\t\t\t.repeater-list {\n\t\t\t\t\tbottom: 0;\n\t\t\t\t\tleft: 0;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: 0;\n\t\t\t\t\ttop: 0;\n\t\t\t\t}\n\n\t\t\t\t.repeater-list-wrapper {\n\t\t\t\t\theight: 100%;\n\t\t\t\t\toverflow: auto;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.repeater-list {\n\t\t\t\tposition: relative;\n\n\t\t\t\ttable {\n\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\ttbody {\n\t\t\t\t\t\ttd {\n\t\t\t\t\t\t\tborder-bottom: 1px solid @gray87;\n\t\t\t\t\t\t\tborder-left: 1px solid @gray87;\n\t\t\t\t\t\t\tborder-top: none;\n\n\t\t\t\t\t\t\t&:first-child {\n\t\t\t\t\t\t\t\tborder-left: none;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&.sorted {\n\t\t\t\t\t\t\t\tbackground: @gray98;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttr {\n\t\t\t\t\t\t\t&:focus {\n\t\t\t\t\t\t\t\toutline: 1px dotted @gray87;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&.empty {\n\t\t\t\t\t\t\t\ttd {\n\t\t\t\t\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tpadding: 20px;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.selectable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthead > tr > th {\n\t\t\t\t\t\tbackground: @gray98;\n\t\t\t\t\t\tborder-bottom: 1px solid @gray87;\n\t\t\t\t\t\tborder-left: 1px solid transparent;\n\t\t\t\t\t\tborder-top: none;\n\t\t\t\t\t\tcolor: fade(@true-black, 0);\t// transparent\n\t\t\t\t\t\tline-height: 1.42857;\n\t\t\t\t\t\tpadding: 8px;\n\n\t\t\t\t\t\t#fuelux > .no-selection-allowed();\n\n\t\t\t\t\t\t&:first-child {\n\t\t\t\t\t\t\tborder-left: none;\n\t\t\t\t\t\t\t.header-checkbox {\n\t\t\t\t\t\t\t\twidth: @mutli-select-enabled-width;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&.sortable {\n\t\t\t\t\t\t\t&:hover, &.sorted {\n\t\t\t\t\t\t\t\tbackground: @selectableHover;\n\t\t\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\t\t\t#fuelux > .vertical(@startColor: @gray98; @endColor: @gray90);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&.sorted {\n\t\t\t\t\t\t\tspan.glyphicon {\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\tvisibility: hidden;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.glyphicon {\n\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\tfloat: right;\n\t\t\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.actions-hidden {\n\t\t\t\t\t\t\tvisibility: hidden;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&-check {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\theight: 0;\n\t\t\t\t\tline-height: 0;\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tvertical-align: top;\n\t\t\t\t\twidth: 0;\n\n\t\t\t\t\tspan.glyphicon {\n\t\t\t\t\t\tleft: -22px;\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\ttop: 2px;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&-heading {\n\t\t\t\t\tbackground: @gray98;\n\t\t\t\t\tborder-bottom: 1px solid @gray87;\n\t\t\t\t\tborder-left: 1px solid @gray87;\n\t\t\t\t\tborder-top: none;\n\t\t\t\t\tcolor: @gray20;\n\t\t\t\t\tline-height: 1.42857;\n\t\t\t\t\tmargin-left: -9px;\n\t\t\t\t\tpadding: 8px;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\tz-index: 1;\n\n\t\t\t\t\t#fuelux > .no-selection-allowed();\n\n\t\t\t\t\t&.shifted {\n\t\t\t\t\t\tmargin-left: -1px;\n\n\t\t\t\t\t\t//Webkit override\n\t\t\t\t\t\t@media screen and (-webkit-min-device-pixel-ratio: 0) {\n\t\t\t\t\t\t\tmargin-left: 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&.sortable {\n\t\t\t\t\t\t&:hover, &.sorted {\n\t\t\t\t\t\t\tbackground: @gray96;\n\t\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\t\t#fuelux > .vertical(@startColor: @gray98; @endColor: @gray90);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&.sorted {\n\t\t\t\t\t\t\tspan.glyphicon {\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\tvisibility: visible;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tspan.glyphicon {\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\tfloat: right;\n\t\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Frozen Column Class that gets added if frozen enabled\n\t\t\t&.frozen-enabled {\n\t\t\t\toverflow: auto;\n\t\t\t\t.repeater-list-wrapper {\n\t\t\t\t\toverflow: visible;\n\t\t\t\t}\n\t\t\t\t.repeater-list {\n\t\t\t\t\t.frozen-column-wrapper {\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\tz-index: 2;\n\t\t\t\t\t\tleft: 0;\n\t\t\t\t\t\tth, td {\n\t\t\t\t\t\t\t//position: relative;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t.frozen-thead-wrapper {\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\ttop: 0;\n\t\t\t\t\t\tleft: 0;\n\t\t\t\t\t\tz-index: 3;\n\t\t\t\t\t\ttable {\n\t\t\t\t\t\t\tborder-right: 1px solid @gray87;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttable {\n\t\t\t\t\t\ttable-layout: fixed;\n\t\t\t\t\t\tword-wrap: break-word;\n\n\t\t\t\t\t\t&.table-frozen{\n\t\t\t\t\t\t\tborder-right: 1px solid @gray87;\n\t\t\t\t\t\t\tz-index: 2;\n\t\t\t\t\t\t\tbackground: @true-white;\n\t\t\t\t\t\t\tborder-collapse: collapse;\n\t\t\t\t\t\t\ttable-layout: fixed;\n\t\t\t\t\t\t\tfloat: left;\n\t\t\t\t\t\t\ttd, th {\n\t\t\t\t\t\t\t\tborder-collapse: collapse;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t.repeater-frozen-heading {\n\t\t\t\t\t\t\t\tbackground: @gray98;\n\t\t\t\t\t\t\t\t&.shifted {\n\t\t\t\t\t\t\t\t\tleft: -1px;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t&.actions-enabled {\n\t\t\t\toverflow: auto;\n\t\t\t\t.repeater-list-wrapper {\n\t\t\t\t\toverflow: visible;\n\t\t\t\t}\n\t\t\t\t.repeater-list {\n\t\t\t\t\t.actions-column-wrapper {\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\tz-index: 2;\n\t\t\t\t\t\tright: 0;\n\t\t\t\t\t\ttable {\n\t\t\t\t\t\t\ttable-layout: fixed;\n\t\t\t\t\t\t\tword-wrap: break-word;\n\n\t\t\t\t\t\t\t&.table-actions {\n\t\t\t\t\t\t\t\tborder-left: 1px solid @gray87;\n\t\t\t\t\t\t\t\tz-index: 2;\n\t\t\t\t\t\t\t\tborder-collapse: collapse;\n\t\t\t\t\t\t\t\ttable-layout: fixed;\n\t\t\t\t\t\t\t\tfloat: right;\n\t\t\t\t\t\t\t\ttr {\n\t\t\t\t\t\t\t\t\tborder-left: 1px solid @gray87;\n\t\t\t\t\t\t\t\t\t&.empty-heading {\n\t\t\t\t\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\t\t\t\t\tborder-left: 1px solid transparent;\n\t\t\t\t\t\t\t\t\t\tth {\n\t\t\t\t\t\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\t\t\t\t\t\tpadding-left: 0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ttd {\n\t\t\t\t\t\t\t\t\t\tbackground: @true-white;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t.selectable();\n\n\t\t\t\t\t\t\t\t\ttd, th {\n\t\t\t\t\t\t\t\t\t\tborder-collapse: collapse;\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t\t\tpadding-bottom: 5px;\n\t\t\t\t\t\t\t\t\t\t.btn-group {\n\t\t\t\t\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t\t\t\t.btn {\n\t\t\t\t\t\t\t\t\t\t\t\tfloat: none;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t&.selected td:first-child {\n\t\t\t\t\t\t\t\t\t\tpadding-left: 8px;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tth {\n\t\t\t\t\t\t\t\t\t\tborder-bottom: 1px solid @gray87;\n\t\t\t\t\t\t\t\t\t\tpadding-bottom: 7px;\n\t\t\t\t\t\t\t\t\t\t.repeater-list-heading {\n\t\t\t\t\t\t\t\t\t\t\tpadding: 8px 0 7px;\n\t\t\t\t\t\t\t\t\t\t\tborder-left: 1px solid @gray98;\n\t\t\t\t\t\t\t\t\t\t\tmargin-left: -9px;\n\t\t\t\t\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\t\t\t\t\t.glyphicon {\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\t\t\t\t\t\t\tfloat: none;\n\t\t\t\t\t\t\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.caret {\n\t\t\t\t\t\t\t\t\tmargin-left: 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t.actions-thead-wrapper {\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\ttop: 0;\n\t\t\t\t\t\tright: 0;\n\t\t\t\t\t\tz-index: 3;\n\t\t\t\t\t}\n\t\t\t\t\ttable {\n\t\t\t\t\t\ttable-layout: fixed;\n\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\tthead {\n\t\t\t\t\t\t\ttr {\n\t\t\t\t\t\t\t\tth {\n\t\t\t\t\t\t\t\t\t&:last-child {\n\t\t\t\t\t\t\t\t\t\t.repeater-list-heading {\n\t\t\t\t\t\t\t\t\t\t\tborder-left: 1px solid transparent;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t&.firefox {\n\t\t\t\t\t\t.actions-column-wrapper {\n\t\t\t\t\t\t\ttable {\n\t\t\t\t\t\t\t\t&.table-actions {\n\t\t\t\t\t\t\t\t\ttd {\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t&.ie-9 {\n\t\t\t\t\t\t.actions-column-wrapper {\n\t\t\t\t\t\t\ttable {\n\t\t\t\t\t\t\t\t&.table-actions {\n\t\t\t\t\t\t\t\t\tbackground-color: @true-white;\n\t\t\t\t\t\t\t\t\ttr {\n\t\t\t\t\t\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\t\t\t\t\t\t&.empty-heading {\n\t\t\t\t\t\t\t\t\t\t\tborder-left: 1px solid @gray98;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tth {\n\t\t\t\t\t\t\t\t\t\t\tpadding-bottom: 8px;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ttd {\n\t\t\t\t\t\t\t\t\t\t\tpadding-bottom: 6px;\n\t\t\t\t\t\t\t\t\t\t\tline-height: 1.39;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.multi-select-enabled {\n\t\t\t\t.repeater-list {\n\t\t\t\t\tthead {\n\t\t\t\t\t\ttr:first-child {\n\t\t\t\t\t\t\t.header-checkbox {\n\t\t\t\t\t\t\t\twidth: @mutli-select-enabled-width;\n\t\t\t\t\t\t\t\tlabel {\n\t\t\t\t\t\t\t\t\ttop: -10px;\n\t\t\t\t\t\t\t\t\tleft: 4px;\n\t\t\t\t\t\t\t\t\tpadding-left: 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttbody {\n\t\t\t\t\t\ttr {\n\t\t\t\t\t\t\t.body-checkbox {\n\t\t\t\t\t\t\t\tleft: 4px;\n\t\t\t\t\t\t\t\ttop: -3px;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttr {\n\t\t\t\t\t\t&.selected {\n\t\t\t\t\t\t\ttd {\n\t\t\t\t\t\t\t\t&:first-child {\n\t\t\t\t\t\t\t\t\tpadding-left: 8px;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.multi-select-enabled.actions-enabled {\n\t\t\t\t.repeater-list .actions-column-wrapper table.table-actions tr th .repeater-list-heading {\n\t\t\t\t\tborder-left: 1px solid @gray87\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.repeater-loader {\n\t\t\tmargin-top: -12px;\n\n\t\t\t&.noHeader {\n\t\t\t\tmargin-top: -32px;\n\t\t\t}\n\t\t}\n\n\t\t.repeater-viewport {\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t.actions-wrapper {\n\t\t\tz-index: 10;\n\t\t\ttext-align: right;\n\t\t}\n\t}\n}\n\n",".fuelux {\n\n\t.repeater-thumbnail {\n\t\tborder: 1px solid @gray87;\n\t\tcolor: @gray40;\n\t\tfloat: left;\n\t\tfont-size: 14px;\n\t\tmin-height: 110px;\n\t\tmin-width: 100px;\n\t\tmargin: 8px 7px;\n\t\ttext-align: center;\n\n\t\timg {\n\t\t\tdisplay: block;\n\t\t\tmargin-top: 10px;\n\t\t\tmargin-bottom: 3px;\n\t\t}\n\n\t\t&-cont {\n\t\t\theight: 100%;\n\t\t\toverflow-y: auto;\n\t\t\tpadding: 6px;\n\t\t\twidth: 100%;\n\n\t\t\t&.align-center, &.align-justify, &.align-left, &.align-right {\n\t\t\t\tposition: relative;\n\t\t\t\tfont-size: 0.1px;\n\n\t\t\t\t&:after {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tcontent: '';\n\t\t\t\t}\n\n\t\t\t\t.infinitescroll {\n\t\t\t\t\t&-end, &-load {\n\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.repeater-thumbnail {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tfloat: none;\n\t\t\t\t\tfont-size: 14px;\n\n\t\t\t\t\t&:after {\n\t\t\t\t\t\tcontent: ' ';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.align-center { text-align: center; }\n\t\t\t&.align-justify { text-align: justify; }\n\t\t\t&.align-left { text-align: left; }\n\t\t\t&.align-right { text-align: right; }\n\n\t\t\tdiv.empty {\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-style: italic;\n\t\t\t\tpadding: 14px 10px 20px;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\n\t\t\t.selectable {\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground: @selectableHover;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\n\t\t\t\t&.selected {\n\t\t\t\t\tbackground: @selected;\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tbackground: @selectedHover;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}",".fuelux {\n\n\t.spinbox {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\n\t\t&.digits-3 {\n\t\t\twidth: 60px;\n\t\t}\n\n\t\t&.disabled {\n\t\t\t.spinbox-buttons {\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\t\t}\n\n\t\t.spinbox-input {\n\t\t\tfloat: left;\n\t\t\tpadding-bottom: 3px; /* Magic number */\n\t\t\tpadding: 0px 25px 0px 7px;\n\n\t\t\t&::-ms-clear {\n\t\t\t\tdisplay:none;\n\t\t\t}\n\t\t}\n\n\t\t.btn {\n\t\t\tposition: relative;\n\t\t\twidth: 20px;\n\t\t\theight: 13px;\n\t\t\tpadding-top: 0;\n\t\t\tpadding-right: 9px;\n\t\t\tpadding-left: 9px;\n\t\t\toverflow-y: hidden;\n\n\t\t\t&.disabled {\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\t\t}\n\n\t\t.spinbox-buttons {\n\t\t\tposition: absolute;\n\t\t\theight: 28px;\n\t\t\twidth: 20px;\n\t\t\tright: 2px;\n\t\t}\n\n\t\t.spinbox-up {\n\t\t\tpadding: 0 0 14px 1px;\n\t\t\ttop: 2px;\n\n\t\t\t.glyphicon-chevron-up {\n\t\t\t\tposition:relative;\n\t\t\t\ttop: 0px;\n\t\t\t}\n\t\t}\n\n\t\t// fix radius from BS btn-group\n\t\t.btn-group > .btn.spinbox-up {\n\t\t\tborder-top-right-radius: 4px;\n\t\t}\n\n\t\t.spinbox-down {\n\t\t\tpadding: 0 0 8px 1px;\n\t\t\ttop: 2px;\n\t\t\theight: 15px;\n\t\t\tborder-bottom-left-radius: 4px;\n\n\t\t\t.glyphicon-chevron-down {\n\t\t\t\tposition: relative;\n\t\t\t\tleft: 0;\n\t\t\t\ttop: 0;\n\t\t\t}\n\t\t}\n\t\tinput {\n\t\t\t&::-ms-clear {\n\t\t\t\tdisplay:none;\n\t\t\t}\n\t\t}\n\t}\n\n}",".fuelux {\n\n\t.scheduler {\n\n\t\t.control-label {\n\t\t\tmin-width: 7em;\n\t\t}\n\n\t\t.inline-form-text {\n\t\t\tfloat: left;\n\t\t\tline-height: 27px;\n\t\t\tmargin-top:4px;\n\t\t}\n\n\t\t/* -------------------------------\n\t\tSTART DATE/TIME\n\t------------------------------- */\n\n\t\t.start-datetime {\n\n\t\t\t&.form-group {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\n\t\t\t.form-group {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t.combobox {\n\t\t\t\tmax-width: 9em;\n\n\t\t\t\t.dropdown-menu {\n\t\t\t\t\tmax-height: 200px;\n\t\t\t\t\toverflow: auto;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t.dropdown {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin: 0 10px 0 0;\n\t\t\t}\n\n\t\t}\n\n\t\t/* -------------------------------\n\t\tTIMEZONE\n\t------------------------------- */\n\n\t\t.timezone-container {\n\t\t\t.input-group {\n\t\t\t\tmax-width: 20em;\n\t\t\t}\n\n\t\t\t.dropdown-label {\n\t\t\t\theight: 18px;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\tmax-width: 20em;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t.dropdown-menu {\n\t\t\t\tmax-height: 200px;\n\t\t\t\toverflow: auto;\n\t\t\t}\n\n\t\t}\n\n\t/* -------------------------------\n\t\tREPEAT PANELS\n\t------------------------------- */\n\n\t\t.repeat-panel {\n\t\t\tmargin-left: 0;\n\n\t\t\tlabel {\n\t\t\t\tfont-weight: normal;\n\t\t\t}\n\t\t\t\n\t\t\t.radio {\n\t\t\t\tmargin-right: 10px;\n\t\t\t}\n\n\t\t\t.form-group {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t}\n\n\t// EVERY\n\n\t\t.repeat-interval {\n\t\t\tmargin-left: 0;\n\n\t\t\t.clearfix;\n\n\t\t\t.form-group {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t.dropdown-menu {\n\t\t\t\tmax-height: 200px;\n\t\t\t\toverflow: auto;\n\t\t\t}\n\n\t\t\t.repeat-every-panel {\n\t\t\t\tfloat: left;\n\n\t\t\t\t.repeat-every-pretext {\n\t\t\t\t\tpadding: 0 10px;\n\t\t\t\t}\n\n\t\t\t\t.spinbox {\n\t\t\t\t\tfloat: left;\n\t\t\t\t\tmargin-right: 10px;\n\n\t\t\t\t\tinput {\n\t\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// MONTHLY\n\n\t\t\t.repeat-monthly {\n\n\t\t\t\t.repeat-monthly-date {\n\t\t\t\t\tmargin-top: 10px;\n\t\t\t\t\t.clearfix;\n\n\t\t\t\t\t.selectlist {\n\t\t\t\t\t\tmargin-left: 5px;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.repeat-monthly-day {\n\t\t\t\t\tmargin-top: 10px;\n\t\t\t\t\t.clearfix;\n\t\t\t\t}\n\n\t\t\t\t.month-days {\n\t\t\t\t\tmargin-left: 10px;\n\t\t\t\t}\n\n\t\t\t}\n\n\t// YEARLY\n\n\t\t\t.repeat-yearly {\n\n\t\t\t\t.repeat-yearly-date {\n\t\t\t\t\tmargin-top: 10px;\n\t\t\t\t\t.clearfix;\n\n\t\t\t\t\t.year-month-day {\n\t\t\t\t\t\tmargin-left: 10px;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.year-month-days {\n\t\t\t\t\tmargin-left: 10px;\n\t\t\t\t}\n\n\t\t\t\t.year-month {\n\t\t\t\t\tmargin-left: 10px;\n\n\t\t\t\t}\n\n\t\t\t\t.repeat-yearly-day {\n\t\t\t\t\tmargin-top: 10px;\n\t\t\t\t\t.clearfix;\n\n\t\t\t\t\t.repeat-yearly-day-text {\n\t\t\t\t\t\tmargin-left: 10px;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t// WEEKLY\n\n\t\t\t.repeat-weekly {\n\n\t\t\t\tbutton:not(.active) {\n\t\t\t\t\tbackground-color: @true-white;\n\t\t\t\t}\n\n\t\t\t\t.btn-group {\n\t\t\t\t\t&.disabled {\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\topacity: 0.65;\n\n\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\t\tbottom: 0;\n\t\t\t\t\t\t\tcontent: \"\";\n\t\t\t\t\t\t\tleft: 0;\n\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\tright: 0;\n\t\t\t\t\t\t\ttop: 0;\n\t\t\t\t\t\t\tz-index: 5;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.selectlist {\n\t\t\t\tfloat: left;\n\t\t\t}\n\n\t\t\tlabel.radio {\n\t\t\t\tfloat: left;\n\t\t\t\tline-height: 27px;\n\n\t\t\t\tinput {\n\t\t\t\t\tmargin-top: 8px;\n\t\t\t\t}\n\t\t\t}\n\n\t/* -------------------------------\n\tEND\n\t------------------------------- */\n\n\t\t.repeat-end {\n\n\t\t\t.end-after {\n\t\t\t\tfloat: left;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmargin-right: 10px;\n\t\t\t}\n\t\t\t\n\t\t\t.form-group {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t.end-option-panel {\n\n\t\t\t}\n\n\t\t}\n\n\t\tinput {\n\t\t\t&::-ms-clear {\n\t\t\t\tdisplay:none;\n\t\t\t}\n\t\t}\n\t}\n\n}",".fuelux {\n\n\t.search {\n\t\t&.disabled {\n\t\t\t.input-group-btn {\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\t\t}\n\t\tinput {\n\t\t\t&::-ms-clear {\n\t\t\t\tdisplay:none;\n\t\t\t}\n\t\t}\n\t}\n\n}","// TODO use bs base variables if possible\n@selectlist-horizontal-padding: 12px;\n@selectlist-caret-width: 4px;\n\n.fuelux {\n\n\t.selectlist {\n\n\t\t&.disabled {\n\t\t\tcursor: not-allowed;\n\t\t}\n\n\t\t.selected-label {\n\t\t\toverflow: hidden;\t// helps with text flow on small screens\n\t\t\tmin-width: 2em;\n\t\t}\n\n\t\t.dropdown-menu {\n\t\t\tmin-width: inherit;\n\t\t\toverflow-y: auto;\n\t\t}\n\t\t.btn.dropdown-toggle {\n\t\t\ttext-align: left;\n\t\t\tpadding-right: unit((2 * @selectlist-horizontal-padding + @selectlist-caret-width), px);\n\n\t\t\t.caret {\n\t\t\t\t#fuelux > .vertical-align();\n\t\t\t\tright: @selectlist-horizontal-padding;\n\n\t\t\t}\n\t\t}\n\n\t}\n\n\t.button-sizer, .selectlist-sizer{\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\tvisibility: hidden;\n\t\ttop: 0;\n\t\tfloat: left;\n\t\t.selectlist {\n\t\t\tdisplay: block !important;\n\t\t}\n\t\t.dropdown-menu {\n\t\t\tdisplay: block;\n\t\t\tmin-width: inherit;\n\t\t}\n\t\t.selected-label {\n\t\t\twidth: auto !important;\n\t\t}\n\t}\n\n}",".fuelux {\n\n\t.picker {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\n\t\t&[data-ellipsis=\"true\"] {\n\t\t\t&.showing {\n\t\t\t\tinput.picker-field {\n\t\t\t\t\toverflow: visible;\n\t\t\t\t\ttext-overflow: clip;\n\t\t\t\t\twhite-space: normal;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinput.picker-field {\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\n\t\t\t\t&::-ms-clear {\n\t\t\t\t\tdisplay:none;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttextarea.picker-field {\n\t\t\t\t&[readonly] {\n\t\t\t\t\toverflow: hidden;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.showing {\n\t\t\t.picker-footer,\n\t\t\t.picker-header,\n\t\t\t.picker-popup {\n\t\t\t\tdisplay: block;\n\t\t\t\tz-index: 1;\n\t\t\t}\n\n\t\t\tinput.picker-field, textarea.picker-field {\n\t\t\t\tbackground: @true-white;\n\t\t\t\tborder: 1px solid @gray80;\n\t\t\t\tbox-shadow: none;\n\t\t\t\tposition: relative;\n\t\t\t\tz-index: 1;\n\t\t\t}\n\t\t}\n\n\t\tinput.picker-field, textarea.picker-field {\n\t\t\tresize: none;\n\n\t\t\t&[readonly] {\n\t\t\t\tbackground: @true-white;\n\t\t\t\tcursor: auto;\n\n\t\t\t\t&.glass {\n\t\t\t\t\tbackground: none;\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tbackground: @infoBackground;\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:focus {\n\t\t\t\tborder: 1px solid @gray80;\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\t\t}\n\n\t\t&-cancel {\n\t\t\tfont-size: 12px;\n\t\t\tmargin-right: 4px;\n\t\t\tvertical-align: middle;\n\t\t}\n\n\t\t&-footer,\n\t\t&-header {\n\t\t\tdisplay: none;\n\t\t\tleft: 0;\n\t\t\tline-height: 1;\n\t\t\tright: 0;\n\t\t}\n\n\t\t&-footer {\n\t\t\tpadding: 8px 10px 8px 0;\n\t\t\ttext-align: right;\n\t\t\tbottom: 0;\n\t\t\tposition: absolute;\n\t\t}\n\n\t\t&-header {\n\t\t\theight: 31px;\n\t\t\tpadding: 8px 0 0px 10px;\n\n\t\t\th1, h2, h3, h4, h5, h6 {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-popup {\n\t\t\tbackground: @infoBackground;\n\t\t\tbackground-clip: padding-box;\n\t\t\tborder: 1px solid @gray80;\n\t\t\tborder-radius: 4px;\n\t\t\tbox-shadow: 0 0 0 1px @true-white inset;\n\t\t\tdisplay: none;\n\t\t\tposition: absolute;\n\t\t\tpadding-left: 6px;\n\t\t\tpadding-right: 6px;\n\t\t\theight: 234px;\n\t\t\twidth: 350px;\n\t\t\tmargin: 4px 0;\n\n\t\t}\n\n\t\t.picker-body.well {\n\t\t\tbackground-color: #fff;\n\t\t\toverflow: scroll;\n\t\t\tpadding: 0;\n\t\t\theight: 165px;\n\t\t}\n\n\t\t.tree {\n\t\t\tborder: none;\n\t\t}\n\n\t\t.glass {\n\t\t\tbackground: transparent;\n\t\t\tborder: 1px solid @true-white;\n\t\t\tbox-shadow: none;\n\n\t\t\t&:hover {\n\t\t\t\tbackground: @infoBackground;\n\t\t\t\tborder-color: @focusColor;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&[disabled] {\n\t\t\t\t\tbackground: transparent;\n\t\t\t\t\tborder-color: @true-white;\n\t\t\t\t\tcursor: not-allowed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:focus {\n\t\t\t\tbackground: @true-white;\n\t\t\t\tborder-color: @focusColor;\n\t\t\t\tbox-shadow: inset 0 1px 1px fade(@true-black, 75%), 0 0 8px fade(@focusColor, 60%);\n\t\t\t\tcursor: auto;\n\n\t\t\t\t&[disabled] {\n\t\t\t\t\tbackground: transparent;\n\t\t\t\t\tborder-color: @true-white;\n\t\t\t\t\tcursor: not-allowed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&[disabled] {\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\t\t}\n\t}\n\n}",".fuelux {\n\n\t.tree {\n\t\tborder: 1px solid @gray60;\n\t\tborder-radius: 4px 4px 4px 4px;\n\t\tpadding: 10px 15px 0 15px;\n\t\toverflow-x: auto;\n\t\toverflow-y: auto;\n\t\tposition: relative;\n\t\tlist-style: none;\n\n\t\t*:focus {\n\t\t\toutline: none;\n\t\t}\n\n\t\tbutton:focus {\n\t\t\tcolor: @treeHoverText;\n\t\t}\n\n\t\tul {\n\t\t\tpadding-left: 0;\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\tlist-style: none;\n\t\t}\n\n\t\tli {\n\t\t\tmargin: 0;\n\t\t\tmargin-top: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t.tree-loader {\n\t\t\t// make even with tree-branch-children\n\t\t\tmargin-left: 45px;\n\t\t}\n\n\t\t.tree-open > .tree-branch-header .glyphicon-play {\n\t\t\ttransform:rotate(90deg);\n\t\t\t-ms-transform:rotate(90deg);\n\t\t\t-webkit-transform:rotate(90deg);\n\t\t\tposition: relative;\n\t\t}\n\n\t\t[data-children=false] > .tree-branch-header .icon-caret:before {\n\t\t\tcontent: '\\00a0'; //space\n\t\t}\n\n\t\t.tree-branch {\n\n\t\t\t.tree-branch-header {\n\t\t\t\tposition: relative;\n\t\t\t\tborder-radius: 6px;\n\t\t\t\twhite-space: nowrap;\n\n\t\t\t\t.tree-branch-name:hover {\n\t\t\t\t\tcolor: @treeHoverText;\n\t\t\t\t}\n\n\t\t\t\t.glyphicon-play {\n\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\tpadding-right: 5px;\n\t\t\t\t\tpadding-left: 7px;\n\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\ttop: -2px;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t.tree-branch-name {\n\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\tborder: 0;\n\t\t\t\t}\n\n\t\t\t\tlabel {\n\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\tpadding-left: 3px;\n\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t.tree-branch-children {\n\t\t\t\tmargin-left: 14px;\n\t\t\t}\n\t\t\t&[haschildren='false'], &[data-has-children='false'] {\n\t\t\t\t.icon-caret {\n\t\t\t\t\tvisibility: hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t.tree-item {\n\t\t\twhite-space: nowrap;\n\t\t\tposition: relative;\n\t\t\tcursor: pointer;\n\t\t\tborder-radius: 6px;\n\t\t\tmargin-left: 26px;\n\n\t\t\t.tree-item-name {\n\t\t\t\twhite-space: nowrap;\n\t\t\t\tborder-radius: 6px;\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tborder: 0;\n\t\t\t}\n\n\t\t\t.tree-item-name:hover {\n\t\t\t\tcolor: @treeHoverText;\n\t\t\t}\n\n\t\t\t&.tree-selected .tree-item-name {\n\t\t\t\tbackground-color: @treeSelectBackground;\n\t\t\t\tcolor: @gray20;\n\t\t\t}\n\n\t\t\tlabel {\n\t\t\t\tfont-weight: normal;\n\t\t\t\tpadding-left: 7px;\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t}\n\n\t\t.icon-caret:hover + .tree-branch-name {\n\t\t\tcolor: @treeHoverText;\n\t\t}\n\n\t\t// - - - - - - - - - - - - - -\n\t\t// folder selectable option\n\t\t// - - - - - - - - - - - - - -\n\n\t\t&.tree-folder-select {\n\n\t\t\t.tree-branch {\n\n\t\t\t\t.icon-caret {\n\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\tborder: 0;\n\t\t\t\t}\n\n\t\t\t\t.icon-caret:hover {\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\tcolor: @treeHoverText;\n\t\t\t\t}\n\n\t\t\t\t> .tree-branch-name {\n\t\t\t\t\tpadding: 1px 5px 0 5px;\n\t\t\t\t\tborder-radius: 6px;\n\n\n\t\t\t\t\t&.tree-selected {\n\t\t\t\t\t\tbackground-color: @treeSelectBackground;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t.tree-branch.tree-selected > .tree-branch-header .tree-branch-name {\n\t\t\t\tbackground-color: @treeSelectBackground;\n\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground-color: @treeSelectBackground;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}",".fuelux {\n\n\t.wizard {\n\n\t\t.clearfix;\n\n\t\tborder: 1px solid @navbarBorder;\n\t\tborder-radius: @baseBorderRadius;\n\t\tbackground-color: @tableBackgroundAccent;\n\t\tposition: relative;\n\t\tmin-height: 48px;\n\n\t\t&.no-steps-container {\t// maintains backwards compatibility with < 3.8, will be removed in the future\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t.steps-container {\n\t\t\tborder-radius: @baseBorderRadius @baseBorderRadius 0 0;\n\t\t\toverflow: hidden;\n\n\t\t}\n\n\t\t> ul.steps, > .steps-container > ul.steps {\n\t\t\tlist-style: none outside none;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t\twidth: 999999px; //using a ridiculously giant width here to allow practically infinite space for the li's to flow horizontally\n\n\t\t\t&.previous-disabled {\n\t\t\t\tli {\n\t\t\t\t\t&.complete {\n\t\t\t\t\t\tcursor: default;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground: @gray96;\n\t\t\t\t\t\t\tcolor: @successText;\n\t\t\t\t\t\t\tcursor: default;\n\n\t\t\t\t\t\t\t.chevron:before {\n\t\t\t\t\t\t\t\tborder-left-color: @gray96;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tli {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin: 0;\n\t\t\t\tpadding: 0 20px 0 30px;\n\t\t\t\theight: 46px;\n\t\t\t\tline-height: 46px;\n\t\t\t\tposition: relative;\n\t\t\t\tbackground: @gray93;\n\t\t\t\tcolor: @gray60;\n\t\t\t\tfont-size: 16px;\n\t\t\t\tcursor: not-allowed;\n\n\t\t\t\t.chevron {\n\t\t\t\t\tborder: 24px solid transparent;\n\t\t\t\t\tborder-left: 14px solid @navbarBorder;\n\t\t\t\t\tborder-right: 0;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: -14px;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\tz-index: 1;\n\t\t\t\t}\n\n\t\t\t\t.chevron:before {\n\t\t\t\t\tborder: 24px solid transparent;\n\t\t\t\t\tborder-left: 14px solid @gray93;\n\t\t\t\t\tborder-right: 0;\n\t\t\t\t\tcontent: \"\";\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: 1px;\n\t\t\t\t\ttop: -24px;\n\t\t\t\t}\n\n\t\t\t\t&.complete {\n\t\t\t\t\tbackground: @gray96;\n\t\t\t\t\tcolor: @successText;\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tbackground: desaturate(@infoBackground, 40%);\n\t\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t\t.chevron:before {\n\t\t\t\t\t\t\tborder-left: 14px solid desaturate(@infoBackground, 40%);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t.chevron:before {\n\t\t\t\t\t\tborder-left: 14px solid @gray96;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&.active {\n\t\t\t\t\tbackground: lighten(@infoBackground, 5%);\n\t\t\t\t\tcolor: @infoText;\n\t\t\t\t\tcursor: default;\n\n\t\t\t\t\t.chevron:before {\n\t\t\t\t\t\tborder-left: 14px solid lighten(@infoBackground, 5%);\n\t\t\t\t\t}\n\n\t\t\t\t\t.badge {\n\t\t\t\t\t\tbackground-color: @infoText;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.badge {\n\t\t\t\t\tmargin-right: 8px;\n\t\t\t\t}\n\n\t\t\t\t.badge-success {\n\t\t\t\t\tbackground-color: @successText;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tli:first-child {\n\t\t\t\tborder-radius: 4px 0 0 0;\n\t\t\t\tpadding-left: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&.rtl {\n\t\t\tdirection: rtl;\n\n\t\t\t> ul.steps, > .steps-container > ul.steps {\n\t\t\t\tright: 0;\n\t\t\t\tleft: auto;\n\t\t\t\tfloat: right;\n\n\t\t\t\t&.previous-disabled {\n\t\t\t\t\tli {\n\t\t\t\t\t\t&.complete {\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\t.chevron:before {\n\t\t\t\t\t\t\t\t\tborder-right-color: @gray96;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tli {\n\t\t\t\t\tfloat: right;\n\n\t\t\t\t\t.chevron {\n\t\t\t\t\t\tright: auto;\n\t\t\t\t\t\tleft: -14px;\n\t\t\t\t\t\tborder-right: 14px solid @gray80;\n\t\t\t\t\t\tborder-left: 0;\n\n\n\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\tright: auto;\n\t\t\t\t\t\t\tleft: 1px;\n\t\t\t\t\t\t\tborder-right: 14px solid @gray93;\n\t\t\t\t\t\t\tborder-left: 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&.active {\n\t\t\t\t\t\t.chevron {\n\t\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\t\tborder-right: 14px solid lighten(@infoBackground, 5%);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&.complete {\n\t\t\t\t\t\t.chevron {\n\t\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\t\tborder-right: 14px solid @gray96;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t.chevron {\n\t\t\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\t\t\tborder-right: 14px solid desaturate(@infoBackground, 40%);\n\t\t\t\t\t\t\t\t\tborder-left: none;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t.badge {\n\t\t\t\t\t\tmargin-left: 8px;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t>.actions {\n\t\t\t\tright: auto;\n\t\t\t\tleft: 0;\n\t\t\t\tfloat: left;\n\t\t\t\tborder-left: none;\n\t\t\t\tborder-right: 1px solid @navbarBorder;\n\t\t\t\tborder-radius: @baseBorderRadius 0 0 0;\n\n\t\t\t\t.btn-prev {\n\t\t\t\t\tspan {\n\t\t\t\t\t\tmargin-left: 5px;\n\t\t\t\t\t\tmargin-right: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.btn-next {\n\t\t\t\t\tspan {\n\t\t\t\t\t\tmargin-left: 0;\n\t\t\t\t\t\tmargin-right: 5px;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t> .actions {\n\t\t\tz-index: 1000;\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t\ttop: 0;\n\t\t\tline-height: 46px;\n\t\t\tfloat: right;\n\t\t\tpadding-left: 15px;\n\t\t\tpadding-right: 15px;\n\t\t\tvertical-align: middle;\n\t\t\tbackground-color: @gray90;\n\t\t\tborder-left: 1px solid @navbarBorder;\n\t\t\tborder-radius: 0 @baseBorderRadius 0 0;\n\n\t\t\ta {\n\t\t\t\tline-height: 45px;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tmargin-right: 8px;\n\t\t\t}\n\n\t\t\t.btn-prev {\n\t\t\t\t&[disabled] {\n\t\t\t\t\tcursor: not-allowed;\n\t\t\t\t}\n\n\t\t\t\tspan {\n\t\t\t\t\tmargin-right: 5px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.btn-next {\n\t\t\t\t&[disabled] {\n\t\t\t\t\tcursor: not-allowed;\n\t\t\t\t}\n\n\t\t\t\tspan {\n\t\t\t\t\tmargin-left: 5px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.step-content {\n\t\t\tborder-top: 1px solid @gray80;\n\t\t\tpadding: 10px;\n\t\t\tfloat: left;\n\t\t\twidth: 100%;\n\n\t\t\t.step-pane {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t> .active {\n\t\t\t\tdisplay: block;\n\n\t\t\t\t.btn-group {\n\t\t\t\t\t.active {\n\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// when complete\n\t\t&.complete {\n\t\t\t>.actions {\n\t\t\t\t.btn-next {\n\t\t\t\t\t.glyphicon {\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}",".fuelux {\n\n\t// Font Family\n\t// -------------------------\n\t.serif {\n\t\tfont-family: @serifFontFamily;\n\t}\n\t.monospace {\n\t\tfont-family: @monoFontFamily;\n\t}\n\n\t.text-sm {\n\t\tfont-size: @fontSizeSmall;\n\t}\n\t.text-lg {\n\t\tfont-size: @fontSizeLarge;\n\t}\n\n\t// Padding\n\t// -------------------------\n\t.padding {\n\t\t&-xs {\n\t\t\tpadding: @padding-xs;\n\t\t\t&-horizontal {\n\t\t\t\tpadding: 0 @padding-xs;\n\t\t\t}\n\t\t\t&-vertical {\n\t\t\t\tpadding: @padding-xs 0;\n\t\t\t}\n\t\t\t&-top {\n\t\t\t\tpadding-top: @padding-xs;\n\t\t\t}\n\t\t\t&-bottom {\n\t\t\t\tpadding-bottom: @padding-xs;\n\t\t\t}\n\t\t\t&-left {\n\t\t\t\tpadding-left: @padding-xs;\n\t\t\t}\n\t\t\t&-right {\n\t\t\t\tpadding-right: @padding-xs;\n\t\t\t}\n\t\t}\n\t\t&-sm {\n\t\t\tpadding: @padding-sm;\n\t\t\t&-horizontal {\n\t\t\t\tpadding: 0 @padding-sm;\n\t\t\t}\n\t\t\t&-vertical {\n\t\t\t\tpadding: @padding-sm 0;\n\t\t\t}\n\t\t\t&-top {\n\t\t\t\tpadding-top: @padding-sm;\n\t\t\t}\n\t\t\t&-bottom {\n\t\t\t\tpadding-bottom: @padding-sm;\n\t\t\t}\n\t\t\t&-left {\n\t\t\t\tpadding-left: @padding-sm;\n\t\t\t}\n\t\t\t&-right {\n\t\t\t\tpadding-right: @padding-sm;\n\t\t\t}\n\t\t}\n\t\t&-md {\n\t\t\tpadding: @padding-md;\n\t\t\t&-horizontal {\n\t\t\t\tpadding: 0 @padding-md;\n\t\t\t}\n\t\t\t&-vertical {\n\t\t\t\tpadding: @padding-md 0;\n\t\t\t}\n\t\t\t&-top {\n\t\t\t\tpadding-top: @padding-md;\n\t\t\t}\n\t\t\t&-bottom {\n\t\t\t\tpadding-bottom: @padding-md;\n\t\t\t}\n\t\t\t&-left {\n\t\t\t\tpadding-left: @padding-md;\n\t\t\t}\n\t\t\t&-right {\n\t\t\t\tpadding-right: @padding-md;\n\t\t\t}\n\t\t}\n\t\t&-lg {\n\t\t\tpadding: @padding-lg;\n\t\t\t&-horizontal {\n\t\t\t\tpadding: 0 @padding-lg;\n\t\t\t}\n\t\t\t&-vertical {\n\t\t\t\tpadding: @padding-lg 0;\n\t\t\t}\n\t\t\t&-top {\n\t\t\t\tpadding-top: @padding-lg;\n\t\t\t}\n\t\t\t&-bottom {\n\t\t\t\tpadding-bottom: @padding-lg;\n\t\t\t}\n\t\t\t&-left {\n\t\t\t\tpadding-left: @padding-lg;\n\t\t\t}\n\t\t\t&-right {\n\t\t\t\tpadding-right: @padding-lg;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Margin\n\t// -------------------------\n\t.margin {\n\t\t&-xs {\n\t\t\tmargin: @margin-xs;\n\t\t\t\n\t\t\t&-horizontal {\n\t\t\t\tmargin: 0 @margin-xs;\n\t\t\t}\n\t\t\t&-vertical {\n\t\t\t\tmargin: @margin-xs 0;\n\t\t\t}\n\t\t\t&-top {\n\t\t\t\tmargin-top: @margin-xs;\n\t\t\t}\n\t\t\t&-bottom {\n\t\t\t\tmargin-bottom: @margin-xs;\n\t\t\t}\n\t\t\t&-left {\n\t\t\t\tmargin-left: @margin-xs;\n\t\t\t}\n\t\t\t&-right {\n\t\t\t\tmargin-right: @margin-xs;\n\t\t\t}\n\t\t}\n\t\t&-sm {\n\t\t\tmargin: @margin-sm;\n\t\t\t&-horizontal {\n\t\t\t\tmargin: 0 @margin-sm;\n\t\t\t}\n\t\t\t&-vertical {\n\t\t\t\tmargin: @margin-sm 0;\n\t\t\t}\n\t\t\t&-top {\n\t\t\t\tmargin-top: @margin-sm;\n\t\t\t}\n\t\t\t&-bottom {\n\t\t\t\tmargin-bottom: @margin-sm;\n\t\t\t}\n\t\t\t&-left {\n\t\t\t\tmargin-left: @margin-sm;\n\t\t\t}\n\t\t\t&-right {\n\t\t\t\tmargin-right: @margin-sm;\n\t\t\t}\n\t\t}\n\t\t&-md {\n\t\t\tmargin: @margin-md;\n\t\t\t&-horizontal {\n\t\t\t\tmargin: 0 @margin-md;\n\t\t\t}\n\t\t\t&-vertical {\n\t\t\t\tmargin: @margin-md 0;\n\t\t\t}\n\t\t\t&-top {\n\t\t\t\tmargin-top: @margin-md;\n\t\t\t}\n\t\t\t&-bottom {\n\t\t\t\tmargin-bottom: @margin-md;\n\t\t\t}\n\t\t\t&-left {\n\t\t\t\tmargin-left: @margin-md;\n\t\t\t}\n\t\t\t&-right {\n\t\t\t\tmargin-right: @margin-md;\n\t\t\t}\n\t\t}\n\t\t&-lg {\n\t\t\tmargin: @margin-lg;\n\t\t\t&-horizontal {\n\t\t\t\tmargin: 0 @margin-lg;\n\t\t\t}\n\t\t\t&-vertical {\n\t\t\t\tmargin: @margin-lg 0;\n\t\t\t}\n\t\t\t&-top {\n\t\t\t\tmargin-top: @margin-lg;\n\t\t\t}\n\t\t\t&-bottom {\n\t\t\t\tmargin-bottom: @margin-lg;\n\t\t\t}\n\t\t\t&-left {\n\t\t\t\tmargin-left: @margin-lg;\n\t\t\t}\n\t\t\t&-right {\n\t\t\t\tmargin-right: @margin-lg;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Helpers\n\t// -------------------------\n\t.data-label {\n\t\t#fuelux > .data-label();\n\t}\n\t.data-value {\n\t\t#fuelux > .data-value();\n\t}\n\t.section-heading {\n\t\t#fuelux > .section-heading();\n\t}\n\n}","//\n// Variables\n// --------------------------------------------------\n\n\n// Global values\n// --------------------------------------------------\n\n@true-black: #000;\n@true-white: #FFF;\n\n// Grays\n// -------------------------\n@gray07: lighten(@true-black, 7%); // #111\n@gray13: lighten(@true-black, 13.5%); // #222\n@gray15: lighten(@true-black, 15%); // #252525\n@gray20: lighten(@true-black, 20%); // #333\n@gray27: lighten(@true-black, 27%); // #444\n@gray33: lighten(@true-black, 33.5%); // #555\n@gray40: lighten(@true-black, 40%); // #666\n@gray46: lighten(@true-black, 46%); // #757575\n//@gray47: lighten(@true-black, 46.7%); // #777\n@gray53: lighten(@true-black, 53%); // #888\n@gray60: lighten(@true-black, 60%); // #999\n@gray67: lighten(@true-black, 66.5%); // #AAA\n@gray74: lighten(@true-black, 73.5%); // #BBB\n//@gray75: lighten(@true-black, 75%); // #4b4b4b\n@gray80: lighten(@true-black, 80%); // #CCC\n@gray87: lighten(@true-black, 86.5%); // #DDD\n@gray90: lighten(@true-black, 90%); // #E5E5E5\n@gray93: lighten(@true-black, 93.5%); // #EEE\n@gray96: lighten(@true-black, 96%); // #F5F5F5\n@gray98: lighten(@true-black, 98%); // #f9f9f9\n@gray99: lighten(@true-black, 99%); // #FCFCFC\n\n@black: @true-black;\n@grayDarker: @gray13;\n@grayDark: @gray20;\n@gray: @gray33;\n@grayLight: @gray60;\n@grayLighter: @gray93;\n@white: @true-white;\n\n\n// Accent colors\n// -------------------------\n@blue: #049cdb;\n@blueDark: #0064cd;\n@green: #46a546;\n@red: #9d261d;\n@yellow: #ffc40d;\n@orange: #f89406;\n@pink: #c3325f;\n@purple: #7a43b6;\n\n// Text Colors\n// -------------------------\n@text-primary: #428bca;\n@text-success: #3c763d;\n@text-info: #31708f;\n@text-warning: #8a6d3b;\n@text-danger: #a94442;\n@text-dimmed: @gray40;\n@text-muted: @gray60;\n\n// Scaffolding\n// -------------------------\n@bodyBackground: @white;\n@textColor: @grayDark;\n@text-color: @textColor;\n@focusColor: #5B9DD9;\n\n// Links\n// -------------------------\n@linkColor: #0088cc;\n@linkColorHover: darken(@linkColor, 15%);\n\n\n// Typography\n// -------------------------\n@sansFontFamily: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@serifFontFamily: Georgia, \"Times New Roman\", Times, serif;\n@monoFontFamily: Monaco, Menlo, Consolas, \"Courier New\", monospace;\n\n@baseFontSize: 14px;\n@baseFontFamily: @sansFontFamily;\n@baseLineHeight: 20px;\n@altFontFamily: @serifFontFamily;\n\n@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily\n@headingsFontWeight: bold; // instead of browser default, bold\n@headingsColor: inherit; // empty to use BS default, @textColor\n\n\n// Component sizing\n// -------------------------\n// Based on 14px font-size and 20px line-height\n\n@fontSizeLarge: @baseFontSize * 1.25; // ~18px\n@fontSizeSmall: @baseFontSize * 0.85; // ~12px\n@fontSizeMini: @baseFontSize * 0.75; // ~11px\n\n@font-size-h1: floor((@baseFontSize * 2.6)); // ~36px\n@font-size-h2: floor((@baseFontSize * 2.15)); // ~30px\n@font-size-h3: ceil((@baseFontSize * 1.7)); // ~24px\n@font-size-h4: ceil((@baseFontSize * 1.25)); // ~18px\n@font-size-h5: @baseFontSize;\n@font-size-h6: ceil((@baseFontSize * 0.85)); // ~12pxgr\n\n@paddingLarge: 11px 19px; // 44px\n@paddingSmall: 2px 10px; // 26px\n@paddingMini: 0 6px; // 22px\n\n@baseBorderRadius: 4px;\n@borderRadiusLarge: 6px;\n@borderRadiusSmall: 3px;\n\n\n// Tables\n// -------------------------\n@tableBackground: transparent; // overall background-color\n@tableBackgroundAccent: @gray98; // for striping\n@tableBackgroundHover: @gray96; // for hover\n@tableBorder: @gray87; // table and cell border\n\n// Buttons\n// -------------------------\n@btnBackground: @white;\n@btnBackgroundHighlight: darken(@white, 10%);\n@btnBorder: @gray80;\n\n@btnPrimaryBackground: @linkColor;\n@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%);\n\n@btnInfoBackground: #5bc0de;\n@btnInfoBackgroundHighlight: #2f96b4;\n\n@btnSuccessBackground: #62c462;\n@btnSuccessBackgroundHighlight: #51a351;\n\n@btnWarningBackground: lighten(@orange, 15%);\n@btnWarningBackgroundHighlight: @orange;\n\n@btnDangerBackground: #ee5f5b;\n@btnDangerBackgroundHighlight: #bd362f;\n\n@btnInverseBackground: @gray27;\n@btnInverseBackgroundHighlight: @grayDarker;\n\n@btnPaddingVertical: 6px;\n@btnPaddingHorizontal: 12px;\n\n\n// Forms\n// -------------------------\n@inputBackground: @white;\n@inputBorder: @gray80;\n@inputBorderRadius: @baseBorderRadius;\n@inputDisabledBackground: @gray93;\n@formActionsBackground: @gray96;\n@inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border\n\n\n// Dropdowns\n// -------------------------\n@dropdownBackground: @white;\n@dropdownBorder: rgba(0,0,0,.2);\n@dropdownDividerTop: @gray90;\n@dropdownDividerBottom: @white;\n\n@dropdownLinkColor: @grayDark;\n@dropdownLinkColorHover: @white;\n@dropdownLinkColorActive: @white;\n\n@dropdownLinkBackgroundActive: @linkColor;\n@dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive;\n\n\n\n// COMPONENT VARIABLES\n// --------------------------------------------------\n\n\n// Z-index master list\n// -------------------------\n// Used for a bird's eye view of components dependent on the z-axis\n// Try to avoid customizing these :)\n@zindexDropdown: 1000;\n@zindexPopover: 1010;\n@zindexTooltip: 1030;\n@zindexFixedNavbar: 1030;\n@zindexModalBackdrop: 1040;\n@zindexModal: 1050;\n\n//Selectable Hover, Selected, Selected Hover\n// -------------------------\n@selectableHover: @gray96;\n@selected: @gray93;\n@selectedHover: @gray87;\n\n\n\n// Sprite icons path\n// -------------------------\n@iconSpritePath: \"../img/glyphicons-halflings.png\";\n@iconWhiteSpritePath: \"../img/glyphicons-halflings-white.png\";\n\n\n// Input placeholder text color\n// -------------------------\n@placeholderText: @gray60;\n\n\n// Hr border color\n// -------------------------\n@hrBorder: @gray93;\n\n\n// Horizontal forms & lists\n// -------------------------\n@horizontalComponentOffset: 180px;\n\n\n// Wells\n// -------------------------\n@wellBackground: @gray96;\n\n\n// Navbar\n// -------------------------\n@navbarCollapseWidth: 979px;\n@navbarCollapseDesktopWidth: @navbarCollapseWidth + 1;\n\n@navbarHeight: 40px;\n@navbarBackgroundHighlight: @true-white;\n@navbarBackground: darken(@navbarBackgroundHighlight, 5%);\n@navbarBorder: darken(@navbarBackground, 12%);\n\n@navbarText: @gray40;;\n@navbarLinkColor: @gray40;;\n@navbarLinkColorHover: @grayDark;\n@navbarLinkColorActive: @gray;\n@navbarLinkBackgroundHover: transparent;\n@navbarLinkBackgroundActive: darken(@navbarBackground, 5%);\n\n@navbarBrandColor: @navbarLinkColor;\n\n// Inverted navbar\n@navbarInverseBackground: @gray07;\n@navbarInverseBackgroundHighlight: @gray13;\n@navbarInverseBorder: @gray15;\n\n@navbarInverseText: @gray60;\n@navbarInverseLinkColor: @gray60;\n@navbarInverseLinkColorHover: @white;\n@navbarInverseLinkColorActive: @navbarInverseLinkColorHover;\n@navbarInverseLinkBackgroundHover: transparent;\n@navbarInverseLinkBackgroundActive: @navbarInverseBackground;\n\n@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%);\n@navbarInverseSearchBackgroundFocus: @white;\n@navbarInverseSearchBorder: @navbarInverseBackground;\n@navbarInverseSearchPlaceholderColor: @gray80;\n\n@navbarInverseBrandColor: @navbarInverseLinkColor;\n\n\n// Pagination\n// -------------------------\n@paginationBackground: @true-white;\n@paginationBorder: @gray87;\n@paginationActiveBackground: @gray96;\n\n\n// Hero unit\n// -------------------------\n@heroUnitBackground: @gray93;\n@heroUnitHeadingColor: inherit;\n@heroUnitLeadColor: inherit;\n\n\n// Form states and alerts\n// -------------------------\n@warningText: #c09853;\n@warningBackground: #fcf8e3;\n@warningBorder: darken(spin(@warningBackground, -10), 3%);\n\n@errorText: #b94a48;\n@errorBackground: #f2dede;\n@errorBorder: darken(spin(@errorBackground, -10), 3%);\n\n@successText: #468847;\n@successBackground: #dff0d8;\n@successBorder: darken(spin(@successBackground, -10), 5%);\n\n@infoText: #3a87ad;\n@infoBackground: #d9edf7;\n@infoBorder: darken(spin(@infoBackground, -10), 7%);\n\n\n// Tooltips and popovers\n// -------------------------\n@tooltipColor: @true-white;\n@tooltipBackground: @true-black;\n@tooltipArrowWidth: 5px;\n@tooltipArrowColor: @tooltipBackground;\n\n@popoverBackground: @true-white;\n@popoverArrowWidth: 10px;\n@popoverArrowColor: @true-white;\n@popoverTitleBackground: darken(@popoverBackground, 3%);\n\n// Special enhancement for popovers\n@popoverArrowOuterWidth: @popoverArrowWidth + 1;\n@popoverArrowOuterColor: rgba(0,0,0,.25);\n\n\n\n// GRID\n// --------------------------------------------------\n\n\n// Default 940px grid\n// -------------------------\n@gridColumns: 12;\n@gridColumnWidth: 60px;\n@gridGutterWidth: 20px;\n@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));\n\n// 1200px min\n@gridColumnWidth1200: 70px;\n@gridGutterWidth1200: 30px;\n@gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1));\n\n// 768px-979px\n@gridColumnWidth768: 42px;\n@gridGutterWidth768: 20px;\n@gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1));\n\n\n// Fluid grid\n// -------------------------\n@fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth);\n@fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth);\n\n// 1200px min\n@fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200);\n@fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200);\n\n// 768px-979px\n@fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768);\n@fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768);\n\n\n// Controls\n// --------------------------------------------------\n\n// Checkbox\n// -------------------------\n@checkboxPrimaryColor: #39b3d7;\n\n// Datepicker\n// -------------------------\n@datepickerHover: #0f5f9f;\n@datepickerHoverAlt: #1b75bb;\n\n// Tree\n// -------------------------\n@treeHoverText: @gray60;\n@treeSelectBackground: @selected;\n\n\n// Icons\n// -------------------------\n@fueluxFontPath: \"../fonts/\";\n\n\n\n// --------------------------------------------------\n// Padding / Margin\n// --------------------------------------------------\n@padding-xs: 5px;\n@padding-sm: 10px;\n@padding-md: 15px;\n@padding-lg: 20px;\n\n@margin-xs: 5px;\n@margin-sm: 10px;\n@margin-md: 15px;\n@margin-lg: 20px;\n\n\n"]} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/dist/css/fuelux.min.css b/elgg_clean/bower_components/fuelux/dist/css/fuelux.min.css deleted file mode 100644 index 08010607..00000000 --- a/elgg_clean/bower_components/fuelux/dist/css/fuelux.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Fuel UX v3.11.4 - * Copyright 2012-2015 ExactTarget - * Licensed under the BSD-3-Clause license (https://github.com/ExactTarget/fuelux/blob/master/LICENSE) - */ - -@charset "UTF-8";.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0}.clearfix:after{clear:both}@font-face{font-family:"fuelux";src:url("../fonts/fuelux.eot");src:url("../fonts/fuelux.eot?#iefix") format("embedded-opentype"),url(data:font-woff;base64,d09GRk9UVE8AAAUUAAsAAAAABuAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAAAegAAAIisWS2RkZGVE0AAALwAAAAGQAAABxvEtzhR0RFRgAAAwwAAAAdAAAAIAA4AARPUy8yAAADLAAAAEoAAABgL7lMbGNtYXAAAAN4AAAAPAAAAUrAGiK3aGVhZAAAA7QAAAAvAAAANgDSVuNoaGVhAAAD5AAAABwAAAAkBCkCA2htdHgAAAQAAAAAGgAAABoHmgL4bWF4cAAABBwAAAAGAAAABgALUABuYW1lAAAEJAAAAN0AAAF3kxoWmXBvc3QAAAUEAAAAEAAAACAAAwABeJw90M9rE0EUB/D30uzusLtuNTqiGIs/+gt6ifVHtgfRHqQHLTYumEsrpSSWRVNozNJc2t6S2K2bBATbS0tLe9jDUlJ6aS85hFT8H6SCFPwTZiCIbpnq6fMe8+Y7j0GIRgERlbdO9r1TBIwAwijvi/D+Ln4tuqqjq3e5erRHhetW7I/r/i90xfN4ndelOHztjgNcjMP3S3HQ41iIgX4WQ6AbrsJN6IUhGIYReApjMA6WM2c/SyQSgnuCYcF9wQPBQ8EjQVJgCkbEvudbA2AZK/gRV9DFVfyEHlaxBhpiJPlk7GX6TebdhxWDDfEb9JbaGezI9Laa74zTOyqTn9O7KosFtFdlg0ymfeE5e0X7VTZaogOqwXz+OOwM/pqbZz2vs+VwyGC/2YXwjsGWf4YBxrdfYZjhMT9M/veQwU7ZHD3MNianstmpyUb28KjROOox+OcrLnV1Nfysy0AQ6YD5Yjpf+jJxLB0Eza2WR0zFruSW5otEq7W2m3v7pJ2SFvKLubJNNPvAaVZa5ET27LXcxjzRkopVS29n9ki7Le0s+ItBmWjHE9KMnXasCjlRAs9f290gWskqpGczJNWWNnfW/WpAtB9Kq9Qs7M+SVErKb+bW7SrRgpmttGcRU64ES35xl2h/Ac9Ys4h4nGNgYGBkAILzccd+gelbXJ9hNABYswg7AAAAeJxjYGRgYOADYgkGEGBiYARCLiBmAfMYAAS4AD0AAAB4nGNgZmJgnMDAysDB6MOYxsDA4A6lvzJIMrQwMDAxsHIywIEAgskQkOaawuDwgOEBJ+OD/w8Y9Bj//v8LFGaEK1AAQkYALokNlwAAeJxjYGBgZoBgGQZGBhBwAfIYwXwWBg0gzQakGRmYGBgecP7/D1LwgAFEKzBC1QMBIxsDgjNCAQBlrAaweJxjYGRgYADiH2cX2sfz23xl4GZiAIHzt7g+w2lmBmbGv4x/gVwOBrA0AFSyC6wAeJxjYGRgYPzLwMCgx8QAAkA2IwMqYAIANwYCMQIAAAACAAADARUBhwGDAQ8AWAADAAMAXACnAAAAAFAAAAsAAHicbY49asNAEIU/2bJMsEmX1JsipYS0BAwuU/gAKdy7WAuDkPDagtzDkD5djpED5AQ5TZ7kKVJ4l9n59vHmB1jyQcJwEjLujSfMeTae8sTROJXn03jGgm/jTPdXziS9k7IcqwaeqOOD8ZRXcuNUnovxjEe+jDPpP+zpCTR632Hfh6ZXfpNUS2rYEfUNdd/sBBs6Ws5jjnIEHJ6CUnmt+N/sqnitsVJ4eSpe1KJrz5su1sH5onRrdx0p8Pkq92Uly82VtpIiJw7jCk7NhrFsQzwdutZVRXm78A9U7zY2AAAAeJxjYGZABowMaAAAAI4ABQ==) format("woff"),url("../fonts/fuelux.ttf") format("truetype"),url("../fonts/fuelux.svg#fuelux") format("svg");font-weight:normal;font-style:normal}.fuelux [class^="fueluxicon-"]:before,.fuelux [class*=" fueluxicon-"]:before{font-family:"fuelux" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;line-height:1;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fuelux .fueluxicon-loader-full:before{content:"\e000"}.fuelux .fueluxicon-loader-1:before{content:"\e001"}.fuelux .fueluxicon-loader-2:before{content:"\e002"}.fuelux .fueluxicon-loader-3:before{content:"\e003"}.fuelux .fueluxicon-loader-4:before{content:"\e004"}.fuelux .fueluxicon-loader-5:before{content:"\e005"}.fuelux .fueluxicon-loader-6:before{content:"\e006"}.fuelux .fueluxicon-loader-7:before{content:"\e007"}.fuelux .fueluxicon-loader-8:before{content:"\e008"}.fuelux .fueluxicon-bullet:before{content:"\e009"}.fuelux .radio-inline,.fuelux .checkbox-inline{padding-left:0}.fuelux .radio-inline.highlight,.fuelux .checkbox-inline.highlight{left:-8px}.fuelux .radio-inline label,.fuelux .checkbox-inline label{margin-bottom:0}label.fuelux .radio:hover:before,label.fuelux .checkbox:hover:before,label.fuelux .radio-inline:hover:before,label.fuelux .checkbox-inline:hover:before,.input-label.fuelux .radio:hover:before,.input-label.fuelux .checkbox:hover:before,.input-label.fuelux .radio-inline:hover:before,.input-label.fuelux .checkbox-inline:hover:before,.fuelux .radio label:hover:before,.fuelux .checkbox label:hover:before,.fuelux .radio-inline label:hover:before,.fuelux .checkbox-inline label:hover:before,.fuelux .radio .input-label:hover:before,.fuelux .checkbox .input-label:hover:before,.fuelux .radio-inline .input-label:hover:before,.fuelux .checkbox-inline .input-label:hover:before{box-shadow:inset 0 0 2px 1px rgba(91,157,217,0.7),0 0 5px 0 rgba(91,157,217,0.7)}.fuelux .radio label,.fuelux .checkbox label,.fuelux .radio-inline label,.fuelux .checkbox-inline label,.fuelux .radio .input-label,.fuelux .checkbox .input-label,.fuelux .radio-inline .input-label,.fuelux .checkbox-inline .input-label,label.fuelux .radio,label.fuelux .checkbox,label.fuelux .radio-inline,label.fuelux .checkbox-inline{cursor:pointer;font-weight:normal}.fuelux .radio.highlight input[type="checkbox"]:not(.sr-only)~label,.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only)~label,.fuelux .radio-inline.highlight input[type="checkbox"]:not(.sr-only)~label,.fuelux .checkbox-inline.highlight input[type="checkbox"]:not(.sr-only)~label,.fuelux .radio.highlight input[type="radio"]:not(.sr-only)~label,.fuelux .checkbox.highlight input[type="radio"]:not(.sr-only)~label,.fuelux .radio-inline.highlight input[type="radio"]:not(.sr-only)~label,.fuelux .checkbox-inline.highlight input[type="radio"]:not(.sr-only)~label{padding:4px;border-radius:4px}.fuelux .radio.highlight input[type="checkbox"]:not(.sr-only):checked~label,.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only):checked~label,.fuelux .radio-inline.highlight input[type="checkbox"]:not(.sr-only):checked~label,.fuelux .checkbox-inline.highlight input[type="checkbox"]:not(.sr-only):checked~label,.fuelux .radio.highlight input[type="radio"]:not(.sr-only):checked~label,.fuelux .checkbox.highlight input[type="radio"]:not(.sr-only):checked~label,.fuelux .radio-inline.highlight input[type="radio"]:not(.sr-only):checked~label,.fuelux .checkbox-inline.highlight input[type="radio"]:not(.sr-only):checked~label{background-color:#e6e6e6;opacity:1;z-index:0}.fuelux .radio input[type="checkbox"]:not(.sr-only),.fuelux .checkbox input[type="checkbox"]:not(.sr-only),.fuelux .radio-inline input[type="checkbox"]:not(.sr-only),.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only),.fuelux .radio input[type="radio"]:not(.sr-only),.fuelux .checkbox input[type="radio"]:not(.sr-only),.fuelux .radio-inline input[type="radio"]:not(.sr-only),.fuelux .checkbox-inline input[type="radio"]:not(.sr-only){position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.fuelux .radio input[type="checkbox"]:not(.sr-only)~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only)~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)~label,.fuelux .radio input[type="radio"]:not(.sr-only)~label,.fuelux .checkbox input[type="radio"]:not(.sr-only)~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only)~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)~label{padding-left:0}.fuelux .radio input[type="checkbox"]:not(.sr-only)~label:before,.fuelux .checkbox input[type="checkbox"]:not(.sr-only)~label:before,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)~label:before,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)~label:before,.fuelux .radio input[type="radio"]:not(.sr-only)~label:before,.fuelux .checkbox input[type="radio"]:not(.sr-only)~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only)~label:before,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)~label:before{font-family:"Glyphicons Halflings";font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;speak:none;border:1px solid #aaa;color:#fff;font-size:9px;width:14px;height:14px;padding:0;margin-top:0;margin-bottom:-2px;cursor:pointer;display:inline-block;text-align:left;z-index:2;content:""}.fuelux .radio input[type="checkbox"]:not(.sr-only):active~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active~label,.fuelux .radio input[type="radio"]:not(.sr-only):active~label,.fuelux .checkbox input[type="radio"]:not(.sr-only):active~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):active~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active~label,.fuelux .radio input[type="checkbox"]:not(.sr-only):focus~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus~label,.fuelux .radio input[type="radio"]:not(.sr-only):focus~label,.fuelux .checkbox input[type="radio"]:not(.sr-only):focus~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus~label{color:#333;color:#39b3d7;cursor:pointer}.fuelux .radio input[type="checkbox"]:not(.sr-only):active~label:before,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active~label:before,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active~label:before,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active~label:before,.fuelux .radio input[type="radio"]:not(.sr-only):active~label:before,.fuelux .checkbox input[type="radio"]:not(.sr-only):active~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):active~label:before,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active~label:before,.fuelux .radio input[type="checkbox"]:not(.sr-only):focus~label:before,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus~label:before,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus~label:before,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus~label:before,.fuelux .radio input[type="radio"]:not(.sr-only):focus~label:before,.fuelux .checkbox input[type="radio"]:not(.sr-only):focus~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus~label:before,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus~label:before{box-shadow:inset 0 0 2px 1px #5b9dd9,0 0 5px 0 #5b9dd9;outline:none}.fuelux .radio input[type="checkbox"]:not(.sr-only):active~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active~label,.fuelux .radio input[type="radio"]:not(.sr-only):active~label,.fuelux .checkbox input[type="radio"]:not(.sr-only):active~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):active~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active~label,.fuelux .radio input[type="checkbox"]:not(.sr-only):focus~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus~label,.fuelux .radio input[type="radio"]:not(.sr-only):focus~label,.fuelux .checkbox input[type="radio"]:not(.sr-only):focus~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus~label,.fuelux .radio input[type="checkbox"]:not(.sr-only):active~label:hover,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active~label:hover,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active~label:hover,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active~label:hover,.fuelux .radio input[type="radio"]:not(.sr-only):active~label:hover,.fuelux .checkbox input[type="radio"]:not(.sr-only):active~label:hover,.fuelux .radio-inline input[type="radio"]:not(.sr-only):active~label:hover,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active~label:hover,.fuelux .radio input[type="checkbox"]:not(.sr-only):focus~label:hover,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus~label:hover,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus~label:hover,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus~label:hover,.fuelux .radio input[type="radio"]:not(.sr-only):focus~label:hover,.fuelux .checkbox input[type="radio"]:not(.sr-only):focus~label:hover,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus~label:hover,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus~label:hover{color:#333;cursor:pointer}.fuelux .radio input[type="checkbox"]:not(.sr-only):active:hover~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active:hover~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active:hover~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active:hover~label,.fuelux .radio input[type="radio"]:not(.sr-only):active:hover~label,.fuelux .checkbox input[type="radio"]:not(.sr-only):active:hover~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active:hover~label,.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover~label,.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover~label,.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .radio input[type="checkbox"]:not(.sr-only):checked:hover~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked:hover~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):checked:hover~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked:hover~label,.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover~label,.fuelux .checkbox input[type="radio"]:not(.sr-only):checked:hover~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):checked:hover~label,.fuelux .radio input[type="checkbox"]:not(.sr-only):active:hover~label:hover,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active:hover~label:hover,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active:hover~label:hover,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active:hover~label:hover,.fuelux .radio input[type="radio"]:not(.sr-only):active:hover~label:hover,.fuelux .checkbox input[type="radio"]:not(.sr-only):active:hover~label:hover,.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover~label:hover,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active:hover~label:hover,.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover~label:hover,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover~label:hover,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover~label:hover,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover~label:hover,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio input[type="checkbox"]:not(.sr-only):checked:hover~label:hover,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked:hover~label:hover,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):checked:hover~label:hover,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked:hover~label:hover,.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover~label:hover,.fuelux .checkbox input[type="radio"]:not(.sr-only):checked:hover~label:hover,.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover~label:hover,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):checked:hover~label:hover{color:#333;cursor:pointer}.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled="disabled"]~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled="disabled"]~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"]~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"]~label,.fuelux .radio input[type="radio"]:not(.sr-only)[disabled="disabled"]~label,.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled="disabled"]~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled="disabled"]~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled="disabled"]~label,.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled]~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled]~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled]~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled]~label,.fuelux .radio input[type="radio"]:not(.sr-only)[disabled]~label,.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled]~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled]~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled]~label,.fuelux .radio input[type="checkbox"]:not(.sr-only):disabled~label,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):disabled~label,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):disabled~label,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):disabled~label,.fuelux .radio input[type="radio"]:not(.sr-only):disabled~label,.fuelux .checkbox input[type="radio"]:not(.sr-only):disabled~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):disabled~label,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):disabled~label,.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled="disabled"]~label:before,.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled="disabled"]~label:before,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"]~label:before,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"]~label:before,.fuelux .radio input[type="radio"]:not(.sr-only)[disabled="disabled"]~label:before,.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled="disabled"]~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled="disabled"]~label:before,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled="disabled"]~label:before,.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled]~label:before,.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled]~label:before,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled]~label:before,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled]~label:before,.fuelux .radio input[type="radio"]:not(.sr-only)[disabled]~label:before,.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled]~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled]~label:before,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled]~label:before,.fuelux .radio input[type="checkbox"]:not(.sr-only):disabled~label:before,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):disabled~label:before,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):disabled~label:before,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):disabled~label:before,.fuelux .radio input[type="radio"]:not(.sr-only):disabled~label:before,.fuelux .checkbox input[type="radio"]:not(.sr-only):disabled~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):disabled~label:before,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):disabled~label:before{color:#333;opacity:.65;cursor:not-allowed !important;outline:none;box-shadow:none}.fuelux .radio input[type="checkbox"]:not(.sr-only):checked~label:before,.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked~label:before,.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):checked~label:before,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked~label:before,.fuelux .radio input[type="radio"]:not(.sr-only):checked~label:before,.fuelux .checkbox input[type="radio"]:not(.sr-only):checked~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked~label:before,.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):checked~label:before{background:#39b3d7;border-color:#39b3d7}.fuelux .radio.highlight:before,.fuelux .checkbox.highlight:before,.fuelux .radio-inline.highlight:before,.fuelux .checkbox-inline.highlight:before{left:4px;top:7px}.fuelux .radio.highlight input[type="checkbox"]:not(.sr-only)~label,.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only)~label,.fuelux .radio.highlight input[type="radio"]:not(.sr-only)~label,.fuelux .checkbox.highlight input[type="radio"]:not(.sr-only)~label{left:-8px;position:relative}.fuelux .radio-inline,.fuelux .checkbox-inline{padding-left:0}.fuelux .radio-inline:before,.fuelux .checkbox-inline:before{left:0;top:3px}.fuelux .checkbox.multiline,.fuelux .radio.multiline{float:left;margin-left:15px}.fuelux .checkbox.multiline~.control-label,.fuelux .radio.multiline~.control-label{float:left;width:80%;margin-left:10px;text-align:left}.fuelux .checkbox.multiline~.control-label>label,.fuelux .radio.multiline~.control-label>label{font-weight:normal;cursor:pointer}.fuelux .checkbox.highlight+.checkbox.highlight{margin-top:-5px}.fuelux .checkbox.highlight label.checkbox-custom{padding:4px 4px 4px 24px}.fuelux .checkbox.highlight.checked label.checkbox-custom,.fuelux .checkbox.highlight label.checked.checkbox-custom{background:#e6e6e6;border-radius:4px}.fuelux .checkbox input[type="checkbox"]:focus+.checkbox-label,.fuelux .checkbox input[type="checkbox"]:hover+.checkbox-label,.fuelux .checkbox .checkbox-label:hover{color:#999}.fuelux .checkbox input[type="checkbox"]:disabled:focus+.checkbox-label,.fuelux .checkbox input[type="checkbox"]:disabled:hover+.checkbox-label,.fuelux .checkbox.disabled label:hover{color:inherit}.fuelux .form-horizontal .checkbox-inline{padding-top:0}.fuelux .input-group-addon.checkbox-custom.checkbox-inline:before{left:11px;top:9px}.fuelux .checkbox-custom{position:relative}.fuelux .checkbox-custom:before{font-family:"Glyphicons Halflings" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;line-height:1;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;border:1px solid #aaa;border-radius:4px;color:#fff;content:" ";font-size:9px;height:14px;left:0;padding:1px 0 0 1px;position:absolute;top:3px;width:14px}.fuelux .checkbox-custom:active:before,.fuelux .checkbox-custom:focus:before{color:#5b9dd9;cursor:pointer;box-shadow:inset 0 0 2px 1px #5b9dd9,0 0 5px 0 #5b9dd9}.fuelux .checkbox-custom.highlight:before{left:4px;top:6px}.fuelux .checkbox-custom.checked:before{background:#39b3d7;border-color:#39b3d7;content:"\e013"}.fuelux .checkbox-custom.disabled{cursor:not-allowed;opacity:.65}.fuelux .checkbox-custom.disabled:before{cursor:not-allowed;opacity:.65}.fuelux .checkbox-custom.checkbox-inline:before{left:0;top:3px}.fuelux .checkbox-custom.checkbox-inline.highlight{padding:4px 4px 4px 24px;left:-4px}.fuelux .checkbox-custom.checkbox-inline.highlight:before{left:4px;top:7px}.fuelux .checkbox-custom.checkbox-inline.highlight.checked{background:#e6e6e6;border-radius:4px}.fuelux .checkbox-custom input[type="checkbox"]:focus+.checkbox-label{color:#999}.fuelux label.checkbox-custom.checkbox-inline{padding-left:20px}.fuelux .checkbox input[type="checkbox"]:not(.sr-only)~label:before,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)~label:before{border-radius:4px;z-index:1}.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked~label:before,.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked~label:before{color:white;content:"\e013";line-height:1em;padding-left:1px;font-size:8px;padding-top:2px}.fuelux .checkbox.hightlight+.checkbox-inline.highlight,.fuelux .checkbox-inline.hightlight+.checkbox-inline.highlight{margin-left:-14px}.fuelux .checkbox.hightlight+.checkbox-inline.highlight.checkbox-custom,.fuelux .checkbox-inline.hightlight+.checkbox-inline.highlight.checkbox-custom{margin-left:0}.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only)~label{left:-4px}.fuelux .radio.highlight{padding:4px;margin:0 0 5px 0}.fuelux .radio.highlight+.radio.highlight{margin-top:-9px}.fuelux .radio.highlight label.radio-custom{left:-8px;padding:4px 4px 4px 24px;border-radius:4px}.fuelux .radio.highlight label.radio-custom:before{left:5px;top:7px}.fuelux .radio.highlight label.radio-custom:after{left:9px;top:11px}.fuelux .radio.highlight.checked label.radio-custom,.fuelux .radio.highlight label.radio-custom.checked{background:#e6e6e6;border-radius:4px}.fuelux .radio input[type="radio"]:focus+.radio-label,.fuelux .radio input[type="radio"]:hover+.radio-label,.fuelux .radio .radio-label:hover{color:#999}.fuelux .form-horizontal .radio-inline{padding-top:0}.fuelux .input-group-addon.radio-custom.radio-inline:before{left:11px;top:9px}.fuelux .input-group-addon.radio-custom.radio-inline:after{left:15px;top:13px}.fuelux .radio-custom{position:relative}.fuelux .radio-custom .highlight{padding:4px;margin:0 0 5px 0}.fuelux .radio-custom .highlight.checked{background:#e6e6e6;border-radius:4px}.fuelux .radio-custom:after{background:transparent;border-radius:6px;content:" ";height:6px;left:4px;position:absolute;top:7px;width:6px}.fuelux .radio-custom:before{border:1px solid #aaa;border-radius:14px;content:" ";height:14px;left:0;position:absolute;top:3px;width:14px}.fuelux .radio-custom.checked:after{background:#fff}.fuelux .radio-custom.checked:before{background:#39b3d7;border-color:#39b3d7}.fuelux .radio-custom.disabled{cursor:not-allowed;opacity:.65}.fuelux .radio-custom.disabled:after{cursor:not-allowed}.fuelux .radio-custom.disabled:before{cursor:not-allowed;opacity:.65}.fuelux .radio-custom.radio-inline:after{left:4px;top:7px}.fuelux .radio-custom.radio-inline:before{left:0;top:3px}.fuelux .radio-custom.radio-inline.highlight{left:-3px;padding:4px 4px 4px 24px}.fuelux .radio-custom.radio-inline.highlight:after{left:8px;top:11px}.fuelux .radio-custom.radio-inline.highlight:before{left:4px;top:7px}.fuelux .radio-custom.radio-inline.highlight.checked{background:#e6e6e6;border-radius:4px}.fuelux .radio-custom input[type="radio"]:focus+.radio-label{color:#999}.fuelux label.radio-custom.radio-inline{padding-left:20px}.fuelux .radio input[type="radio"]:not(.sr-only)~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only)~label:before{border-radius:8px;z-index:1}.fuelux .radio input[type="radio"]:not(.sr-only):checked~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked~label:before{background:#39b3d7;background:-moz-radial-gradient(center, ellipse cover, #fff 0, #fff 40%, #39b3d7 41%, #39b3d7 100%);background:-webkit-gradient(radial, center center, 0, center center, 100%, color-stop(0, #fff), color-stop(40%, #fff), color-stop(41%, #39b3d7), color-stop(100%, #39b3d7));background:-webkit-radial-gradient(center, ellipse cover, #fff 0, #fff 40%, #39b3d7 41%, #39b3d7 100%);background:-o-radial-gradient(center, ellipse cover, #fff 0, #fff 40%, #39b3d7 41%, #39b3d7 100%);background:-ms-radial-gradient(center, ellipse cover, #fff 0, #fff 40%, #39b3d7 41%, #39b3d7 100%);background:radial-gradient(ellipse at center, #fff 0, #fff 40%, #39b3d7 41%, #39b3d7 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#39b3d7', GradientType=1)}.fuelux .radio input[type="radio"]:not(.sr-only):hover~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):hover~label:before,.fuelux .radio input[type="radio"]:not(.sr-only):active~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):active~label:before,.fuelux .radio input[type="radio"]:not(.sr-only):focus~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus~label:before{box-shadow:inset 0 0 2px 1px #5b9dd9,0 0 5px 0 #5b9dd9}.fuelux .radio input[type="radio"]:not(.sr-only):active:hover~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover~label:before,.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover~label:before,.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover~label:before,.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover~label:before,.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover~label:before{outline-color:none;outline-offset:0;outline-style:none;outline-width:0;cursor:default}.fuelux .radio input[type="radio"]:not(.sr-only):active:hover~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover~label,.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover~label,.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover~label,.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover~label,.fuelux .radio input[type="radio"]:not(.sr-only):active:hover~label:hover,.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover~label:hover,.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover~label:hover,.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover~label:hover,.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover~label:hover{color:#333;cursor:default}.fuelux .combobox.disabled .input-group-btn{cursor:not-allowed}.fuelux .combobox input::-ms-clear{display:none}.fuelux .datepicker-calendar{padding:16px 16px 0;min-height:262px}.fuelux .datepicker-calendar button{border:0;padding:0;background-color:transparent}.fuelux .datepicker-calendar-days{height:182px;margin:10px 0 12px;width:100%}.fuelux .datepicker-calendar-days thead{border-bottom:1px solid #ccc}.fuelux .datepicker-calendar-days tbody:before{color:transparent;content:"\200C";display:block;line-height:3px;visibility:hidden}.fuelux .datepicker-calendar-days td,.fuelux .datepicker-calendar-days th{font-size:14px;height:32px;text-align:center;vertical-align:middle;width:14.29%}.fuelux .datepicker-calendar-days td b,.fuelux .datepicker-calendar-days td button{color:#333;display:inline-block;font-weight:normal;height:30px;text-decoration:none;width:30px}.fuelux .datepicker-calendar-days td b{line-height:30px}.fuelux .datepicker-calendar-days td span{display:block;border-radius:4px}.fuelux .datepicker-calendar-days td span:hover{background:#f5f5f5;text-decoration:none}.fuelux .datepicker-calendar-days td.current-day span{border:1px solid #333}.fuelux .datepicker-calendar-days td.last-month,.fuelux .datepicker-calendar-days td.next-month{background:#d5d5d5}.fuelux .datepicker-calendar-days td.last-month.first,.fuelux .datepicker-calendar-days td.next-month.first{border-top-left-radius:4px;border-bottom-left-radius:4px;padding-left:1px}.fuelux .datepicker-calendar-days td.last-month.last,.fuelux .datepicker-calendar-days td.next-month.last{border-top-right-radius:4px;border-bottom-right-radius:4px;padding-right:1px}.fuelux .datepicker-calendar-days td.past b,.fuelux .datepicker-calendar-days td.past button{color:#999}.fuelux .datepicker-calendar-days td.restricted b,.fuelux .datepicker-calendar-days td.restricted button{cursor:no-drop;position:relative}.fuelux .datepicker-calendar-days td.restricted b:before,.fuelux .datepicker-calendar-days td.restricted button:before{border-top:1px solid #e9322d;bottom:0;content:" ";display:block;left:5px;position:absolute;right:5px;top:50%}.fuelux .datepicker-calendar-days td.restricted b:hover,.fuelux .datepicker-calendar-days td.restricted button:hover{background:none}.fuelux .datepicker-calendar-days td.selected span{background:#eee}.fuelux .datepicker-calendar-days td.selected span:hover{background:#ddd}.fuelux .datepicker-calendar-days td.selected b,.fuelux .datepicker-calendar-days td.selected button{color:#878787}.fuelux .datepicker-calendar-days td.selected.current-day{box-shadow:0 0 0 1px #fff offset}.fuelux .datepicker-calendar-days td.selected.current-day b,.fuelux .datepicker-calendar-days td.selected.current-day button{color:#222}.fuelux .datepicker-calendar-days td.selected.current-day span:hover b,.fuelux .datepicker-calendar-days td.selected.current-day span:hover button{border-color:#0f5f9f}.fuelux .datepicker-calendar-days th{font-weight:bold;height:22px;vertical-align:top}.fuelux .datepicker-calendar-header{*zoom:1}.fuelux .datepicker-calendar-header:before,.fuelux .datepicker-calendar-header:after{display:table;content:"";line-height:0}.fuelux .datepicker-calendar-header:after{clear:both}.fuelux .datepicker-calendar-header button{border:0;padding:0;background-color:transparent}.fuelux .datepicker-calendar-header .title{margin:0 auto;text-align:center;display:block;width:174px;color:#222;font-size:20px;line-height:30px;text-decoration:underline;vertical-align:middle}.fuelux .datepicker-calendar-header .title:hover{color:#0f5f9f;text-decoration:underline}.fuelux .datepicker-calendar-header .title.disabled{cursor:default;pointer-events:none;text-decoration:none}.fuelux .datepicker-calendar-header .title .month{display:inline;margin:0;padding:0}.fuelux .datepicker-calendar-header .title .month span{display:none}.fuelux .datepicker-calendar-header .title .month span.current{display:inline}.fuelux .datepicker-calendar-header .next,.fuelux .datepicker-calendar-header .prev{background:#666;background-clip:padding-box;border-radius:30px;cursor:pointer;float:left;height:30px;text-align:center;width:30px}.fuelux .datepicker-calendar-header .next span.glyphicon,.fuelux .datepicker-calendar-header .prev span.glyphicon{color:#fff;font-size:16px;line-height:30px}.fuelux .datepicker-calendar-header .next:hover,.fuelux .datepicker-calendar-header .prev:hover{background:#0f5f9f}.fuelux .datepicker-calendar-header .next{float:right}.fuelux .datepicker-calendar-header .next span.glyphicon{line-height:28px}.fuelux .datepicker-calendar-footer{background:#e6e6e6;background-clip:padding-box;border-radius:0 0 4px 4px;border-top:1px solid #ccc;height:30px;margin:0 -16px;padding:4px 14px}.fuelux .datepicker-calendar-footer .datepicker-today{color:#333;font-size:14px;text-decoration:underline}.fuelux .datepicker-calendar-footer .datepicker-today:hover{color:#1b75bb;text-decoration:underline}.fuelux .datepicker-calendar-footer .datepicker-today.disabled{color:#878787;cursor:default;pointer-events:none}.fuelux .datepicker-calendar-footer .datepicker-today.disabled:hover{color:#878787}.fuelux .datepicker-calendar-wrapper{border:1px solid #757575;min-height:20px;padding:0;width:300px}.fuelux .datepicker-wheels{display:none}.fuelux .datepicker-wheels ul button{border:0;padding:0;background-color:transparent}.fuelux .datepicker-wheels-footer{background:#e6e6e6;border-radius:0 0 4px 4px;border-top:1px solid #ccc;clear:both}.fuelux .datepicker-wheels-footer .datepicker-wheels-back{display:block;color:#222;float:left;line-height:22px;border:0;background-color:transparent}.fuelux .datepicker-wheels-footer .datepicker-wheels-back:hover{color:#1b75bb}.fuelux .datepicker-wheels-footer .datepicker-wheels-select{float:right;background-color:transparent;color:#5b9dd9}.fuelux .datepicker-wheels-footer .datepicker-wheels-select:hover{color:#1b75bb}.fuelux .datepicker-wheels-month,.fuelux .datepicker-wheels-year{float:left;width:50%}.fuelux .datepicker-wheels-month ul,.fuelux .datepicker-wheels-year ul{height:217px;list-style-type:none;margin:0;overflow:auto;padding:0;text-align:center}.fuelux .datepicker-wheels-month ul li,.fuelux .datepicker-wheels-year ul li{margin:4px 0}.fuelux .datepicker-wheels-month ul li button,.fuelux .datepicker-wheels-year ul li button{width:100%;text-align:center;color:#454545;display:block;font-size:16px;line-height:24px;text-decoration:none}.fuelux .datepicker-wheels-month ul li button:hover,.fuelux .datepicker-wheels-year ul li button:hover{background:#d9edf7;text-decoration:none}.fuelux .datepicker-wheels-month ul li.selected button,.fuelux .datepicker-wheels-year ul li.selected button{background:#1b75bb;color:#fff}.fuelux .datepicker-wheels-month ul li.selected button:hover,.fuelux .datepicker-wheels-year ul li.selected button:hover{background:#0f5f9f}.fuelux .datepicker-wheels-month .header,.fuelux .datepicker-wheels-year .header{background:#e6e6e6;background-clip:padding-box;border-bottom:1px solid #ccc;border-radius:4px 0 0 0;color:#222;font-size:20px;font-weight:bold;line-height:30px;margin-top:0;margin-bottom:0;text-align:center}.fuelux .datepicker-wheels-month.full,.fuelux .datepicker-wheels-year.full{border-left:0;width:100%}.fuelux .datepicker-wheels-month.full .header,.fuelux .datepicker-wheels-year.full .header{border-radius:4px 4px 0 0}.fuelux .datepicker-wheels-year{border-left:1px solid #ccc;float:right}.fuelux .datepicker-wheels-year .header{border-radius:0 4px 0 0}.fuelux .datepicker input::-ms-clear{display:none}.fuelux .infinitescroll{overflow-y:auto}.fuelux .infinitescroll .infinitescroll-end{clear:both;font-style:italic;padding:6px;text-align:center}.fuelux .infinitescroll .infinitescroll-load{clear:both;padding:6px}.fuelux .infinitescroll .infinitescroll-load button{padding:5px 12px;width:100%}.fuelux .infinitescroll .infinitescroll-load .loader{font-size:32px;height:32px;margin:0 auto;width:32px}.fuelux .dropUp{-webkit-box-shadow:0 0 10px rgba(0,0,0,0.2);-moz-box-shadow:0 0 10px rgba(0,0,0,0.2);box-shadow:0 0 10px rgba(0,0,0,0.2)}.fuelux .loader{height:64px;font-size:64px;position:relative;width:64px}.fuelux .loader:after,.fuelux .loader:before{font-family:"fuelux" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;line-height:1;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;bottom:0;display:block;left:0;position:absolute;right:0;top:0}.fuelux .loader:before{content:'\e000';opacity:.33}.fuelux .loader.iefix:before{color:#bbb;opacity:1}.fuelux .loader[data-frame="1"]:after{content:'\e001'}.fuelux .loader[data-frame="2"]:after{content:'\e002'}.fuelux .loader[data-frame="3"]:after{content:'\e003'}.fuelux .loader[data-frame="4"]:after{content:'\e004'}.fuelux .loader[data-frame="5"]:after{content:'\e005'}.fuelux .loader[data-frame="6"]:after{content:'\e006'}.fuelux .loader[data-frame="7"]:after{content:'\e007'}.fuelux .loader[data-frame="8"]:after{content:'\e008'}.fuelux .pillbox{border:1px solid #bbb;border-radius:4px;cursor:text;padding:3px}.fuelux .pillbox[data-readonly]{border:1px solid transparent}.fuelux .pillbox[data-readonly].truncate .pillbox-input-wrap{display:inline-block}.fuelux .pillbox[data-readonly].truncate .pillbox-input-wrap.truncated{display:none}.fuelux .pillbox[data-readonly].truncate .pillbox-more{display:inline}.fuelux .pillbox[data-readonly] .pill span.glyphicon-close{display:none}.fuelux .pillbox[data-readonly] .pillbox-add-item{display:none}.fuelux .pillbox[data-readonly] .pillbox-input-wrap{display:none}.fuelux .pillbox[data-readonly] .pillbox-input-wrap button.dropdown-toggle{display:none}.fuelux .pillbox.pills-editable .pill-group .pill span{cursor:text}.fuelux .pillbox.pills-editable .pill-group .pill span.glyphicon-close{cursor:pointer}.fuelux .pillbox>.pill-group{margin:0;padding:0;width:100%}.fuelux .pillbox>.pill-group>.pill{margin:2px;cursor:default;float:left;word-break:break-all}.fuelux .pillbox>.pill-group>.pill.pillbox-highlight{outline:1px dotted #999}.fuelux .pillbox>.pill-group>.pill.truncated{display:none}.fuelux .pillbox>.pill-group>.pill .pillbox-list-edit{border:none;color:#333;font-weight:normal;border-radius:2px}.fuelux .pillbox>.pill-group>.pill .pillbox-list-edit:focus{outline:none;border:none}.fuelux .pillbox>.pill-group>.pill .glyphicon-close{cursor:pointer;top:-1px;left:2px}.fuelux .pillbox>.pill-group>.pill .glyphicon-close:before{content:" \00d7"}.fuelux .pillbox>.pill-group>.pill .glyphicon-close:hover{opacity:.4}.fuelux .pillbox .pillbox-input-wrap{position:relative;margin:4px 0 3px 3px;float:left}.fuelux .pillbox .pillbox-input-wrap.editing{border:1px solid #ccc;border-radius:4px;margin:2px 0 3px 3px}.fuelux .pillbox .pillbox-input-wrap.editing input.pillbox-add-item{border-radius:4px;color:#333;height:32px}.fuelux .pillbox .pillbox-add-item{border:none;box-shadow:none}.fuelux .pillbox .pillbox-add-item:focus{outline:none;border:none}.fuelux .pillbox .pillbox-more{cursor:pointer;display:none;line-height:30px}.fuelux .pillbox .suggest{max-height:166px;overflow-y:auto}.fuelux .pillbox .suggest>li{white-space:nowrap;cursor:pointer;padding:3px 20px}.fuelux .pillbox .suggest>li.pillbox-suggest-sel{background-color:#eee}.fuelux .pillbox .suggest>li:hover{background-color:#eee}.fuelux .pillbox input::-ms-clear{display:none}.fuelux .placard{display:inline-block;position:relative}.fuelux .placard[data-ellipsis="true"].showing input.placard-field{overflow:visible;text-overflow:clip;white-space:normal}.fuelux .placard[data-ellipsis="true"] input.placard-field{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fuelux .placard[data-ellipsis="true"] input.placard-field::-ms-clear{display:none}.fuelux .placard[data-ellipsis="true"] textarea.placard-field[readonly]{overflow:hidden}.fuelux .placard.showing .placard-footer,.fuelux .placard.showing .placard-header,.fuelux .placard.showing .placard-popup{display:block;z-index:1}.fuelux .placard.showing input.placard-field,.fuelux .placard.showing textarea.placard-field{background:#fff;border:1px solid #ccc;box-shadow:none;position:relative;z-index:1}.fuelux .placard input.placard-field,.fuelux .placard textarea.placard-field{resize:none}.fuelux .placard input.placard-field[readonly],.fuelux .placard textarea.placard-field[readonly]{background:#fff;cursor:auto}.fuelux .placard input.placard-field[readonly].glass,.fuelux .placard textarea.placard-field[readonly].glass{background:none}.fuelux .placard input.placard-field[readonly].glass:hover,.fuelux .placard textarea.placard-field[readonly].glass:hover{background:#d9edf7;cursor:pointer}.fuelux .placard input.placard-field:focus,.fuelux .placard textarea.placard-field:focus{border:1px solid #ccc;box-shadow:none}.fuelux .placard-cancel{font-size:12px;margin-right:4px;vertical-align:middle}.fuelux .placard-footer,.fuelux .placard-header{display:none;left:0;line-height:1;position:absolute;right:0}.fuelux .placard-footer{padding:4px 0 8px 0;text-align:right;top:100%}.fuelux .placard-header{bottom:100%;padding:8px 0 4px 0}.fuelux .placard-header h1,.fuelux .placard-header h2,.fuelux .placard-header h3,.fuelux .placard-header h4,.fuelux .placard-header h5,.fuelux .placard-header h6{margin:0}.fuelux .placard-popup{background:#d9edf7;background-clip:padding-box;border:1px solid #ccc;border-radius:4px;bottom:-8px;box-shadow:0 0 0 1px #fff inset;display:none;left:-8px;position:absolute;right:-8px;top:-8px}.fuelux .placard .glass{background:transparent;border:1px solid #fff;box-shadow:none}.fuelux .placard .glass:hover{background:#d9edf7;border-color:#5b9dd9;cursor:pointer}.fuelux .placard .glass:hover[disabled]{background:transparent;border-color:#fff;cursor:not-allowed}.fuelux .placard .glass:focus{background:#fff;border-color:#5b9dd9;box-shadow:inset 0 1px 1px rgba(0,0,0,0.75),0 0 8px rgba(91,157,217,0.6);cursor:auto}.fuelux .placard .glass:focus[disabled]{background:transparent;border-color:#fff;cursor:not-allowed}.fuelux .placard .glass[disabled]{cursor:not-allowed}.fuelux .repeater{border:1px solid #ddd;border-radius:4px}.fuelux .repeater-canvas.scrolling{bottom:0;left:0;overflow-y:auto;position:absolute;right:0;top:0}.fuelux .repeater-header,.fuelux .repeater-footer{background:#fafafa;min-height:50px;padding:8px;*zoom:1}.fuelux .repeater-header:before,.fuelux .repeater-footer:before,.fuelux .repeater-header:after,.fuelux .repeater-footer:after{display:table;content:"";line-height:0}.fuelux .repeater-header:after,.fuelux .repeater-footer:after{clear:both}.fuelux .repeater-header-left,.fuelux .repeater-footer-left{float:left}.fuelux .repeater-header-right,.fuelux .repeater-footer-right{float:right}@media (max-width:625px){.fuelux .repeater-header-left,.fuelux .repeater-footer-left,.fuelux .repeater-header-right,.fuelux .repeater-footer-right{float:none;*zoom:1}.fuelux .repeater-header-left:before,.fuelux .repeater-footer-left:before,.fuelux .repeater-header-right:before,.fuelux .repeater-footer-right:before,.fuelux .repeater-header-left:after,.fuelux .repeater-footer-left:after,.fuelux .repeater-header-right:after,.fuelux .repeater-footer-right:after{display:table;content:"";line-height:0}.fuelux .repeater-header-left:after,.fuelux .repeater-footer-left:after,.fuelux .repeater-header-right:after,.fuelux .repeater-footer-right:after{clear:both}.fuelux .repeater-header-left,.fuelux .repeater-footer-left{margin-bottom:8px}}.fuelux .repeater-header{border-bottom:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px}.fuelux .repeater-footer{border-top:1px solid #ddd;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.fuelux .repeater-loader{display:none;left:50%;position:absolute;margin:-32px 0 0 -32px;top:50%}.fuelux .repeater-viewport{min-height:80px;position:relative}.fuelux .repeater-pagination label{font-weight:normal}.fuelux .repeater-pagination .repeater-primaryPaging{display:none;vertical-align:middle;width:116px}.fuelux .repeater-pagination .repeater-primaryPaging.active{display:inline-block}.fuelux .repeater-pagination .repeater-primaryPaging ul.dropdown-menu{min-width:116px}.fuelux .repeater-pagination .repeater-secondaryPaging{display:none;width:82px}.fuelux .repeater-pagination .repeater-secondaryPaging.active{display:inline-block}.fuelux .repeater-search{float:left;width:200px}.fuelux .repeater-title{display:block;float:left;line-height:34px;margin-right:10px}.fuelux .repeater-itemization .selectlist,.fuelux .repeater-filters,.fuelux .repeater-secondaryPaging,.fuelux .repeater-primaryPaging,.fuelux .repeater-next,.fuelux .repeater-prev{margin:auto .3em}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.scrolling{overflow:visible}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.scrolling .repeater-list{bottom:0;left:0;position:absolute;right:0;top:0}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.scrolling .repeater-list-wrapper{height:100%;overflow:auto}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list{position:relative}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table{margin-bottom:0;width:100%}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody td{border-bottom:1px solid #ddd;border-left:1px solid #ddd;border-top:none}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody td:first-child{border-left:none}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody td.sorted{background:#fafafa}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr:focus{outline:1px dotted #ddd}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.empty td{border-bottom:none;font-size:14px;font-style:italic;padding:20px;text-align:center;width:100%}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selectable:hover td,.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selectable.hovered td{background:#f5f5f5;cursor:pointer}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selectable .checkbox-custom:before{margin-top:-4px;top:0}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selected td{background:#eee;color:#333}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selected td:first-child{padding-left:30px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead>tr>th{background:#fafafa;border-bottom:1px solid #ddd;border-left:1px solid transparent;border-top:none;color:rgba(0,0,0,0);line-height:1.42857;padding:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead>tr>th:first-child{border-left:none}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead>tr>th:first-child .header-checkbox{width:37px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead>tr>th.sortable:hover,.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead>tr>th.sortable.sorted{background:#f5f5f5;cursor:pointer;background-color:#f2f2f2;background-image:-moz-linear-gradient(top, #fafafa, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #fafafa, #e6e6e6);background-image:-o-linear-gradient(top, #fafafa, #e6e6e6);background-image:linear-gradient(to bottom, #fafafa, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe6e6e6', GradientType=0)}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead>tr>th.sorted span.glyphicon{display:block;visibility:hidden}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead>tr>th span.glyphicon{display:none;float:right;margin-top:2px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead>tr>th .actions-hidden{visibility:hidden}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-check{display:inline-block;height:0;line-height:0;position:relative;vertical-align:top;width:0}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-check span.glyphicon{left:-22px;position:absolute;top:2px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading{background:#fafafa;border-bottom:1px solid #ddd;border-left:1px solid #ddd;border-top:none;color:#333;line-height:1.42857;margin-left:-9px;padding:8px;position:absolute;top:0;z-index:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.shifted{margin-left:-1px}@media screen and (-webkit-min-device-pixel-ratio:0){.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.shifted{margin-left:0}}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.sortable:hover,.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.sortable.sorted{background:#f5f5f5;cursor:pointer;background-color:#f2f2f2;background-image:-moz-linear-gradient(top, #fafafa, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #fafafa, #e6e6e6);background-image:-o-linear-gradient(top, #fafafa, #e6e6e6);background-image:linear-gradient(to bottom, #fafafa, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe6e6e6', GradientType=0)}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.sortable.sorted span.glyphicon{display:block;visibility:visible}.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading span.glyphicon{display:none;float:right;margin-top:2px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled{overflow:auto}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list-wrapper{overflow:visible}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list .frozen-column-wrapper{position:absolute;z-index:2;left:0}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list .frozen-thead-wrapper{position:absolute;top:0;left:0;z-index:3}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list .frozen-thead-wrapper table{border-right:1px solid #ddd}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table{table-layout:fixed;word-wrap:break-word}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen{border-right:1px solid #ddd;z-index:2;background:#fff;border-collapse:collapse;table-layout:fixed;float:left}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen td,.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen th{border-collapse:collapse;word-wrap:break-word}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen .repeater-frozen-heading{background:#fafafa}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen .repeater-frozen-heading.shifted{left:-1px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled{overflow:auto}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list-wrapper{overflow:visible}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper{position:absolute;z-index:2;right:0}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table{table-layout:fixed;word-wrap:break-word}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions{border-left:1px solid #ddd;z-index:2;border-collapse:collapse;table-layout:fixed;float:right}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr{border-left:1px solid #ddd}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.empty-heading{background:transparent;border-left:1px solid transparent}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.empty-heading th{background:transparent;padding-left:0}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td{background:#fff}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selectable:hover td,.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selectable.hovered td{background:#f5f5f5;cursor:pointer}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selectable .checkbox-custom:before{margin-top:-4px;top:0}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selected td{background:#eee;color:#333}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selected td:first-child{padding-left:30px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td,.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th{border-collapse:collapse;word-wrap:break-word;padding-bottom:5px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td .btn-group,.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .btn-group{width:100%;text-align:center}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td .btn-group .btn,.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .btn-group .btn{float:none}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selected td:first-child{padding-left:8px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th{border-bottom:1px solid #ddd;padding-bottom:7px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .repeater-list-heading{padding:8px 0 7px;border-left:1px solid #fafafa;margin-left:-9px;width:100%}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .repeater-list-heading .glyphicon{display:inline-block;float:none;margin-top:0}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions .caret{margin-left:0}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-thead-wrapper{position:absolute;top:0;right:0;z-index:3}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list table{table-layout:fixed;word-wrap:break-word}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list table thead tr th:last-child .repeater-list-heading{border-left:1px solid transparent}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions{background-color:#fff}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr{background-color:transparent}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr.empty-heading{border-left:1px solid #fafafa}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr th{padding-bottom:8px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr td{padding-bottom:6px;line-height:1.39}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list thead tr:first-child .header-checkbox{width:37px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list thead tr:first-child .header-checkbox label{top:-10px;left:4px;padding-left:0}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list tbody tr .body-checkbox{left:4px;top:-3px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list tr.selected td:first-child{padding-left:8px}.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .repeater-list-heading{border-left:1px solid #ddd}.fuelux .repeater[data-viewtype="list"] .repeater-loader{margin-top:-12px}.fuelux .repeater[data-viewtype="list"] .repeater-loader.noHeader{margin-top:-32px}.fuelux .repeater[data-viewtype="list"] .repeater-viewport{overflow:hidden}.fuelux .repeater[data-viewtype="list"] .actions-wrapper{z-index:10;text-align:right}.fuelux .repeater-thumbnail{border:1px solid #ddd;color:#666;float:left;font-size:14px;min-height:110px;min-width:100px;margin:8px 7px;text-align:center}.fuelux .repeater-thumbnail img{display:block;margin-top:10px;margin-bottom:3px}.fuelux .repeater-thumbnail-cont{height:100%;overflow-y:auto;padding:6px;width:100%}.fuelux .repeater-thumbnail-cont.align-center,.fuelux .repeater-thumbnail-cont.align-justify,.fuelux .repeater-thumbnail-cont.align-left,.fuelux .repeater-thumbnail-cont.align-right{position:relative;font-size:.1px}.fuelux .repeater-thumbnail-cont.align-center:after,.fuelux .repeater-thumbnail-cont.align-justify:after,.fuelux .repeater-thumbnail-cont.align-left:after,.fuelux .repeater-thumbnail-cont.align-right:after{display:inline-block;width:100%;content:''}.fuelux .repeater-thumbnail-cont.align-center .infinitescroll-end,.fuelux .repeater-thumbnail-cont.align-justify .infinitescroll-end,.fuelux .repeater-thumbnail-cont.align-left .infinitescroll-end,.fuelux .repeater-thumbnail-cont.align-right .infinitescroll-end,.fuelux .repeater-thumbnail-cont.align-center .infinitescroll-load,.fuelux .repeater-thumbnail-cont.align-justify .infinitescroll-load,.fuelux .repeater-thumbnail-cont.align-left .infinitescroll-load,.fuelux .repeater-thumbnail-cont.align-right .infinitescroll-load{display:inline-block;width:100%}.fuelux .repeater-thumbnail-cont.align-center .repeater-thumbnail,.fuelux .repeater-thumbnail-cont.align-justify .repeater-thumbnail,.fuelux .repeater-thumbnail-cont.align-left .repeater-thumbnail,.fuelux .repeater-thumbnail-cont.align-right .repeater-thumbnail{display:inline-block;float:none;font-size:14px}.fuelux .repeater-thumbnail-cont.align-center .repeater-thumbnail:after,.fuelux .repeater-thumbnail-cont.align-justify .repeater-thumbnail:after,.fuelux .repeater-thumbnail-cont.align-left .repeater-thumbnail:after,.fuelux .repeater-thumbnail-cont.align-right .repeater-thumbnail:after{content:' '}.fuelux .repeater-thumbnail-cont.align-center{text-align:center}.fuelux .repeater-thumbnail-cont.align-justify{text-align:justify}.fuelux .repeater-thumbnail-cont.align-left{text-align:left}.fuelux .repeater-thumbnail-cont.align-right{text-align:right}.fuelux .repeater-thumbnail-cont div.empty{font-size:14px;font-style:italic;padding:14px 10px 20px;text-align:center}.fuelux .repeater-thumbnail-cont .selectable:hover{background:#f5f5f5;cursor:pointer}.fuelux .repeater-thumbnail-cont .selectable.selected{background:#eee}.fuelux .repeater-thumbnail-cont .selectable.selected:hover{background:#ddd}.fuelux .spinbox{display:inline-block;position:relative}.fuelux .spinbox.digits-3{width:60px}.fuelux .spinbox.disabled .spinbox-buttons{cursor:not-allowed}.fuelux .spinbox .spinbox-input{float:left;padding-bottom:3px;padding:0 25px 0 7px}.fuelux .spinbox .spinbox-input::-ms-clear{display:none}.fuelux .spinbox .btn{position:relative;width:20px;height:13px;padding-top:0;padding-right:9px;padding-left:9px;overflow-y:hidden}.fuelux .spinbox .btn.disabled{cursor:not-allowed}.fuelux .spinbox .spinbox-buttons{position:absolute;height:28px;width:20px;right:2px}.fuelux .spinbox .spinbox-up{padding:0 0 14px 1px;top:2px}.fuelux .spinbox .spinbox-up .glyphicon-chevron-up{position:relative;top:0}.fuelux .spinbox .btn-group>.btn.spinbox-up{border-top-right-radius:4px}.fuelux .spinbox .spinbox-down{padding:0 0 8px 1px;top:2px;height:15px;border-bottom-left-radius:4px}.fuelux .spinbox .spinbox-down .glyphicon-chevron-down{position:relative;left:0;top:0}.fuelux .spinbox input::-ms-clear{display:none}.fuelux .scheduler .control-label{min-width:7em}.fuelux .scheduler .inline-form-text{float:left;line-height:27px;margin-top:4px}.fuelux .scheduler .start-datetime.form-group{margin-bottom:0}.fuelux .scheduler .start-datetime .form-group{margin-left:0}.fuelux .scheduler .start-datetime .combobox{max-width:9em}.fuelux .scheduler .start-datetime .combobox .dropdown-menu{max-height:200px;overflow:auto}.fuelux .scheduler .start-datetime .dropdown{float:left;margin:0 10px 0 0}.fuelux .scheduler .timezone-container .input-group{max-width:20em}.fuelux .scheduler .timezone-container .dropdown-label{height:18px;white-space:nowrap;max-width:20em;overflow:hidden;text-overflow:ellipsis}.fuelux .scheduler .timezone-container .dropdown-menu{max-height:200px;overflow:auto}.fuelux .scheduler .repeat-panel{margin-left:0}.fuelux .scheduler .repeat-panel label{font-weight:normal}.fuelux .scheduler .repeat-panel .radio{margin-right:10px}.fuelux .scheduler .repeat-panel .form-group{margin-left:0}.fuelux .scheduler .repeat-interval{margin-left:0;*zoom:1}.fuelux .scheduler .repeat-interval:before,.fuelux .scheduler .repeat-interval:after{display:table;content:"";line-height:0}.fuelux .scheduler .repeat-interval:after{clear:both}.fuelux .scheduler .repeat-interval .form-group{margin-left:0}.fuelux .scheduler .repeat-interval .dropdown-menu{max-height:200px;overflow:auto}.fuelux .scheduler .repeat-interval .repeat-every-panel{float:left}.fuelux .scheduler .repeat-interval .repeat-every-panel .repeat-every-pretext{padding:0 10px}.fuelux .scheduler .repeat-interval .repeat-every-panel .spinbox{float:left;margin-right:10px}.fuelux .scheduler .repeat-interval .repeat-every-panel .spinbox input{margin-bottom:0}.fuelux .scheduler .repeat-monthly .repeat-monthly-date{margin-top:10px;*zoom:1}.fuelux .scheduler .repeat-monthly .repeat-monthly-date:before,.fuelux .scheduler .repeat-monthly .repeat-monthly-date:after{display:table;content:"";line-height:0}.fuelux .scheduler .repeat-monthly .repeat-monthly-date:after{clear:both}.fuelux .scheduler .repeat-monthly .repeat-monthly-date .selectlist{margin-left:5px}.fuelux .scheduler .repeat-monthly .repeat-monthly-day{margin-top:10px;*zoom:1}.fuelux .scheduler .repeat-monthly .repeat-monthly-day:before,.fuelux .scheduler .repeat-monthly .repeat-monthly-day:after{display:table;content:"";line-height:0}.fuelux .scheduler .repeat-monthly .repeat-monthly-day:after{clear:both}.fuelux .scheduler .repeat-monthly .month-days{margin-left:10px}.fuelux .scheduler .repeat-yearly .repeat-yearly-date{margin-top:10px;*zoom:1}.fuelux .scheduler .repeat-yearly .repeat-yearly-date:before,.fuelux .scheduler .repeat-yearly .repeat-yearly-date:after{display:table;content:"";line-height:0}.fuelux .scheduler .repeat-yearly .repeat-yearly-date:after{clear:both}.fuelux .scheduler .repeat-yearly .repeat-yearly-date .year-month-day{margin-left:10px}.fuelux .scheduler .repeat-yearly .year-month-days{margin-left:10px}.fuelux .scheduler .repeat-yearly .year-month{margin-left:10px}.fuelux .scheduler .repeat-yearly .repeat-yearly-day{margin-top:10px;*zoom:1}.fuelux .scheduler .repeat-yearly .repeat-yearly-day:before,.fuelux .scheduler .repeat-yearly .repeat-yearly-day:after{display:table;content:"";line-height:0}.fuelux .scheduler .repeat-yearly .repeat-yearly-day:after{clear:both}.fuelux .scheduler .repeat-yearly .repeat-yearly-day .repeat-yearly-day-text{margin-left:10px}.fuelux .scheduler .repeat-weekly button:not(.active){background-color:#fff}.fuelux .scheduler .repeat-weekly .btn-group.disabled{position:relative;opacity:.65}.fuelux .scheduler .repeat-weekly .btn-group.disabled:before{background:transparent;bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:5}.fuelux .scheduler .selectlist{float:left}.fuelux .scheduler label.radio{float:left;line-height:27px}.fuelux .scheduler label.radio input{margin-top:8px}.fuelux .scheduler .repeat-end .end-after{float:left;display:inline-block;margin-right:10px}.fuelux .scheduler .repeat-end .form-group{margin-left:0}.fuelux .scheduler input::-ms-clear{display:none}.fuelux .search.disabled .input-group-btn{cursor:not-allowed}.fuelux .search input::-ms-clear{display:none}.fuelux .selectlist.disabled{cursor:not-allowed}.fuelux .selectlist .selected-label{overflow:hidden;min-width:2em}.fuelux .selectlist .dropdown-menu{min-width:inherit;overflow-y:auto}.fuelux .selectlist .btn.dropdown-toggle{text-align:left;padding-right:28px}.fuelux .selectlist .btn.dropdown-toggle .caret{margin:auto;position:absolute;top:0;bottom:0;right:12px}.fuelux .button-sizer,.fuelux .selectlist-sizer{display:inline-block;position:absolute;visibility:hidden;top:0;float:left}.fuelux .button-sizer .selectlist,.fuelux .selectlist-sizer .selectlist{display:block !important}.fuelux .button-sizer .dropdown-menu,.fuelux .selectlist-sizer .dropdown-menu{display:block;min-width:inherit}.fuelux .button-sizer .selected-label,.fuelux .selectlist-sizer .selected-label{width:auto !important}.fuelux .picker{display:inline-block;position:relative}.fuelux .picker[data-ellipsis="true"].showing input.picker-field{overflow:visible;text-overflow:clip;white-space:normal}.fuelux .picker[data-ellipsis="true"] input.picker-field{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fuelux .picker[data-ellipsis="true"] input.picker-field::-ms-clear{display:none}.fuelux .picker[data-ellipsis="true"] textarea.picker-field[readonly]{overflow:hidden}.fuelux .picker.showing .picker-footer,.fuelux .picker.showing .picker-header,.fuelux .picker.showing .picker-popup{display:block;z-index:1}.fuelux .picker.showing input.picker-field,.fuelux .picker.showing textarea.picker-field{background:#fff;border:1px solid #ccc;box-shadow:none;position:relative;z-index:1}.fuelux .picker input.picker-field,.fuelux .picker textarea.picker-field{resize:none}.fuelux .picker input.picker-field[readonly],.fuelux .picker textarea.picker-field[readonly]{background:#fff;cursor:auto}.fuelux .picker input.picker-field[readonly].glass,.fuelux .picker textarea.picker-field[readonly].glass{background:none}.fuelux .picker input.picker-field[readonly].glass:hover,.fuelux .picker textarea.picker-field[readonly].glass:hover{background:#d9edf7;cursor:pointer}.fuelux .picker input.picker-field:focus,.fuelux .picker textarea.picker-field:focus{border:1px solid #ccc;box-shadow:none}.fuelux .picker-cancel{font-size:12px;margin-right:4px;vertical-align:middle}.fuelux .picker-footer,.fuelux .picker-header{display:none;left:0;line-height:1;right:0}.fuelux .picker-footer{padding:8px 10px 8px 0;text-align:right;bottom:0;position:absolute}.fuelux .picker-header{height:31px;padding:8px 0 0 10px}.fuelux .picker-header h1,.fuelux .picker-header h2,.fuelux .picker-header h3,.fuelux .picker-header h4,.fuelux .picker-header h5,.fuelux .picker-header h6{margin:0}.fuelux .picker-popup{background:#d9edf7;background-clip:padding-box;border:1px solid #ccc;border-radius:4px;box-shadow:0 0 0 1px #fff inset;display:none;position:absolute;padding-left:6px;padding-right:6px;height:234px;width:350px;margin:4px 0}.fuelux .picker .picker-body.well{background-color:#fff;overflow:scroll;padding:0;height:165px}.fuelux .picker .tree{border:none}.fuelux .picker .glass{background:transparent;border:1px solid #fff;box-shadow:none}.fuelux .picker .glass:hover{background:#d9edf7;border-color:#5b9dd9;cursor:pointer}.fuelux .picker .glass:hover[disabled]{background:transparent;border-color:#fff;cursor:not-allowed}.fuelux .picker .glass:focus{background:#fff;border-color:#5b9dd9;box-shadow:inset 0 1px 1px rgba(0,0,0,0.75),0 0 8px rgba(91,157,217,0.6);cursor:auto}.fuelux .picker .glass:focus[disabled]{background:transparent;border-color:#fff;cursor:not-allowed}.fuelux .picker .glass[disabled]{cursor:not-allowed}.fuelux .tree{border:1px solid #999;border-radius:4px 4px 4px 4px;padding:10px 15px 0 15px;overflow-x:auto;overflow-y:auto;position:relative;list-style:none}.fuelux .tree *:focus{outline:none}.fuelux .tree button:focus{color:#999}.fuelux .tree ul{padding-left:0;margin-top:0;margin-bottom:0;list-style:none}.fuelux .tree li{margin:0;margin-top:5px;margin-bottom:5px}.fuelux .tree .tree-loader{margin-left:45px}.fuelux .tree .tree-open>.tree-branch-header .glyphicon-play{transform:rotate(90deg);-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg);position:relative}.fuelux .tree [data-children=false]>.tree-branch-header .icon-caret:before{content:'\00a0'}.fuelux .tree .tree-branch .tree-branch-header{position:relative;border-radius:6px;white-space:nowrap}.fuelux .tree .tree-branch .tree-branch-header .tree-branch-name:hover{color:#999}.fuelux .tree .tree-branch .tree-branch-header .glyphicon-play{font-size:10px;padding-right:5px;padding-left:7px}.fuelux .tree .tree-branch .tree-branch-header .glyphicon-play:before{position:relative;top:-2px}.fuelux .tree .tree-branch .tree-branch-header .tree-branch-name{white-space:nowrap;border-radius:6px;background-color:transparent;border:0}.fuelux .tree .tree-branch .tree-branch-header label{font-weight:normal;padding-left:3px;margin-bottom:0;cursor:pointer}.fuelux .tree .tree-branch .tree-branch-children{margin-left:14px}.fuelux .tree .tree-branch[haschildren='false'] .icon-caret,.fuelux .tree .tree-branch[data-has-children='false'] .icon-caret{visibility:hidden}.fuelux .tree .tree-item{white-space:nowrap;position:relative;cursor:pointer;border-radius:6px;margin-left:26px}.fuelux .tree .tree-item .tree-item-name{white-space:nowrap;border-radius:6px;background-color:transparent;border:0}.fuelux .tree .tree-item .tree-item-name:hover{color:#999}.fuelux .tree .tree-item.tree-selected .tree-item-name{background-color:#eee;color:#333}.fuelux .tree .tree-item label{font-weight:normal;padding-left:7px;margin-bottom:0;cursor:pointer}.fuelux .tree .icon-caret:hover+.tree-branch-name{color:#999}.fuelux .tree.tree-folder-select .tree-branch .icon-caret{background-color:transparent;border:0}.fuelux .tree.tree-folder-select .tree-branch .icon-caret:hover{cursor:pointer;color:#999}.fuelux .tree.tree-folder-select .tree-branch>.tree-branch-name{padding:1px 5px 0 5px;border-radius:6px}.fuelux .tree.tree-folder-select .tree-branch>.tree-branch-name.tree-selected{background-color:#eee}.fuelux .tree.tree-folder-select .tree-branch.tree-selected>.tree-branch-header .tree-branch-name{background-color:#eee}.fuelux .tree.tree-folder-select .tree-branch.tree-selected>.tree-branch-header .tree-branch-name:hover{background-color:#eee}.fuelux .wizard{*zoom:1;border:1px solid #d4d4d4;border-radius:4px;background-color:#fafafa;position:relative;min-height:48px}.fuelux .wizard:before,.fuelux .wizard:after{display:table;content:"";line-height:0}.fuelux .wizard:after{clear:both}.fuelux .wizard.no-steps-container{overflow:hidden}.fuelux .wizard .steps-container{border-radius:4px 4px 0 0;overflow:hidden}.fuelux .wizard>ul.steps,.fuelux .wizard>.steps-container>ul.steps{list-style:none outside none;padding:0;margin:0;width:999999px}.fuelux .wizard>ul.steps.previous-disabled li.complete,.fuelux .wizard>.steps-container>ul.steps.previous-disabled li.complete{cursor:default}.fuelux .wizard>ul.steps.previous-disabled li.complete:hover,.fuelux .wizard>.steps-container>ul.steps.previous-disabled li.complete:hover{background:#f5f5f5;color:#468847;cursor:default}.fuelux .wizard>ul.steps.previous-disabled li.complete:hover .chevron:before,.fuelux .wizard>.steps-container>ul.steps.previous-disabled li.complete:hover .chevron:before{border-left-color:#f5f5f5}.fuelux .wizard>ul.steps li,.fuelux .wizard>.steps-container>ul.steps li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#eee;color:#999;font-size:16px;cursor:not-allowed}.fuelux .wizard>ul.steps li .chevron,.fuelux .wizard>.steps-container>ul.steps li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.fuelux .wizard>ul.steps li .chevron:before,.fuelux .wizard>.steps-container>ul.steps li .chevron:before{border:24px solid transparent;border-left:14px solid #eee;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.fuelux .wizard>ul.steps li.complete,.fuelux .wizard>.steps-container>ul.steps li.complete{background:#f5f5f5;color:#468847}.fuelux .wizard>ul.steps li.complete:hover,.fuelux .wizard>.steps-container>ul.steps li.complete:hover{background:#e2eaee;cursor:pointer}.fuelux .wizard>ul.steps li.complete:hover .chevron:before,.fuelux .wizard>.steps-container>ul.steps li.complete:hover .chevron:before{border-left:14px solid #e2eaee}.fuelux .wizard>ul.steps li.complete .chevron:before,.fuelux .wizard>.steps-container>ul.steps li.complete .chevron:before{border-left:14px solid #f5f5f5}.fuelux .wizard>ul.steps li.active,.fuelux .wizard>.steps-container>ul.steps li.active{background:#eef7fb;color:#3a87ad;cursor:default}.fuelux .wizard>ul.steps li.active .chevron:before,.fuelux .wizard>.steps-container>ul.steps li.active .chevron:before{border-left:14px solid #eef7fb}.fuelux .wizard>ul.steps li.active .badge,.fuelux .wizard>.steps-container>ul.steps li.active .badge{background-color:#3a87ad}.fuelux .wizard>ul.steps li .badge,.fuelux .wizard>.steps-container>ul.steps li .badge{margin-right:8px}.fuelux .wizard>ul.steps li .badge-success,.fuelux .wizard>.steps-container>ul.steps li .badge-success{background-color:#468847}.fuelux .wizard>ul.steps li:first-child,.fuelux .wizard>.steps-container>ul.steps li:first-child{border-radius:4px 0 0 0;padding-left:20px}.fuelux .wizard.rtl{direction:rtl}.fuelux .wizard.rtl>ul.steps,.fuelux .wizard.rtl>.steps-container>ul.steps{right:0;left:auto;float:right}.fuelux .wizard.rtl>ul.steps.previous-disabled li.complete:hover .chevron:before,.fuelux .wizard.rtl>.steps-container>ul.steps.previous-disabled li.complete:hover .chevron:before{border-right-color:#f5f5f5}.fuelux .wizard.rtl>ul.steps li,.fuelux .wizard.rtl>.steps-container>ul.steps li{float:right}.fuelux .wizard.rtl>ul.steps li .chevron,.fuelux .wizard.rtl>.steps-container>ul.steps li .chevron{right:auto;left:-14px;border-right:14px solid #ccc;border-left:0}.fuelux .wizard.rtl>ul.steps li .chevron:before,.fuelux .wizard.rtl>.steps-container>ul.steps li .chevron:before{right:auto;left:1px;border-right:14px solid #eee;border-left:0}.fuelux .wizard.rtl>ul.steps li.active .chevron:before,.fuelux .wizard.rtl>.steps-container>ul.steps li.active .chevron:before{border-right:14px solid #eef7fb}.fuelux .wizard.rtl>ul.steps li.complete .chevron:before,.fuelux .wizard.rtl>.steps-container>ul.steps li.complete .chevron:before{border-right:14px solid #f5f5f5}.fuelux .wizard.rtl>ul.steps li.complete:hover .chevron:before,.fuelux .wizard.rtl>.steps-container>ul.steps li.complete:hover .chevron:before{border-right:14px solid #e2eaee;border-left:none}.fuelux .wizard.rtl>ul.steps li .badge,.fuelux .wizard.rtl>.steps-container>ul.steps li .badge{margin-left:8px}.fuelux .wizard.rtl>.actions{right:auto;left:0;float:left;border-left:none;border-right:1px solid #d4d4d4;border-radius:4px 0 0 0}.fuelux .wizard.rtl>.actions .btn-prev span{margin-left:5px;margin-right:0}.fuelux .wizard.rtl>.actions .btn-next span{margin-left:0;margin-right:5px}.fuelux .wizard>.actions{z-index:1000;position:absolute;right:0;top:0;line-height:46px;float:right;padding-left:15px;padding-right:15px;vertical-align:middle;background-color:#e6e6e6;border-left:1px solid #d4d4d4;border-radius:0 4px 0 0}.fuelux .wizard>.actions a{line-height:45px;font-size:12px;margin-right:8px}.fuelux .wizard>.actions .btn-prev[disabled]{cursor:not-allowed}.fuelux .wizard>.actions .btn-prev span{margin-right:5px}.fuelux .wizard>.actions .btn-next[disabled]{cursor:not-allowed}.fuelux .wizard>.actions .btn-next span{margin-left:5px}.fuelux .wizard .step-content{border-top:1px solid #ccc;padding:10px;float:left;width:100%}.fuelux .wizard .step-content .step-pane{display:none}.fuelux .wizard .step-content>.active{display:block}.fuelux .wizard .step-content>.active .btn-group .active{display:inline-block}.fuelux .wizard.complete>.actions .btn-next .glyphicon{display:none}.fuelux .serif{font-family:Georgia,"Times New Roman",Times,serif}.fuelux .monospace{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}.fuelux .text-sm{font-size:11.9px}.fuelux .text-lg{font-size:17.5px}.fuelux .padding-xs{padding:5px}.fuelux .padding-xs-horizontal{padding:0 5px}.fuelux .padding-xs-vertical{padding:5px 0}.fuelux .padding-xs-top{padding-top:5px}.fuelux .padding-xs-bottom{padding-bottom:5px}.fuelux .padding-xs-left{padding-left:5px}.fuelux .padding-xs-right{padding-right:5px}.fuelux .padding-sm{padding:10px}.fuelux .padding-sm-horizontal{padding:0 10px}.fuelux .padding-sm-vertical{padding:10px 0}.fuelux .padding-sm-top{padding-top:10px}.fuelux .padding-sm-bottom{padding-bottom:10px}.fuelux .padding-sm-left{padding-left:10px}.fuelux .padding-sm-right{padding-right:10px}.fuelux .padding-md{padding:15px}.fuelux .padding-md-horizontal{padding:0 15px}.fuelux .padding-md-vertical{padding:15px 0}.fuelux .padding-md-top{padding-top:15px}.fuelux .padding-md-bottom{padding-bottom:15px}.fuelux .padding-md-left{padding-left:15px}.fuelux .padding-md-right{padding-right:15px}.fuelux .padding-lg{padding:20px}.fuelux .padding-lg-horizontal{padding:0 20px}.fuelux .padding-lg-vertical{padding:20px 0}.fuelux .padding-lg-top{padding-top:20px}.fuelux .padding-lg-bottom{padding-bottom:20px}.fuelux .padding-lg-left{padding-left:20px}.fuelux .padding-lg-right{padding-right:20px}.fuelux .margin-xs{margin:5px}.fuelux .margin-xs-horizontal{margin:0 5px}.fuelux .margin-xs-vertical{margin:5px 0}.fuelux .margin-xs-top{margin-top:5px}.fuelux .margin-xs-bottom{margin-bottom:5px}.fuelux .margin-xs-left{margin-left:5px}.fuelux .margin-xs-right{margin-right:5px}.fuelux .margin-sm{margin:10px}.fuelux .margin-sm-horizontal{margin:0 10px}.fuelux .margin-sm-vertical{margin:10px 0}.fuelux .margin-sm-top{margin-top:10px}.fuelux .margin-sm-bottom{margin-bottom:10px}.fuelux .margin-sm-left{margin-left:10px}.fuelux .margin-sm-right{margin-right:10px}.fuelux .margin-md{margin:15px}.fuelux .margin-md-horizontal{margin:0 15px}.fuelux .margin-md-vertical{margin:15px 0}.fuelux .margin-md-top{margin-top:15px}.fuelux .margin-md-bottom{margin-bottom:15px}.fuelux .margin-md-left{margin-left:15px}.fuelux .margin-md-right{margin-right:15px}.fuelux .margin-lg{margin:20px}.fuelux .margin-lg-horizontal{margin:0 20px}.fuelux .margin-lg-vertical{margin:20px 0}.fuelux .margin-lg-top{margin-top:20px}.fuelux .margin-lg-bottom{margin-bottom:20px}.fuelux .margin-lg-left{margin-left:20px}.fuelux .margin-lg-right{margin-right:20px}.fuelux .data-label{text-transform:uppercase;font-size:10px;margin-bottom:2px;text-shadow:0 1px #fff;color:#666}.fuelux .data-value{font-size:14px}.fuelux .section-heading{font-size:16px;color:#333;margin:0 0 10px;padding:0;text-shadow:0 1px #fff} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/dist/fonts/fuelux.eot b/elgg_clean/bower_components/fuelux/dist/fonts/fuelux.eot deleted file mode 100644 index 36f005ee9819158bf4dbb3e0cf3b94949c755d26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmZSJU|>jKXJBAtU}69PCI(hc5DgNUzzAab1b|2e1_l8r%>Wi=U|_g9EqW153_<fS zq%o8-q%!0%lrmH>Ffi~j1TmyCq%)K<<S-;M6frO`h%tmQq%ssS6f<Np<TK<kC@>f@ z=rI^DFfgF&WdJ#Yfq|Eyfq|JJz|AehH(%(^Lk0$R7X}6f8Fv>~HwG&PHU<WE6$S<d z1^-}uBmL<<-V6+k5ey6rVad6P1qY;*_c1UqUSVKh^h!@GF8KeSfti7UU50^yfg?Sq zGVOoedp`ySW*Y_u#yc6Qi75=1!X7g)Fx+8aU@*(bNKItXWMXAtU=(3sU{J}(Evev~ z#q@)LfpG%^1A|gdesUtyKjshy24)42dvX&i3K+r}j2RdhEkN$cOUzB3EG0IRfq_+m zfq}8SAiubTd6~H{0|VOx1_p*6a6mFLFf59mb~T>g<|_j?Bo5Bs;`$5<PcY5Qz|8oU z@h`}|&?o|j30OoAqMq?D*d&k^7-j*B@G=;H;+KH|tdkKe<^WZ~$i%=nfq|8QgVBdE zje&u|9ZG*?kYs29X@I2zka~F3GcYg&q`9UrI6Po@z{&XF{{sd+#=rkTu7f5Dh>Jk_ z!I+s*l(C($nUS9%f`OTVnIVQ@ImkRv9DuP5*i8%!E)2|ImJ9<6g9ZZw0~-U#2TTkM z4><q-2kCgg0HPHjsz3q^jBMb5fUrT<f-sl|C7>>X@`gJV#*o2K#n8nti(wVRE{0PK zw;0|raDc)boO)OpxETZ)#2I86lo>P`^cfh0&CE^N_!*7O%+=Y1&DGSE#l+Rr*~P@o z+1N$R>=~8W*u~A5#l+3k)WzAw#EsRaYZ(MPMTW2`SXmfb%d-TtJTcU;vJI<42tNP| ztOZLlwu6+IuLTMH`)I9Y5bO@p$x((7W)uO7M1mwial^<c%Gk`fg7Gf{D8GSiW)ubK z4`W;jRtYK#7~2{78UHda0jmMKi}4V|!X*fEni(P(|1!J=sZj;{gYhre-LFBWF)%Xn zGcYqQVW<SlgM4ewm<jSlCD?5YjNp{|nxPgXZw?L<u*R@(h$|SuskoBiBS_w!5fpNE zU?;>tT)@b{%qYrG%eVq0FANS}X0Y`T-!L#T#4xrqe1!ND91HB=u!RO010%z7hE~P^ zMm<o@RS{uRQZqF%Ghz%dax*k^`|D<8q^x8F3NKJ$ISrg=K-qwefe*@NVqj-bg|e9$ z6d4MkY!(JKhJ{czC^Z~_ve_8e7;b@b9}6b~BLfcu1C-6gz{em8WivB4G3Y|sEDSsh zlc8)@1~G;eP&OL_55pPMqCc%PHK(+K0loYWN=+}#Ni1Sua08eAC1ARUA)O(WL4m;t zToWiTSTQJ|7zPnBV$fwUXV7IZVlZGZWH4c1aLdmtamz1CPgO9|Gf=QnfLN(urC_9M zu4`mqXu^PE3Ijx*0apbSmReMtnV+X%sAqsfBe*1mgg=PHEMs^<>6C$qk%^I+k%f_! zk&Tg^k%N(wk&BU=y)-Y=)xf|2N*h9HBPeYQrA?r;DU>#Y(&kXw0!mwgZ2JG7fe9Rw qd<+Z>5+Emm`OFMF42%pc(2^gNLKqkr&c_}51yTX7S3vw*T%Q5S8WRfu diff --git a/elgg_clean/bower_components/fuelux/dist/fonts/fuelux.svg b/elgg_clean/bower_components/fuelux/dist/fonts/fuelux.svg deleted file mode 100644 index 4f0eeb00..00000000 --- a/elgg_clean/bower_components/fuelux/dist/fonts/fuelux.svg +++ /dev/null @@ -1,20 +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>Generated by Fontastic.me</metadata> -<defs> -<font id="fuelux" horiz-adv-x="512"> -<font-face font-family="fuelux" units-per-em="512" ascent="480" descent="-32"/> -<missing-glyph horiz-adv-x="512" /> - -<glyph unicode="" d="M151 391c26 19 56 32 90 35l0 83c-56-3-108-25-149-59z m-148-114l84 0c4 34 18 64 38 89l-58 58c-36-39-59-91-64-147z m59-185l59 59c-19 26-32 56-35 90l-83 0c3-56 25-108 59-149z m173-5c-34 4-64 18-89 38l-58-58c39-36 91-59 147-64z m126 34c-26-19-56-32-90-35l0-83c56 3 108 25 149 59z m148 114l-84 0c-4-34-18-64-38-89l58-58c36 39 59 91 64 147z m-232 190c34-4 64-18 89-38l58 58c-39 36-91 59-147 64z m173-5l-59-59c19-26 32-56 35-90l83 0c-3 56-25 108-59 149z"/> -<glyph unicode="" d="M277 425c34-4 64-18 89-38l58 58c-39 36-91 59-147 64z"/> -<glyph unicode="" d="M450 420l-59-59c19-26 32-56 35-90l83 0c-3 56-25 108-59 149z"/> -<glyph unicode="" d="M509 235l-84 0c-4-34-18-64-38-89l58-58c36 39 59 91 64 147z"/> -<glyph unicode="" d="M361 121c-26-19-56-32-90-35l0-83c56 3 108 25 149 59z"/> -<glyph unicode="" d="M235 87c-34 4-64 18-89 38l-58-58c39-36 91-59 147-64z"/> -<glyph unicode="" d="M62 92l59 59c-19 26-32 56-35 90l-83 0c3-56 25-108 59-149z"/> -<glyph unicode="" d="M3 277l84 0c4 34 18 64 38 89l-58 58c-36-39-59-91-64-147z"/> -<glyph unicode="" d="M151 391c26 19 56 32 90 35l0 83c-56-3-108-25-149-59z"/> -<glyph unicode="" d="M336 218c0-47-38-85-85-85-46 0-84 38-84 85 0 46 38 84 84 84 47 0 85-38 85-84z"/> -</font></defs></svg> diff --git a/elgg_clean/bower_components/fuelux/dist/fonts/fuelux.ttf b/elgg_clean/bower_components/fuelux/dist/fonts/fuelux.ttf deleted file mode 100644 index 100a104bf190eaae589165a04a19db27beef7d2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 zcmZQzWME+6WoTevW(aU|3-Qety7Q2Mf!&3HfkDRI#np|$ih+%Rfn9}xfkDAPSl>v0 zx{o&l17idO14CGHZeqa!Ddl|(42)M87#O|M6N?M}|7T!kU|^SFU|`@#rNU-#aR zfq~hEfr0T(MrvXT!=<pt3=9l+7#JALGBQ#VSu~kg85kHv7#J8-GIC2QIA<~aU|?X} zz`($ul#`#F$n=jngn@xs0py<C#EJrja0X)r21W~zd-4)<QzuJ_&17I;m0)0CEHB6} zE@56~?#sZyHi3bGp$F_YMh1pO(bKNR^V@u7;AUa~f%CVxKEr8d24=>;jDJDyWq?RC zfb@Yy^dJI^e?cN39dOJ77U5+uVBi3YffO==#T>wV1_nkZ2F3{ttPC8CK8$G$3=Hm2 z`YVGZLkj}~69X$JR3!rgg8+ib5Rm4Y!r<_L;Q=S(gZ~d0^cesC2e}RuPYfV^5Tzgs znHU(D8ATb}8JijT86p^%8JHPj7?y+OnHd;B@xUMhb`t}G3j;HlCBwkNpuxbvz{UXb z0TTnm1J3{dK{_5VfM^AXDv$sJBO5p%AZ)00U=ECcx(LP{=5!cC216A?7sD)uRSdfr zPBGkKc*np23UhGkVP)WE5M&T%kY!M2&}7hOU=TJlH)Z2zG&VC=XA?G8Q&$!fS5s#f z6E|mL7d5kIRAyrrH)9qPH&;^^XBQJUR-3M65bP8g!lqzlVQekW63p_%P{YbLtPUak z04%T;EXmjoQewUqB=qm2wU$A!J4h!-8A6y*1S}E>k_1H!Bcmu|Gvf-zzYL)K2DX_| z6r?|laV1zK0|NsiV>=^1<6p)lU^QTOF&=_gxCCKNGeZR9UxwEpHL75LF#ZL*`!&ck z21Z7H24==343%JckZ;WyGeN$n1iOua5u8$AGt`3Q&B0*;))*EJaRnnd6<0ER1j*Yo zf<n#??1UJI3m8FZo}rd;1xQ{P9KOt8>mj~jU}T74Y-jig@h3PI*uh~74KfBshUE;c zi~)>#pq#5B!ltBVYGP)@7+~aPXz2FW&B#bu$p{o)3=BLB)4+KKlnvMz_@Hbi26hHj zD4Ur<k)aUEW?^7sSO{f<Qo{i#n~i~u;T9<Ov2ZdlGVp-&B_j(b0}}%ugD6y-nZb!c z7s_T~;9-~yWwSDfF|2^H*%){j&M>4glrp3;<S>*nR4_24m8RyDRxmIGF{Co2Gn6vq zFeEY*F)#$BrkCa<7BMimG2}DkF_eJmB8GH^R0ahGBL+PN0|o^KD+UD=!yqC?47v>F z47v<P3<eB_3?>W=Zuxm7Zuv#&sR~AV1`1XR5Gxg|6pVDub&U)RO&Cy2fjcRTA(f$s zp_m~P>;we{L$I|BVW~yMnfZANhI$4#G{VbZNE~36F}$F3%D}|P#K_FZ!pO?V#>mdd z!N|$T#mLQGnwRNnU|;~H4WYCVls1OaCQ#ZGN}EAxb0}>Ar7b}={r}Iv1dd5Q1_lNR du%keHW(FPxMg|smfed!%`M6`hKq`>y7XSpx0}TKG diff --git a/elgg_clean/bower_components/fuelux/dist/fonts/fuelux.woff b/elgg_clean/bower_components/fuelux/dist/fonts/fuelux.woff deleted file mode 100644 index 4c2cd2d62cb06f7ffd09ae877a475c3887d9dc04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1300 zcmXT-cXRU(3GruOU=?BDW?*1oV0*y82%<5uvzwa&0|O%m0|Vm=1_majjVasQ+}uKZ z85o#8FfcGkGB7a6<O|(-=<ed`#=yYL!@$5G%fP^(z+l0^;vcMU#K6F;!@$7c#lXOj zpuf{6CpkB<fPsOzf`Ng-hJk_6>wuKf_KeiT6b1(7Ees3{`V0&VW(=3Y9%p2vCNeNE zKLMG~z`&rwqRGUZky}#1z`z1>q!a@KgB1HLrXRV96$K0oEHWTZfH8LfLtbKTDgy(H z3IhYfT?Pim^2t(SGYj&IOBfhfL7D}??qg<Pte9ha;e58RqX_$l@0Z@Z+ps&&)M}AL zxBV~fs?M+O+t@G4En(L+)0^R~y;NnIYjDPyOEI_ZO}epmHVeybZ*TAF8;65}sxtL0 zTSETGFKH6_Bb=ttkvH?z%g=J3pIP@icDOMLPTlVJZErA355pmi_uU`<>DB4(TD5p} z`Oc~>?yaxG-t@ozr(bgPbH&{2OD$^N_A$rw9RBWIc;RtGM`N9s^8)F0hkReODoV5o zR&XU7@J%yLxA#^NYN~EZJXm{>`JnSbWyhcdF1I85o<}n$NNWEO48L$R^iPXi*hV&~ zB$b~jZ&H8xKD*m4+RXb=`pdLil5b9Y**5Ea&t+?^$@4Go*6L>65}w-Zv#j=^Wwq<? zP_w8-%&QL8{Iht&^KaJdbldftpB9`**nhM2L*Kz^^=*vDw#O&VcxY(v^Y8nFgMK$< zY|ogfE#Gu=<w>`1A68tncxCwGxwc+usp+3JryT@dHvCMoivML)s3XgAcI`BGpQG!Z zOncVtvU=;b+10<7%$+3mse9)pUz6VlGQ*;txO{uF_0BPyi<7!Sz4Oz*dF<AGtMjAV zac0JG;Y&Sp%hqsN1~Q$GzkOFB>ZI0^bYqpP)6B}R{mpXNBJZ{Oiq4z!lR~^s<v+Xj zR_kKZ%(Yw61%ubIc-Iw9&!}fSAF;WkVoq{GLP82d)91qDb&W5hW9BECFhp$Tux4Oj z0Li5!Bs^eF;$#y@NJ?OF(o;xd{4Bx1vV*}EDxa2=Fz3L5QwI*dI6ULnfddctmhLz5 zFxp~ZU|_hR$ml>LL(@rt3D0I7dhns)A*1@^=KuT>UnKtj`_C<s)}kH2;N-@j*U38_ zVpl>!T0?>)n;V-z0pll$gEeAoyb5R8mPks@kdTlo`1hYb=tBdei?)H&Rc1zIY33$l zCq{<UHEbK8?qql*pDupu_~+X-sSnbU7#crs-(hz+GmS0n*#4gS#uz@f4JHgBo4D7& z{PpMbfddPUA7Nl}FjHpMN?>9zXJayCVqjokVqjoq6lH8@Y-Z$Vh+tr5U}lJ6SPsfs z0Surrp<+&MpKaD*2Z2`mo11(#cuv1ETWM*_78V}8;2#W{cXmf`H&6I*tLe_+33jo4 z6Pcf|So+R;q8U^%{pQbaAD^*Dd~!TgAY}BeSN%+-*}P9jE?P`|e!1dUQ~qP0@8RcE z_D<d;vzl$*ipR|#r-T<h4w={evB!O1kMT?UH!nF&s_rM=Z(kN(H#x*R>xST0-qQPT zSfs6@&L#I1vB=D83aVWD<Nljf6>B#JRa9!lU0IZUezxAVgFhFQWS7foe)y^NJyrGe w*{RzmDXH^4=JGq+wlT-qMt0Y=P}j=cANWJwo0-Al)q$;tCxd~3p^t$T0OF4bMgRZ+ diff --git a/elgg_clean/bower_components/fuelux/dist/js/fuelux.js b/elgg_clean/bower_components/fuelux/dist/js/fuelux.js deleted file mode 100644 index 6fc3316c..00000000 --- a/elgg_clean/bower_components/fuelux/dist/js/fuelux.js +++ /dev/null @@ -1,7837 +0,0 @@ -/*! - * Fuel UX v3.11.4 - * Copyright 2012-2015 ExactTarget - * Licensed under the BSD-3-Clause license (https://github.com/ExactTarget/fuelux/blob/master/LICENSE) - */ - - -// For more information on UMD visit: https://github.com/umdjs/umd/ -( function( factory ) { - if ( typeof define === 'function' && define.amd ) { - define( [ 'jquery', 'bootstrap' ], factory ); - } else { - factory( jQuery ); - } -}( function( jQuery ) { - - if ( typeof jQuery === 'undefined' ) { - throw new Error( 'Fuel UX\'s JavaScript requires jQuery' ) - } - - if ( typeof jQuery.fn.dropdown === 'undefined' || typeof jQuery.fn.collapse === 'undefined' ) { - throw new Error( 'Fuel UX\'s JavaScript requires Bootstrap' ) - } - - ( function( $ ) { - - /* - * Fuel UX Checkbox - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.checkbox; - - // CHECKBOX CONSTRUCTOR AND PROTOTYPE - - var Checkbox = function( element, options ) { - this.options = $.extend( {}, $.fn.checkbox.defaults, options ); - - if ( element.tagName.toLowerCase() !== 'label' ) { - //console.log('initialize checkbox on the label that wraps the checkbox'); - return; - } - - // cache elements - this.$label = $( element ); - this.$chk = this.$label.find( 'input[type="checkbox"]' ); - this.$container = $( element ).parent( '.checkbox' ); // the container div - - // determine if a toggle container is specified - var containerSelector = this.$chk.attr( 'data-toggle' ); - this.$toggleContainer = $( containerSelector ); - - // handle internal events - this.$chk.on( 'change', $.proxy( this.itemchecked, this ) ); - - // set default state - this.setInitialState(); - }; - - Checkbox.prototype = { - - constructor: Checkbox, - - setInitialState: function() { - var $chk = this.$chk; - var $lbl = this.$label; - - // get current state of input - var checked = $chk.prop( 'checked' ); - var disabled = $chk.prop( 'disabled' ); - - // sync label class with input state - this.setCheckedState( $chk, checked ); - this.setDisabledState( $chk, disabled ); - }, - - setCheckedState: function( element, checked ) { - var $chk = element; - var $lbl = this.$label; - var $container = this.$container; - var $containerToggle = this.$toggleContainer; - - // set class on outer container too...to support highlighting - // TODO: verify inline checkboxes, also test with MCTheme - - if ( checked ) { - $chk.prop( 'checked', true ); - $lbl.addClass( 'checked' ); - //$container.addClass('checked'); - $containerToggle.removeClass( 'hide hidden' ); - $lbl.trigger( 'checked.fu.checkbox' ); - } else { - $chk.prop( 'checked', false ); - $lbl.removeClass( 'checked' ); - //$container.removeClass('checked'); - $containerToggle.addClass( 'hidden' ); - $lbl.trigger( 'unchecked.fu.checkbox' ); - } - - $lbl.trigger( 'changed.fu.checkbox', checked ); - }, - - setDisabledState: function( element, disabled ) { - var $chk = element; - var $lbl = this.$label; - - if ( disabled ) { - this.$chk.prop( 'disabled', true ); - $lbl.addClass( 'disabled' ); - $lbl.trigger( 'disabled.fu.checkbox' ); - } else { - this.$chk.prop( 'disabled', false ); - $lbl.removeClass( 'disabled' ); - $lbl.trigger( 'enabled.fu.checkbox' ); - } - }, - - itemchecked: function( evt ) { - var $chk = $( evt.target ); - var checked = $chk.prop( 'checked' ); - - this.setCheckedState( $chk, checked ); - }, - - toggle: function() { - var checked = this.isChecked(); - - if ( checked ) { - this.uncheck(); - } else { - this.check(); - } - }, - - check: function() { - this.setCheckedState( this.$chk, true ); - }, - - uncheck: function() { - this.setCheckedState( this.$chk, false ); - }, - - isChecked: function() { - var checked = this.$chk.prop( 'checked' ); - return checked; - }, - - enable: function() { - this.setDisabledState( this.$chk, false ); - }, - - disable: function() { - this.setDisabledState( this.$chk, true ); - }, - - destroy: function() { - this.$label.remove(); - // remove any external bindings - // [none] - // empty elements to return to original markup - // [none] - return this.$label[ 0 ].outerHTML; - } - }; - - Checkbox.prototype.getValue = Checkbox.prototype.isChecked; - - // CHECKBOX PLUGIN DEFINITION - - $.fn.checkbox = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.checkbox' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.checkbox', ( data = new Checkbox( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.checkbox.defaults = {}; - - $.fn.checkbox.Constructor = Checkbox; - - $.fn.checkbox.noConflict = function() { - $.fn.checkbox = old; - return this; - }; - - // DATA-API - - $( document ).on( 'mouseover.fu.checkbox.data-api', '[data-initialize=checkbox]', function( e ) { - var $control = $( e.target ); - if ( !$control.data( 'fu.checkbox' ) ) { - $control.checkbox( $control.data() ); - } - } ); - - // Must be domReady for AMD compatibility - $( function() { - $( '[data-initialize=checkbox]' ).each( function() { - var $this = $( this ); - if ( !$this.data( 'fu.checkbox' ) ) { - $this.checkbox( $this.data() ); - } - } ); - } ); - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Combobox - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.combobox; - - - // COMBOBOX CONSTRUCTOR AND PROTOTYPE - - var Combobox = function( element, options ) { - this.$element = $( element ); - this.options = $.extend( {}, $.fn.combobox.defaults, options ); - - this.$dropMenu = this.$element.find( '.dropdown-menu' ); - this.$input = this.$element.find( 'input' ); - this.$button = this.$element.find( '.btn' ); - - this.$element.on( 'click.fu.combobox', 'a', $.proxy( this.itemclicked, this ) ); - this.$element.on( 'change.fu.combobox', 'input', $.proxy( this.inputchanged, this ) ); - this.$element.on( 'shown.bs.dropdown', $.proxy( this.menuShown, this ) ); - - // set default selection - this.setDefaultSelection(); - - // if dropdown is empty, disable it - var items = this.$dropMenu.children( 'li' ); - if ( items.length === 0 ) { - this.$button.addClass( 'disabled' ); - } - - }; - - Combobox.prototype = { - - constructor: Combobox, - - destroy: function() { - this.$element.remove(); - // remove any external bindings - // [none] - - // set input value attrbute in markup - this.$element.find( 'input' ).each( function() { - $( this ).attr( 'value', $( this ).val() ); - } ); - - // empty elements to return to original markup - // [none] - - return this.$element[ 0 ].outerHTML; - }, - - doSelect: function( $item ) { - if ( typeof $item[ 0 ] !== 'undefined' ) { - this.$selectedItem = $item; - this.$input.val( this.$selectedItem.text().trim() ); - } else { - this.$selectedItem = null; - } - }, - - menuShown: function() { - if ( this.options.autoResizeMenu ) { - this.resizeMenu(); - } - }, - - resizeMenu: function() { - var width = this.$element.outerWidth(); - this.$dropMenu.outerWidth( width ); - }, - - selectedItem: function() { - var item = this.$selectedItem; - var data = {}; - - if ( item ) { - var txt = this.$selectedItem.text().trim(); - data = $.extend( { - text: txt - }, this.$selectedItem.data() ); - } else { - data = { - text: this.$input.val() - }; - } - - return data; - }, - - selectByText: function( text ) { - var $item = $( [] ); - this.$element.find( 'li' ).each( function() { - if ( ( this.textContent || this.innerText || $( this ).text() || '' ).toLowerCase() === ( text || '' ).toLowerCase() ) { - $item = $( this ); - return false; - } - } ); - this.doSelect( $item ); - }, - - selectByValue: function( value ) { - var selector = 'li[data-value="' + value + '"]'; - this.selectBySelector( selector ); - }, - - selectByIndex: function( index ) { - // zero-based index - var selector = 'li:eq(' + index + ')'; - this.selectBySelector( selector ); - }, - - selectBySelector: function( selector ) { - var $item = this.$element.find( selector ); - this.doSelect( $item ); - }, - - setDefaultSelection: function() { - var selector = 'li[data-selected=true]:first'; - var item = this.$element.find( selector ); - - if ( item.length > 0 ) { - // select by data-attribute - this.selectBySelector( selector ); - item.removeData( 'selected' ); - item.removeAttr( 'data-selected' ); - } - }, - - enable: function() { - this.$element.removeClass( 'disabled' ); - this.$input.removeAttr( 'disabled' ); - this.$button.removeClass( 'disabled' ); - }, - - disable: function() { - this.$element.addClass( 'disabled' ); - this.$input.attr( 'disabled', true ); - this.$button.addClass( 'disabled' ); - }, - - itemclicked: function( e ) { - this.$selectedItem = $( e.target ).parent(); - - // set input text and trigger input change event marked as synthetic - this.$input.val( this.$selectedItem.text().trim() ).trigger( 'change', { - synthetic: true - } ); - - // pass object including text and any data-attributes - // to onchange event - var data = this.selectedItem(); - - // trigger changed event - this.$element.trigger( 'changed.fu.combobox', data ); - - e.preventDefault(); - - // return focus to control after selecting an option - this.$element.find( '.dropdown-toggle' ).focus(); - }, - - inputchanged: function( e, extra ) { - // skip processing for internally-generated synthetic event - // to avoid double processing - if ( extra && extra.synthetic ) return; - var val = $( e.target ).val(); - this.selectByText( val ); - - // find match based on input - // if no match, pass the input value - var data = this.selectedItem(); - if ( data.text.length === 0 ) { - data = { - text: val - }; - } - - // trigger changed event - this.$element.trigger( 'changed.fu.combobox', data ); - } - }; - - Combobox.prototype.getValue = Combobox.prototype.selectedItem; - - // COMBOBOX PLUGIN DEFINITION - - $.fn.combobox = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.combobox' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.combobox', ( data = new Combobox( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.combobox.defaults = { - autoResizeMenu: true - }; - - $.fn.combobox.Constructor = Combobox; - - $.fn.combobox.noConflict = function() { - $.fn.combobox = old; - return this; - }; - - // DATA-API - - $( document ).on( 'mousedown.fu.combobox.data-api', '[data-initialize=combobox]', function( e ) { - var $control = $( e.target ).closest( '.combobox' ); - if ( !$control.data( 'fu.combobox' ) ) { - $control.combobox( $control.data() ); - } - } ); - - // Must be domReady for AMD compatibility - $( function() { - $( '[data-initialize=combobox]' ).each( function() { - var $this = $( this ); - if ( !$this.data( 'fu.combobox' ) ) { - $this.combobox( $this.data() ); - } - } ); - } ); - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Datepicker - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var INVALID_DATE = 'Invalid Date'; - var MOMENT_NOT_AVAILABLE = 'moment.js is not available so you cannot use this function'; - - var datepickerStack = []; - var moment = false; - var old = $.fn.datepicker; - var requestedMoment = false; - - var runStack = function() { - var i, l; - requestedMoment = true; - for ( i = 0, l = datepickerStack.length; i < l; i++ ) { - datepickerStack[ i ].init.call( datepickerStack[ i ].scope ); - } - datepickerStack = []; - }; - - //only load moment if it's there. otherwise we'll look for it in window.moment - if ( typeof define === 'function' && define.amd ) { //check if AMD is available - require( [ 'moment' ], function( amdMoment ) { - moment = amdMoment; - runStack(); - }, function( err ) { - var failedId = err.requireModules && err.requireModules[ 0 ]; - if ( failedId === 'moment' ) { - runStack(); - } - } ); - } else { - runStack(); - } - - // DATEPICKER CONSTRUCTOR AND PROTOTYPE - - var Datepicker = function( element, options ) { - this.$element = $( element ); - this.options = $.extend( true, {}, $.fn.datepicker.defaults, options ); - - this.$calendar = this.$element.find( '.datepicker-calendar' ); - this.$days = this.$calendar.find( '.datepicker-calendar-days' ); - this.$header = this.$calendar.find( '.datepicker-calendar-header' ); - this.$headerTitle = this.$header.find( '.title' ); - this.$input = this.$element.find( 'input' ); - this.$wheels = this.$element.find( '.datepicker-wheels' ); - this.$wheelsMonth = this.$element.find( '.datepicker-wheels-month' ); - this.$wheelsYear = this.$element.find( '.datepicker-wheels-year' ); - - this.artificialScrolling = false; - this.formatDate = this.options.formatDate || this.formatDate; - this.inputValue = null; - this.moment = false; - this.momentFormat = null; - this.parseDate = this.options.parseDate || this.parseDate; - this.preventBlurHide = false; - this.restricted = this.options.restricted || []; - this.restrictedParsed = []; - this.restrictedText = this.options.restrictedText; - this.sameYearOnly = this.options.sameYearOnly; - this.selectedDate = null; - this.yearRestriction = null; - - this.$calendar.find( '.datepicker-today' ).on( 'click.fu.datepicker', $.proxy( this.todayClicked, this ) ); - this.$days.on( 'click.fu.datepicker', 'tr td button', $.proxy( this.dateClicked, this ) ); - this.$header.find( '.next' ).on( 'click.fu.datepicker', $.proxy( this.next, this ) ); - this.$header.find( '.prev' ).on( 'click.fu.datepicker', $.proxy( this.prev, this ) ); - this.$headerTitle.on( 'click.fu.datepicker', $.proxy( this.titleClicked, this ) ); - this.$input.on( 'change.fu.datepicker', $.proxy( this.inputChanged, this ) ); - this.$input.on( 'mousedown.fu.datepicker', $.proxy( this.showDropdown, this ) ); - this.$wheels.find( '.datepicker-wheels-back' ).on( 'click.fu.datepicker', $.proxy( this.backClicked, this ) ); - this.$wheels.find( '.datepicker-wheels-select' ).on( 'click.fu.datepicker', $.proxy( this.selectClicked, this ) ); - this.$wheelsMonth.on( 'click.fu.datepicker', 'ul button', $.proxy( this.monthClicked, this ) ); - this.$wheelsYear.on( 'click.fu.datepicker', 'ul button', $.proxy( this.yearClicked, this ) ); - this.$wheelsYear.find( 'ul' ).on( 'scroll.fu.datepicker', $.proxy( this.onYearScroll, this ) ); - - var init = function() { - if ( this.checkForMomentJS() ) { - moment = moment || window.moment; // need to pull in the global moment if they didn't do it via require - this.moment = true; - this.momentFormat = this.options.momentConfig.format; - this.setCulture( this.options.momentConfig.culture ); - - // support moment with lang (< v2.8) or locale - moment.locale = moment.locale || moment.lang; - } - - this.setRestrictedDates( this.restricted ); - if ( !this.setDate( this.options.date ) ) { - this.$input.val( '' ); - this.inputValue = this.$input.val(); - } - - if ( this.sameYearOnly ) { - this.yearRestriction = ( this.selectedDate ) ? this.selectedDate.getFullYear() : new Date().getFullYear(); - } - }; - - if ( requestedMoment ) { - init.call( this ); - } else { - datepickerStack.push( { - init: init, - scope: this - } ); - } - }; - - Datepicker.prototype = { - - constructor: Datepicker, - - backClicked: function() { - this.changeView( 'calendar' ); - }, - - changeView: function( view, date ) { - if ( view === 'wheels' ) { - this.$calendar.hide().attr( 'aria-hidden', 'true' ); - this.$wheels.show().removeAttr( 'aria-hidden', '' ); - if ( date ) { - this.renderWheel( date ); - } - - } else { - this.$wheels.hide().attr( 'aria-hidden', 'true' ); - this.$calendar.show().removeAttr( 'aria-hidden', '' ); - if ( date ) { - this.renderMonth( date ); - } - - } - }, - - checkForMomentJS: function() { - if ( - ( $.isFunction( window.moment ) || ( typeof moment !== 'undefined' && $.isFunction( moment ) ) ) && - $.isPlainObject( this.options.momentConfig ) && - ( typeof this.options.momentConfig.culture === 'string' && typeof this.options.momentConfig.format === 'string' ) - ) { - return true; - } else { - return false; - } - }, - - dateClicked: function( e ) { - var $td = $( e.currentTarget ).parents( 'td:first' ); - var date; - - if ( $td.hasClass( 'restricted' ) ) { - return; - } - - this.$days.find( 'td.selected' ).removeClass( 'selected' ); - $td.addClass( 'selected' ); - - date = new Date( $td.attr( 'data-year' ), $td.attr( 'data-month' ), $td.attr( 'data-date' ) ); - this.selectedDate = date; - this.$input.val( this.formatDate( date ) ); - this.inputValue = this.$input.val(); - this.hideDropdown(); - this.$input.focus(); - this.$element.trigger( 'dateClicked.fu.datepicker', date ); - }, - - destroy: function() { - this.$element.remove(); - // any external bindings - // [none] - - // empty elements to return to original markup - this.$days.find( 'tbody' ).empty(); - this.$wheelsYear.find( 'ul' ).empty(); - - return this.$element[ 0 ].outerHTML; - }, - - disable: function() { - this.$element.addClass( 'disabled' ); - this.$element.find( 'input, button' ).attr( 'disabled', 'disabled' ); - this.$element.find( '.input-group-btn' ).removeClass( 'open' ); - }, - - enable: function() { - this.$element.removeClass( 'disabled' ); - this.$element.find( 'input, button' ).removeAttr( 'disabled' ); - }, - - formatDate: function( date ) { - var padTwo = function( value ) { - var s = '0' + value; - return s.substr( s.length - 2 ); - }; - - if ( this.moment ) { - return moment( date ).format( this.momentFormat ); - } else { - return padTwo( date.getMonth() + 1 ) + '/' + padTwo( date.getDate() ) + '/' + date.getFullYear(); - } - }, - - getCulture: function() { - if ( this.moment ) { - return moment.locale(); - } else { - throw MOMENT_NOT_AVAILABLE; - } - }, - - getDate: function() { - return ( !this.selectedDate ) ? new Date( NaN ) : this.selectedDate; - }, - - getFormat: function() { - if ( this.moment ) { - return this.momentFormat; - } else { - throw MOMENT_NOT_AVAILABLE; - } - }, - - getFormattedDate: function() { - return ( !this.selectedDate ) ? INVALID_DATE : this.formatDate( this.selectedDate ); - }, - - getRestrictedDates: function() { - return this.restricted; - }, - - inputChanged: function() { - var inputVal = this.$input.val(); - var date; - if ( inputVal !== this.inputValue ) { - date = this.setDate( inputVal ); - if ( date === null ) { - this.$element.trigger( 'inputParsingFailed.fu.datepicker', inputVal ); - } else if ( date === false ) { - this.$element.trigger( 'inputRestrictedDate.fu.datepicker', date ); - } else { - this.$element.trigger( 'changed.fu.datepicker', date ); - } - - } - }, - - showDropdown: function( e ) { - if ( !this.$input.is( ':focus' ) ) { - this.$element.find( '.input-group-btn' ).addClass( 'open' ); - } - }, - - hideDropdown: function() { - this.$element.find( '.input-group-btn' ).removeClass( 'open' ); - }, - - isInvalidDate: function( date ) { - var dateString = date.toString(); - if ( dateString === INVALID_DATE || dateString === 'NaN' ) { - return true; - } - - return false; - }, - - isRestricted: function( date, month, year ) { - var restricted = this.restrictedParsed; - var i, from, l, to; - - if ( this.sameYearOnly && this.yearRestriction !== null && year !== this.yearRestriction ) { - return true; - } - - for ( i = 0, l = restricted.length; i < l; i++ ) { - from = restricted[ i ].from; - to = restricted[ i ].to; - if ( - ( year > from.year || ( year === from.year && month > from.month ) || ( year === from.year && month === from.month && date >= from.date ) ) && - ( year < to.year || ( year === to.year && month < to.month ) || ( year === to.year && month === to.month && date <= to.date ) ) - ) { - return true; - } - - } - - return false; - }, - - monthClicked: function( e ) { - this.$wheelsMonth.find( '.selected' ).removeClass( 'selected' ); - $( e.currentTarget ).parent().addClass( 'selected' ); - }, - - next: function() { - var month = this.$headerTitle.attr( 'data-month' ); - var year = this.$headerTitle.attr( 'data-year' ); - month++; - if ( month > 11 ) { - if ( this.sameYearOnly ) { - return; - } - - month = 0; - year++; - } - - this.renderMonth( new Date( year, month, 1 ) ); - }, - - onYearScroll: function( e ) { - if ( this.artificialScrolling ) { - return; - } - - var $yearUl = $( e.currentTarget ); - var height = ( $yearUl.css( 'box-sizing' ) === 'border-box' ) ? $yearUl.outerHeight() : $yearUl.height(); - var scrollHeight = $yearUl.get( 0 ).scrollHeight; - var scrollTop = $yearUl.scrollTop(); - var bottomPercentage = ( height / ( scrollHeight - scrollTop ) ) * 100; - var topPercentage = ( scrollTop / scrollHeight ) * 100; - var i, start; - - if ( topPercentage < 5 ) { - start = parseInt( $yearUl.find( 'li:first' ).attr( 'data-year' ), 10 ); - for ( i = ( start - 1 ); i > ( start - 11 ); i-- ) { - $yearUl.prepend( '<li data-year="' + i + '"><button type="button">' + i + '</button></li>' ); - } - this.artificialScrolling = true; - $yearUl.scrollTop( ( $yearUl.get( 0 ).scrollHeight - scrollHeight ) + scrollTop ); - this.artificialScrolling = false; - } else if ( bottomPercentage > 90 ) { - start = parseInt( $yearUl.find( 'li:last' ).attr( 'data-year' ), 10 ); - for ( i = ( start + 1 ); i < ( start + 11 ); i++ ) { - $yearUl.append( '<li data-year="' + i + '"><button type="button">' + i + '</button></li>' ); - } - } - }, - - //some code ripped from http://stackoverflow.com/questions/2182246/javascript-dates-in-ie-nan-firefox-chrome-ok - parseDate: function( date ) { - var self = this; - var BAD_DATE = new Date( NaN ); - var dt, isoExp, momentParse, momentParseWithFormat, tryMomentParseAll, month, parts, use; - - if ( date ) { - if ( this.moment ) { //if we have moment, use that to parse the dates - momentParseWithFormat = function( d ) { - var md = moment( d, self.momentFormat ); - return ( true === md.isValid() ) ? md.toDate() : BAD_DATE; - }; - momentParse = function( d ) { - var md = moment( new Date( d ) ); - return ( true === md.isValid() ) ? md.toDate() : BAD_DATE; - }; - - tryMomentParseAll = function( d, parseFunc1, parseFunc2 ) { - var pd = parseFunc1( d ); - if ( !self.isInvalidDate( pd ) ) { - return pd; - } - - pd = parseFunc2( pd ); - if ( !self.isInvalidDate( pd ) ) { - return pd; - } - - return BAD_DATE; - }; - - if ( 'string' === typeof( date ) ) { - // Attempts to parse date strings using this.momentFormat, falling back on newing a date - return tryMomentParseAll( date, momentParseWithFormat, momentParse ); - } else { - // Attempts to parse date by newing a date object directly, falling back on parsing using this.momentFormat - return tryMomentParseAll( date, momentParse, momentParseWithFormat ); - } - - } else { //if moment isn't present, use previous date parsing strategy - if ( typeof( date ) === 'string' ) { - dt = new Date( Date.parse( date ) ); - if ( !this.isInvalidDate( dt ) ) { - return dt; - } else { - date = date.split( 'T' )[ 0 ]; - isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/; - parts = isoExp.exec( date ); - if ( parts ) { - month = parseInt( parts[ 2 ], 10 ); - dt = new Date( parts[ 1 ], month - 1, parts[ 3 ] ); - if ( month === ( dt.getMonth() + 1 ) ) { - return dt; - } - - } - - } - - } else { - dt = new Date( date ); - if ( !this.isInvalidDate( dt ) ) { - return dt; - } - - } - - } - - } - - return new Date( NaN ); - }, - - prev: function() { - var month = this.$headerTitle.attr( 'data-month' ); - var year = this.$headerTitle.attr( 'data-year' ); - month--; - if ( month < 0 ) { - if ( this.sameYearOnly ) { - return; - } - - month = 11; - year--; - } - - this.renderMonth( new Date( year, month, 1 ) ); - }, - - renderMonth: function( date ) { - date = date || new Date(); - - var firstDay = new Date( date.getFullYear(), date.getMonth(), 1 ).getDay(); - var lastDate = new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); - var lastMonthDate = new Date( date.getFullYear(), date.getMonth(), 0 ).getDate(); - var $month = this.$headerTitle.find( '.month' ); - var month = date.getMonth(); - var now = new Date(); - var nowDate = now.getDate(); - var nowMonth = now.getMonth(); - var nowYear = now.getFullYear(); - var selected = this.selectedDate; - var $tbody = this.$days.find( 'tbody' ); - var year = date.getFullYear(); - var curDate, curMonth, curYear, i, j, rows, stage, previousStage, lastStage, $td, $tr; - - if ( selected ) { - selected = { - date: selected.getDate(), - month: selected.getMonth(), - year: selected.getFullYear() - }; - } - - $month.find( '.current' ).removeClass( 'current' ); - $month.find( 'span[data-month="' + month + '"]' ).addClass( 'current' ); - this.$headerTitle.find( '.year' ).text( year ); - this.$headerTitle.attr( { - 'data-month': month, - 'data-year': year - } ); - - - $tbody.empty(); - if ( firstDay !== 0 ) { - curDate = lastMonthDate - firstDay + 1; - stage = -1; - } else { - curDate = 1; - stage = 0; - } - - rows = ( lastDate <= ( 35 - firstDay ) ) ? 5 : 6; - for ( i = 0; i < rows; i++ ) { - $tr = $( '<tr></tr>' ); - for ( j = 0; j < 7; j++ ) { - $td = $( '<td></td>' ); - if ( stage === -1 ) { - $td.addClass( 'last-month' ); - if ( previousStage !== stage ) { - $td.addClass( 'first' ); - } - } else if ( stage === 1 ) { - $td.addClass( 'next-month' ); - if ( previousStage !== stage ) { - $td.addClass( 'first' ); - } - } - - curMonth = month + stage; - curYear = year; - if ( curMonth < 0 ) { - curMonth = 11; - curYear--; - } else if ( curMonth > 11 ) { - curMonth = 0; - curYear++; - } - - $td.attr( { - 'data-date': curDate, - 'data-month': curMonth, - 'data-year': curYear - } ); - if ( curYear === nowYear && curMonth === nowMonth && curDate === nowDate ) { - $td.addClass( 'current-day' ); - } else if ( curYear < nowYear || ( curYear === nowYear && curMonth < nowMonth ) || - ( curYear === nowYear && curMonth === nowMonth && curDate < nowDate ) ) { - $td.addClass( 'past' ); - if ( !this.options.allowPastDates ) { - $td.addClass( 'restricted' ).attr( 'title', this.restrictedText ); - } - - } - - if ( this.isRestricted( curDate, curMonth, curYear ) ) { - $td.addClass( 'restricted' ).attr( 'title', this.restrictedText ); - } - - if ( selected && curYear === selected.year && curMonth === selected.month && curDate === selected.date ) { - $td.addClass( 'selected' ); - } - - if ( $td.hasClass( 'restricted' ) ) { - $td.html( '<span><b class="datepicker-date">' + curDate + '</b></span>' ); - } else { - $td.html( '<span><button type="button" class="datepicker-date">' + curDate + '</button></span>' ); - } - - curDate++; - lastStage = previousStage; - previousStage = stage; - if ( stage === -1 && curDate > lastMonthDate ) { - curDate = 1; - stage = 0; - if ( lastStage !== stage ) { - $td.addClass( 'last' ); - } - } else if ( stage === 0 && curDate > lastDate ) { - curDate = 1; - stage = 1; - if ( lastStage !== stage ) { - $td.addClass( 'last' ); - } - } - if ( i === ( rows - 1 ) && j === 6 ) { - $td.addClass( 'last' ); - } - - $tr.append( $td ); - } - $tbody.append( $tr ); - } - }, - - renderWheel: function( date ) { - var month = date.getMonth(); - var $monthUl = this.$wheelsMonth.find( 'ul' ); - var year = date.getFullYear(); - var $yearUl = this.$wheelsYear.find( 'ul' ); - var i, $monthSelected, $yearSelected; - - if ( this.sameYearOnly ) { - this.$wheelsMonth.addClass( 'full' ); - this.$wheelsYear.addClass( 'hidden' ); - } else { - this.$wheelsMonth.removeClass( 'full' ); - this.$wheelsYear.removeClass( 'hide hidden' ); // .hide is deprecated - } - - $monthUl.find( '.selected' ).removeClass( 'selected' ); - $monthSelected = $monthUl.find( 'li[data-month="' + month + '"]' ); - $monthSelected.addClass( 'selected' ); - $monthUl.scrollTop( $monthUl.scrollTop() + ( $monthSelected.position().top - $monthUl.outerHeight() / 2 - $monthSelected.outerHeight( true ) / 2 ) ); - - $yearUl.empty(); - for ( i = ( year - 10 ); i < ( year + 11 ); i++ ) { - $yearUl.append( '<li data-year="' + i + '"><button type="button">' + i + '</button></li>' ); - } - $yearSelected = $yearUl.find( 'li[data-year="' + year + '"]' ); - $yearSelected.addClass( 'selected' ); - this.artificialScrolling = true; - $yearUl.scrollTop( $yearUl.scrollTop() + ( $yearSelected.position().top - $yearUl.outerHeight() / 2 - $yearSelected.outerHeight( true ) / 2 ) ); - this.artificialScrolling = false; - $monthSelected.find( 'button' ).focus(); - }, - - selectClicked: function() { - var month = this.$wheelsMonth.find( '.selected' ).attr( 'data-month' ); - var year = this.$wheelsYear.find( '.selected' ).attr( 'data-year' ); - this.changeView( 'calendar', new Date( year, month, 1 ) ); - }, - - setCulture: function( cultureCode ) { - if ( !cultureCode ) { - return false; - } - - if ( this.moment ) { - moment.locale( cultureCode ); - } else { - throw MOMENT_NOT_AVAILABLE; - } - }, - - setDate: function( date ) { - var parsed = this.parseDate( date ); - if ( !this.isInvalidDate( parsed ) ) { - if ( !this.isRestricted( parsed.getDate(), parsed.getMonth(), parsed.getFullYear() ) ) { - this.selectedDate = parsed; - this.renderMonth( parsed ); - this.$input.val( this.formatDate( parsed ) ); - } else { - this.selectedDate = false; - this.renderMonth(); - } - - } else { - this.selectedDate = null; - this.renderMonth(); - } - - this.inputValue = this.$input.val(); - return this.selectedDate; - }, - - setFormat: function( format ) { - if ( !format ) { - return false; - } - - if ( this.moment ) { - this.momentFormat = format; - } else { - throw MOMENT_NOT_AVAILABLE; - } - }, - - setRestrictedDates: function( restricted ) { - var parsed = []; - var self = this; - var i, l; - - var parseItem = function( val ) { - if ( val === -Infinity ) { - return { - date: -Infinity, - month: -Infinity, - year: -Infinity - }; - } else if ( val === Infinity ) { - return { - date: Infinity, - month: Infinity, - year: Infinity - }; - } else { - val = self.parseDate( val ); - return { - date: val.getDate(), - month: val.getMonth(), - year: val.getFullYear() - }; - } - }; - - this.restricted = restricted; - for ( i = 0, l = restricted.length; i < l; i++ ) { - parsed.push( { - from: parseItem( restricted[ i ].from ), - to: parseItem( restricted[ i ].to ) - } ); - } - this.restrictedParsed = parsed; - }, - - titleClicked: function( e ) { - this.changeView( 'wheels', new Date( this.$headerTitle.attr( 'data-year' ), this.$headerTitle.attr( 'data-month' ), 1 ) ); - }, - - todayClicked: function( e ) { - var date = new Date(); - - if ( ( date.getMonth() + '' ) !== this.$headerTitle.attr( 'data-month' ) || ( date.getFullYear() + '' ) !== this.$headerTitle.attr( 'data-year' ) ) { - this.renderMonth( date ); - } - }, - - yearClicked: function( e ) { - this.$wheelsYear.find( '.selected' ).removeClass( 'selected' ); - $( e.currentTarget ).parent().addClass( 'selected' ); - } - }; - //for control library consistency - Datepicker.prototype.getValue = Datepicker.prototype.getDate; - - // DATEPICKER PLUGIN DEFINITION - - $.fn.datepicker = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.datepicker' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.datepicker', ( data = new Datepicker( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.datepicker.defaults = { - allowPastDates: false, - date: new Date(), - formatDate: null, - momentConfig: { - culture: 'en', - format: 'L' // more formats can be found here http://momentjs.com/docs/#/customization/long-date-formats/. - }, - parseDate: null, - restricted: [], //accepts an array of objects formatted as so: { from: {{date}}, to: {{date}} } (ex: [ { from: new Date('12/11/2014'), to: new Date('03/31/2015') } ]) - restrictedText: 'Restricted', - sameYearOnly: false - }; - - $.fn.datepicker.Constructor = Datepicker; - - $.fn.datepicker.noConflict = function() { - $.fn.datepicker = old; - return this; - }; - - // DATA-API - - $( document ).on( 'mousedown.fu.datepicker.data-api', '[data-initialize=datepicker]', function( e ) { - var $control = $( e.target ).closest( '.datepicker' ); - if ( !$control.data( 'datepicker' ) ) { - $control.datepicker( $control.data() ); - } - } ); - - //used to prevent the dropdown from closing when clicking within it's bounds - $( document ).on( 'click.fu.datepicker.data-api', '.datepicker .dropdown-menu', function( e ) { - var $target = $( e.target ); - if ( !$target.is( '.datepicker-date' ) || $target.closest( '.restricted' ).length ) { - e.stopPropagation(); - } - } ); - - //used to prevent the dropdown from closing when clicking on the input - $( document ).on( 'click.fu.datepicker.data-api', '.datepicker input', function( e ) { - e.stopPropagation(); - } ); - - $( function() { - $( '[data-initialize=datepicker]' ).each( function() { - var $this = $( this ); - if ( $this.data( 'datepicker' ) ) { - return; - } - - $this.datepicker( $this.data() ); - } ); - } ); - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Dropdown Auto Flip - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - $( document.body ).on( 'click.fu.dropdown-autoflip', '[data-toggle=dropdown][data-flip]', function( event ) { - if ( $( this ).data().flip === "auto" ) { - // have the drop down decide where to place itself - _autoFlip( $( this ).next( '.dropdown-menu' ) ); - } - } ); - - // For pillbox suggestions dropdown - $( document.body ).on( 'suggested.fu.pillbox', function( event, element ) { - _autoFlip( $( element ) ); - $( element ).parent().addClass( 'open' ); - } ); - - function _autoFlip( menu ) { - // hide while the browser thinks - $( menu ).css( { - visibility: "hidden" - } ); - - // decide where to put menu - if ( dropUpCheck( menu ) ) { - menu.parent().addClass( "dropup" ); - } else { - menu.parent().removeClass( "dropup" ); - } - - // show again - $( menu ).css( { - visibility: "visible" - } ); - } - - function dropUpCheck( element ) { - // caching container - var $container = _getContainer( element ); - - // building object with measurementsances for later use - var measurements = {}; - measurements.parentHeight = element.parent().outerHeight(); - measurements.parentOffsetTop = element.parent().offset().top; - measurements.dropdownHeight = element.outerHeight(); - measurements.containerHeight = $container.overflowElement.outerHeight(); - - // this needs to be different if the window is the container or another element is - measurements.containerOffsetTop = ( !!$container.isWindow ) ? $container.overflowElement.scrollTop() : $container.overflowElement.offset().top; - - // doing the calculations - measurements.fromTop = measurements.parentOffsetTop - measurements.containerOffsetTop; - measurements.fromBottom = measurements.containerHeight - measurements.parentHeight - ( measurements.parentOffsetTop - measurements.containerOffsetTop ); - - // actual determination of where to put menu - // false = drop down - // true = drop up - if ( measurements.dropdownHeight < measurements.fromBottom ) { - return false; - } else if ( measurements.dropdownHeight < measurements.fromTop ) { - return true; - } else if ( measurements.dropdownHeight >= measurements.fromTop && measurements.dropdownHeight >= measurements.fromBottom ) { - // decide which one is bigger and put it there - if ( measurements.fromTop >= measurements.fromBottom ) { - return true; - } else { - return false; - } - - } - - } - - function _getContainer( element ) { - var containerElement, isWindow; - if ( element.attr( 'data-target' ) ) { - containerElement = element.attr( 'data-target' ); - isWindow = false; - } else { - containerElement = window; - isWindow = true; - } - - $.each( element.parents(), function( index, value ) { - if ( $( value ).css( 'overflow' ) !== 'visible' ) { - containerElement = value; - isWindow = false; - return false; - } - } ); - - return { - overflowElement: $( containerElement ), - isWindow: isWindow - }; - } - - // register empty plugin - $.fn.dropdownautoflip = function() { - /* empty */ - }; - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Loader - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.loader; - - // LOADER CONSTRUCTOR AND PROTOTYPE - - var Loader = function( element, options ) { - this.$element = $( element ); - this.options = $.extend( {}, $.fn.loader.defaults, options ); - - this.begin = ( this.$element.is( '[data-begin]' ) ) ? parseInt( this.$element.attr( 'data-begin' ), 10 ) : 1; - this.delay = ( this.$element.is( '[data-delay]' ) ) ? parseFloat( this.$element.attr( 'data-delay' ) ) : 150; - this.end = ( this.$element.is( '[data-end]' ) ) ? parseInt( this.$element.attr( 'data-end' ), 10 ) : 8; - this.frame = ( this.$element.is( '[data-frame]' ) ) ? parseInt( this.$element.attr( 'data-frame' ), 10 ) : this.begin; - this.isIElt9 = false; - this.timeout = {}; - - var ieVer = this.msieVersion(); - if ( ieVer !== false && ieVer < 9 ) { - this.$element.addClass( 'iefix' ); - this.isIElt9 = true; - } - - this.$element.attr( 'data-frame', this.frame + '' ); - this.play(); - }; - - Loader.prototype = { - - constructor: Loader, - - destroy: function() { - this.pause(); - - this.$element.remove(); - // any external bindings - // [none] - // empty elements to return to original markup - // [none] - // returns string of markup - return this.$element[ 0 ].outerHTML; - }, - - ieRepaint: function() { - if ( this.isIElt9 ) { - this.$element.addClass( 'iefix_repaint' ).removeClass( 'iefix_repaint' ); - } - }, - - msieVersion: function() { - var ua = window.navigator.userAgent; - var msie = ua.indexOf( 'MSIE ' ); - if ( msie > 0 ) { - return parseInt( ua.substring( msie + 5, ua.indexOf( ".", msie ) ), 10 ); - } else { - return false; - } - }, - - next: function() { - this.frame++; - if ( this.frame > this.end ) { - this.frame = this.begin; - } - - this.$element.attr( 'data-frame', this.frame + '' ); - this.ieRepaint(); - }, - - pause: function() { - clearTimeout( this.timeout ); - }, - - play: function() { - var self = this; - clearTimeout( this.timeout ); - this.timeout = setTimeout( function() { - self.next(); - self.play(); - }, this.delay ); - }, - - previous: function() { - this.frame--; - if ( this.frame < this.begin ) { - this.frame = this.end; - } - - this.$element.attr( 'data-frame', this.frame + '' ); - this.ieRepaint(); - }, - - reset: function() { - this.frame = this.begin; - this.$element.attr( 'data-frame', this.frame + '' ); - this.ieRepaint(); - } - }; - - // LOADER PLUGIN DEFINITION - - $.fn.loader = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.loader' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.loader', ( data = new Loader( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.loader.defaults = {}; - - $.fn.loader.Constructor = Loader; - - $.fn.loader.noConflict = function() { - $.fn.loader = old; - return this; - }; - - // INIT LOADER ON DOMCONTENTLOADED - - $( function() { - $( '[data-initialize=loader]' ).each( function() { - var $this = $( this ); - if ( !$this.data( 'fu.loader' ) ) { - $this.loader( $this.data() ); - } - } ); - } ); - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Placard - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.placard; - var EVENT_CALLBACK_MAP = { - 'accepted': 'onAccept', - 'cancelled': 'onCancel' - }; - - // PLACARD CONSTRUCTOR AND PROTOTYPE - - var Placard = function Placard( element, options ) { - var self = this; - this.$element = $( element ); - this.options = $.extend( {}, $.fn.placard.defaults, options ); - - if ( this.$element.attr( 'data-ellipsis' ) === 'true' ) { - this.options.applyEllipsis = true; - } - - this.$accept = this.$element.find( '.placard-accept' ); - this.$cancel = this.$element.find( '.placard-cancel' ); - this.$field = this.$element.find( '.placard-field' ); - this.$footer = this.$element.find( '.placard-footer' ); - this.$header = this.$element.find( '.placard-header' ); - this.$popup = this.$element.find( '.placard-popup' ); - - this.actualValue = null; - this.clickStamp = '_'; - this.previousValue = ''; - if ( this.options.revertOnCancel === -1 ) { - this.options.revertOnCancel = ( this.$accept.length > 0 ) ? true : false; - } - - this.isInput = this.$field.is( 'input' ); - - this.$field.on( 'focus.fu.placard', $.proxy( this.show, this ) ); - this.$field.on( 'keydown.fu.placard', $.proxy( this.keyComplete, this ) ); - this.$element.on( 'close.fu.placard', $.proxy( this.hide, this ) ); - this.$accept.on( 'click.fu.placard', $.proxy( this.complete, this, 'accepted' ) ); - this.$cancel.on( 'click.fu.placard', function( e ) { - e.preventDefault(); - self.complete( 'cancelled' ); - } ); - - this.applyEllipsis(); - }; - - var _isShown = function _isShown( placard ) { - if ( placard.$element.hasClass( 'showing' ) ) { - return true; - } - return false; - }; - - var _closeOtherPlacards = function _closeOtherPlacards() { - var otherPlacards; - - otherPlacards = $( document ).find( '.placard.showing' ); - if ( otherPlacards.length > 0 ) { - if ( otherPlacards.data( 'fu.placard' ) && otherPlacards.data( 'fu.placard' ).options.explicit ) { - return false; //failed - } - - otherPlacards.placard( 'externalClickListener', {}, true ); - } - - return true; //succeeded - }; - - Placard.prototype = { - constructor: Placard, - - complete: function complete( action ) { - var func = this.options[ EVENT_CALLBACK_MAP[ action ] ]; - - var obj = { - previousValue: this.previousValue, - value: this.getValue() - }; - - if ( func ) { - func( obj ); - this.$element.trigger( action + '.fu.placard', obj ); - } else { - if ( action === 'cancelled' && this.options.revertOnCancel ) { - this.setValue( this.previousValue, true ); - } - - this.$element.trigger( action + '.fu.placard', obj ); - this.hide(); - } - }, - - keyComplete: function keyComplete( e ) { - if ( this.isInput && e.keyCode === 13 ) { - this.complete( 'accepted' ); - this.$field.blur(); - } else if ( e.keyCode === 27 ) { - this.complete( 'cancelled' ); - this.$field.blur(); - } - }, - - destroy: function destroy() { - this.$element.remove(); - // remove any external bindings - $( document ).off( 'click.fu.placard.externalClick.' + this.clickStamp ); - // set input value attrbute - this.$element.find( 'input' ).each( function() { - $( this ).attr( 'value', $( this ).val() ); - } ); - // empty elements to return to original markup - // [none] - // return string of markup - return this.$element[ 0 ].outerHTML; - }, - - disable: function disable() { - this.$element.addClass( 'disabled' ); - this.$field.attr( 'disabled', 'disabled' ); - this.hide(); - }, - - applyEllipsis: function applyEllipsis() { - var field, i, str; - if ( this.options.applyEllipsis ) { - field = this.$field.get( 0 ); - if ( this.$field.is( 'input' ) ) { - field.scrollLeft = 0; - } else { - field.scrollTop = 0; - if ( field.clientHeight < field.scrollHeight ) { - this.actualValue = this.getValue(); - this.setValue( '', true ); - str = ''; - i = 0; - while ( field.clientHeight >= field.scrollHeight ) { - str += this.actualValue[ i ]; - this.setValue( str + '...', true ); - i++; - } - str = ( str.length > 0 ) ? str.substring( 0, str.length - 1 ) : ''; - this.setValue( str + '...', true ); - } - - } - - } - }, - - enable: function enable() { - this.$element.removeClass( 'disabled' ); - this.$field.removeAttr( 'disabled' ); - }, - - externalClickListener: function externalClickListener( e, force ) { - if ( force === true || this.isExternalClick( e ) ) { - this.complete( this.options.externalClickAction ); - } - }, - - getValue: function getValue() { - if ( this.actualValue !== null ) { - return this.actualValue; - } else { - return this.$field.val(); - } - }, - - hide: function hide() { - if ( !this.$element.hasClass( 'showing' ) ) { - return; - } - - this.$element.removeClass( 'showing' ); - this.applyEllipsis(); - $( document ).off( 'click.fu.placard.externalClick.' + this.clickStamp ); - this.$element.trigger( 'hidden.fu.placard' ); - }, - - isExternalClick: function isExternalClick( e ) { - var el = this.$element.get( 0 ); - var exceptions = this.options.externalClickExceptions || []; - var $originEl = $( e.target ); - var i, l; - - if ( e.target === el || $originEl.parents( '.placard:first' ).get( 0 ) === el ) { - return false; - } else { - for ( i = 0, l = exceptions.length; i < l; i++ ) { - if ( $originEl.is( exceptions[ i ] ) || $originEl.parents( exceptions[ i ] ).length > 0 ) { - return false; - } - - } - } - - return true; - }, - - /** - * setValue() sets the Placard triggering DOM element's display value - * - * @param {String} the value to be displayed - * @param {Boolean} If you want to explicitly suppress the application - * of ellipsis, pass `true`. This would typically only be - * done from internal functions (like `applyEllipsis`) - * that want to avoid circular logic. Otherwise, the - * value of the option applyEllipsis will be used. - * @return {Object} jQuery object representing the DOM element whose - * value was set - */ - setValue: function setValue( val, suppressEllipsis ) { - //if suppressEllipsis is undefined, check placards init settings - if ( typeof suppressEllipsis === "undefined" ) { - suppressEllipsis = !this.options.applyEllipsis; - } - - this.$field.val( val ); - - if ( !suppressEllipsis && !_isShown( this ) ) { - this.applyEllipsis(); - } - - return this.$field; - }, - - show: function show() { - if ( _isShown( this ) ) { - return; - } - if ( !_closeOtherPlacards() ) { - return; - } - - this.previousValue = this.$field.val(); - - if ( this.actualValue !== null ) { - this.setValue( this.actualValue ); - this.actualValue = null; - } - - this.showPlacard(); - }, - - showPlacard: function showPlacard() { - this.$element.addClass( 'showing' ); - - if ( this.$header.length > 0 ) { - this.$popup.css( 'top', '-' + this.$header.outerHeight( true ) + 'px' ); - } - - if ( this.$footer.length > 0 ) { - this.$popup.css( 'bottom', '-' + this.$footer.outerHeight( true ) + 'px' ); - } - - this.$element.trigger( 'shown.fu.placard' ); - this.clickStamp = new Date().getTime() + ( Math.floor( Math.random() * 100 ) + 1 ); - if ( !this.options.explicit ) { - $( document ).on( 'click.fu.placard.externalClick.' + this.clickStamp, $.proxy( this.externalClickListener, this ) ); - } - } - }; - - // PLACARD PLUGIN DEFINITION - - $.fn.placard = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.placard' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.placard', ( data = new Placard( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.placard.defaults = { - onAccept: undefined, - onCancel: undefined, - externalClickAction: 'cancelled', - externalClickExceptions: [], - explicit: false, - revertOnCancel: -1, //negative 1 will check for an '.placard-accept' button. Also can be set to true or false - applyEllipsis: false - }; - - $.fn.placard.Constructor = Placard; - - $.fn.placard.noConflict = function() { - $.fn.placard = old; - return this; - }; - - // DATA-API - - $( document ).on( 'focus.fu.placard.data-api', '[data-initialize=placard]', function( e ) { - var $control = $( e.target ).closest( '.placard' ); - if ( !$control.data( 'fu.placard' ) ) { - $control.placard( $control.data() ); - } - } ); - - // Must be domReady for AMD compatibility - $( function() { - $( '[data-initialize=placard]' ).each( function() { - var $this = $( this ); - if ( $this.data( 'fu.placard' ) ) return; - $this.placard( $this.data() ); - } ); - } ); - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Radio - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.radio; - - // RADIO CONSTRUCTOR AND PROTOTYPE - - var Radio = function( element, options ) { - this.options = $.extend( {}, $.fn.radio.defaults, options ); - - if ( element.tagName.toLowerCase() !== 'label' ) { - //console.log('initialize radio on the label that wraps the radio'); - return; - } - - // cache elements - this.$label = $( element ); - this.$radio = this.$label.find( 'input[type="radio"]' ); - this.groupName = this.$radio.attr( 'name' ); // don't cache group itself since items can be added programmatically - - // determine if a toggle container is specified - var containerSelector = this.$radio.attr( 'data-toggle' ); - this.$toggleContainer = $( containerSelector ); - - // handle internal events - this.$radio.on( 'change', $.proxy( this.itemchecked, this ) ); - - // set default state - this.setInitialState(); - }; - - Radio.prototype = { - - constructor: Radio, - - setInitialState: function() { - var $radio = this.$radio; - var $lbl = this.$label; - - // get current state of input - var checked = $radio.prop( 'checked' ); - var disabled = $radio.prop( 'disabled' ); - - // sync label class with input state - this.setCheckedState( $radio, checked ); - this.setDisabledState( $radio, disabled ); - }, - - resetGroup: function() { - var $radios = $( 'input[name="' + this.groupName + '"]' ); - $radios.each( function( index, item ) { - var $radio = $( item ); - var $lbl = $radio.parent(); - var containerSelector = $radio.attr( 'data-toggle' ); - var $containerToggle = $( containerSelector ); - - - $lbl.removeClass( 'checked' ); - $containerToggle.addClass( 'hidden' ); - } ); - }, - - setCheckedState: function( element, checked ) { - var $radio = element; - var $lbl = $radio.parent(); - var containerSelector = $radio.attr( 'data-toggle' ); - var $containerToggle = $( containerSelector ); - - if ( checked ) { - // reset all items in group - this.resetGroup(); - - $radio.prop( 'checked', true ); - $lbl.addClass( 'checked' ); - $containerToggle.removeClass( 'hide hidden' ); - $lbl.trigger( 'checked.fu.radio' ); - } else { - $radio.prop( 'checked', false ); - $lbl.removeClass( 'checked' ); - $containerToggle.addClass( 'hidden' ); - $lbl.trigger( 'unchecked.fu.radio' ); - } - - $lbl.trigger( 'changed.fu.radio', checked ); - }, - - setDisabledState: function( element, disabled ) { - var $radio = element; - var $lbl = this.$label; - - if ( disabled ) { - this.$radio.prop( 'disabled', true ); - $lbl.addClass( 'disabled' ); - $lbl.trigger( 'disabled.fu.radio' ); - } else { - this.$radio.prop( 'disabled', false ); - $lbl.removeClass( 'disabled' ); - $lbl.trigger( 'enabled.fu.radio' ); - } - }, - - itemchecked: function( evt ) { - var $radio = $( evt.target ); - this.setCheckedState( $radio, true ); - }, - - check: function() { - this.setCheckedState( this.$radio, true ); - }, - - uncheck: function() { - this.setCheckedState( this.$radio, false ); - }, - - isChecked: function() { - var checked = this.$radio.prop( 'checked' ); - return checked; - }, - - enable: function() { - this.setDisabledState( this.$radio, false ); - }, - - disable: function() { - this.setDisabledState( this.$radio, true ); - }, - - destroy: function() { - this.$label.remove(); - // remove any external bindings - // [none] - // empty elements to return to original markup - // [none] - return this.$label[ 0 ].outerHTML; - } - }; - - Radio.prototype.getValue = Radio.prototype.isChecked; - - // RADIO PLUGIN DEFINITION - - $.fn.radio = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.radio' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.radio', ( data = new Radio( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.radio.defaults = {}; - - $.fn.radio.Constructor = Radio; - - $.fn.radio.noConflict = function() { - $.fn.radio = old; - return this; - }; - - - // DATA-API - - $( document ).on( 'mouseover.fu.radio.data-api', '[data-initialize=radio]', function( e ) { - var $control = $( e.target ); - if ( !$control.data( 'fu.radio' ) ) { - $control.radio( $control.data() ); - } - } ); - - // Must be domReady for AMD compatibility - $( function() { - $( '[data-initialize=radio]' ).each( function() { - var $this = $( this ); - if ( !$this.data( 'fu.radio' ) ) { - $this.radio( $this.data() ); - } - } ); - } ); - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Search - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.search; - - // SEARCH CONSTRUCTOR AND PROTOTYPE - - var Search = function( element, options ) { - this.$element = $( element ); - this.options = $.extend( {}, $.fn.search.defaults, options ); - - this.$button = this.$element.find( 'button' ); - this.$input = this.$element.find( 'input' ); - this.$icon = this.$element.find( '.glyphicon' ); - - this.$button.on( 'click.fu.search', $.proxy( this.buttonclicked, this ) ); - this.$input.on( 'keydown.fu.search', $.proxy( this.keypress, this ) ); - this.$input.on( 'keyup.fu.search', $.proxy( this.keypressed, this ) ); - - this.activeSearch = ''; - }; - - Search.prototype = { - - constructor: Search, - - destroy: function() { - this.$element.remove(); - // any external bindings - // [none] - // set input value attrbute - this.$element.find( 'input' ).each( function() { - $( this ).attr( 'value', $( this ).val() ); - } ); - // empty elements to return to original markup - // [none] - // returns string of markup - return this.$element[ 0 ].outerHTML; - }, - - search: function( searchText ) { - if ( this.$icon.hasClass( 'glyphicon' ) ) { - this.$icon.removeClass( 'glyphicon-search' ).addClass( 'glyphicon-remove' ); - } - - this.activeSearch = searchText; - this.$element.addClass( 'searched' ); - this.$element.trigger( 'searched.fu.search', searchText ); - }, - - clear: function() { - if ( this.$icon.hasClass( 'glyphicon' ) ) { - this.$icon.removeClass( 'glyphicon-remove' ).addClass( 'glyphicon-search' ); - } - - this.activeSearch = ''; - this.$input.val( '' ); - this.$element.removeClass( 'searched' ); - this.$element.trigger( 'cleared.fu.search' ); - }, - - action: function() { - var val = this.$input.val(); - var inputEmptyOrUnchanged = ( val === '' || val === this.activeSearch ); - - if ( this.activeSearch && inputEmptyOrUnchanged ) { - this.clear(); - } else if ( val ) { - this.search( val ); - } - }, - - buttonclicked: function( e ) { - e.preventDefault(); - if ( $( e.currentTarget ).is( '.disabled, :disabled' ) ) return; - this.action(); - }, - - keypress: function( e ) { - if ( e.which === 13 ) { - e.preventDefault(); - } - }, - - keypressed: function( e ) { - var remove = 'glyphicon-remove'; - var search = 'glyphicon-search'; - var val; - - if ( e.which === 13 ) { - e.preventDefault(); - this.action(); - } else if ( e.which === 9 ) { - e.preventDefault(); - } else { - val = this.$input.val(); - - if ( val !== this.activeSearch || !val ) { - this.$icon.removeClass( remove ).addClass( search ); - if ( val ) { - this.$element.removeClass( 'searched' ); - } else if ( this.options.clearOnEmpty ) { - this.clear(); - } - - } else { - this.$icon.removeClass( search ).addClass( remove ); - } - - } - }, - - disable: function() { - this.$element.addClass( 'disabled' ); - this.$input.attr( 'disabled', 'disabled' ); - this.$button.addClass( 'disabled' ); - }, - - enable: function() { - this.$element.removeClass( 'disabled' ); - this.$input.removeAttr( 'disabled' ); - this.$button.removeClass( 'disabled' ); - } - }; - - - // SEARCH PLUGIN DEFINITION - - $.fn.search = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.search' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.search', ( data = new Search( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.search.defaults = { - clearOnEmpty: false - }; - - $.fn.search.Constructor = Search; - - $.fn.search.noConflict = function() { - $.fn.search = old; - return this; - }; - - - // DATA-API - - $( document ).on( 'mousedown.fu.search.data-api', '[data-initialize=search]', function( e ) { - var $control = $( e.target ).closest( '.search' ); - if ( !$control.data( 'fu.search' ) ) { - $control.search( $control.data() ); - } - } ); - - // Must be domReady for AMD compatibility - $( function() { - $( '[data-initialize=search]' ).each( function() { - var $this = $( this ); - if ( $this.data( 'fu.search' ) ) return; - $this.search( $this.data() ); - } ); - } ); - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Selectlist - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.selectlist; - // SELECT CONSTRUCTOR AND PROTOTYPE - - var Selectlist = function( element, options ) { - this.$element = $( element ); - this.options = $.extend( {}, $.fn.selectlist.defaults, options ); - - - this.$button = this.$element.find( '.btn.dropdown-toggle' ); - this.$hiddenField = this.$element.find( '.hidden-field' ); - this.$label = this.$element.find( '.selected-label' ); - this.$dropdownMenu = this.$element.find( '.dropdown-menu' ); - - this.$element.on( 'click.fu.selectlist', '.dropdown-menu a', $.proxy( this.itemClicked, this ) ); - this.setDefaultSelection(); - - if ( options.resize === 'auto' || this.$element.attr( 'data-resize' ) === 'auto' ) { - this.resize(); - } - - // if selectlist is empty or is one item, disable it - var items = this.$dropdownMenu.children( 'li' ); - if ( items.length === 0 ) { - this.disable(); - this.doSelect( $( this.options.emptyLabelHTML ) ); - } - - // support jumping focus to first letter in dropdown when key is pressed - this.$element.on( 'shown.bs.dropdown', function() { - var $this = $( this ); - // attach key listener when dropdown is shown - $( document ).on( 'keypress.fu.selectlist', function( e ) { - - // get the key that was pressed - var key = String.fromCharCode( e.which ); - // look the items to find the first item with the first character match and set focus - $this.find( "li" ).each( function( idx, item ) { - if ( $( item ).text().charAt( 0 ).toLowerCase() === key ) { - $( item ).children( 'a' ).focus(); - return false; - } - } ); - - } ); - } ); - - // unbind key event when dropdown is hidden - this.$element.on( 'hide.bs.dropdown', function() { - $( document ).off( 'keypress.fu.selectlist' ); - } ); - }; - - Selectlist.prototype = { - - constructor: Selectlist, - - destroy: function() { - this.$element.remove(); - // any external bindings - // [none] - // empty elements to return to original markup - // [none] - // returns string of markup - return this.$element[ 0 ].outerHTML; - }, - - doSelect: function( $item ) { - var $selectedItem; - this.$selectedItem = $selectedItem = $item; - - this.$hiddenField.val( this.$selectedItem.attr( 'data-value' ) ); - this.$label.html( $( this.$selectedItem.children()[ 0 ] ).html() ); - - // clear and set selected item to allow declarative init state - // unlike other controls, selectlist's value is stored internal, not in an input - this.$element.find( 'li' ).each( function() { - if ( $selectedItem.is( $( this ) ) ) { - $( this ).attr( 'data-selected', true ); - } else { - $( this ).removeData( 'selected' ).removeAttr( 'data-selected' ); - } - } ); - }, - - itemClicked: function( e ) { - this.$element.trigger( 'clicked.fu.selectlist', this.$selectedItem ); - - e.preventDefault(); - // ignore if a disabled item is clicked - if ( $( e.currentTarget ).parent( 'li' ).is( '.disabled, :disabled' ) ) { - return; - } - - // is clicked element different from currently selected element? - if ( !( $( e.target ).parent().is( this.$selectedItem ) ) ) { - this.itemChanged( e ); - } - - // return focus to control after selecting an option - this.$element.find( '.dropdown-toggle' ).focus(); - }, - - itemChanged: function( e ) { - //selectedItem needs to be <li> since the data is stored there, not in <a> - this.doSelect( $( e.target ).closest( 'li' ) ); - - // pass object including text and any data-attributes - // to onchange event - var data = this.selectedItem(); - // trigger changed event - this.$element.trigger( 'changed.fu.selectlist', data ); - }, - - resize: function() { - var width = 0; - var newWidth = 0; - var sizer = $( '<div/>' ).addClass( 'selectlist-sizer' ); - - - if ( Boolean( $( document ).find( 'html' ).hasClass( 'fuelux' ) ) ) { - // default behavior for fuel ux setup. means fuelux was a class on the html tag - $( document.body ).append( sizer ); - } else { - // fuelux is not a class on the html tag. So we'll look for the first one we find so the correct styles get applied to the sizer - $( '.fuelux:first' ).append( sizer ); - } - - sizer.append( this.$element.clone() ); - - this.$element.find( 'a' ).each( function() { - sizer.find( '.selected-label' ).text( $( this ).text() ); - newWidth = sizer.find( '.selectlist' ).outerWidth(); - newWidth = newWidth + sizer.find( '.sr-only' ).outerWidth(); - if ( newWidth > width ) { - width = newWidth; - } - } ); - - if ( width <= 1 ) { - return; - } - - this.$button.css( 'width', width ); - this.$dropdownMenu.css( 'width', width ); - - sizer.remove(); - }, - - selectedItem: function() { - var txt = this.$selectedItem.text(); - return $.extend( { - text: txt - }, this.$selectedItem.data() ); - }, - - selectByText: function( text ) { - var $item = $( [] ); - this.$element.find( 'li' ).each( function() { - if ( ( this.textContent || this.innerText || $( this ).text() || '' ).toLowerCase() === ( text || '' ).toLowerCase() ) { - $item = $( this ); - return false; - } - } ); - this.doSelect( $item ); - }, - - selectByValue: function( value ) { - var selector = 'li[data-value="' + value + '"]'; - this.selectBySelector( selector ); - }, - - selectByIndex: function( index ) { - // zero-based index - var selector = 'li:eq(' + index + ')'; - this.selectBySelector( selector ); - }, - - selectBySelector: function( selector ) { - var $item = this.$element.find( selector ); - this.doSelect( $item ); - }, - - setDefaultSelection: function() { - var $item = this.$element.find( 'li[data-selected=true]' ).eq( 0 ); - - if ( $item.length === 0 ) { - $item = this.$element.find( 'li' ).has( 'a' ).eq( 0 ); - } - - this.doSelect( $item ); - }, - - enable: function() { - this.$element.removeClass( 'disabled' ); - this.$button.removeClass( 'disabled' ); - }, - - disable: function() { - this.$element.addClass( 'disabled' ); - this.$button.addClass( 'disabled' ); - } - }; - - Selectlist.prototype.getValue = Selectlist.prototype.selectedItem; - - - // SELECT PLUGIN DEFINITION - - $.fn.selectlist = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.selectlist' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.selectlist', ( data = new Selectlist( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.selectlist.defaults = { - emptyLabelHTML: '<li data-value=""><a href="#">No items</a></li>' - }; - - $.fn.selectlist.Constructor = Selectlist; - - $.fn.selectlist.noConflict = function() { - $.fn.selectlist = old; - return this; - }; - - - // DATA-API - - $( document ).on( 'mousedown.fu.selectlist.data-api', '[data-initialize=selectlist]', function( e ) { - var $control = $( e.target ).closest( '.selectlist' ); - if ( !$control.data( 'fu.selectlist' ) ) { - $control.selectlist( $control.data() ); - } - } ); - - // Must be domReady for AMD compatibility - $( function() { - $( '[data-initialize=selectlist]' ).each( function() { - var $this = $( this ); - if ( !$this.data( 'fu.selectlist' ) ) { - $this.selectlist( $this.data() ); - } - } ); - } ); - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Spinbox - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.spinbox; - - // SPINBOX CONSTRUCTOR AND PROTOTYPE - - var Spinbox = function Spinbox( element, options ) { - this.$element = $( element ); - this.$element.find( '.btn' ).on( 'click', function( e ) { - //keep spinbox from submitting if they forgot to say type="button" on their spinner buttons - e.preventDefault(); - } ); - this.options = $.extend( {}, $.fn.spinbox.defaults, options ); - this.options.step = this.$element.data( 'step' ) || this.options.step; - - if ( this.options.value < this.options.min ) { - this.options.value = this.options.min; - } else if ( this.options.max < this.options.value ) { - this.options.value = this.options.max; - } - - this.$input = this.$element.find( '.spinbox-input' ); - this.$input.on( 'focusout.fu.spinbox', this.$input, $.proxy( this.change, this ) ); - this.$element.on( 'keydown.fu.spinbox', this.$input, $.proxy( this.keydown, this ) ); - this.$element.on( 'keyup.fu.spinbox', this.$input, $.proxy( this.keyup, this ) ); - - this.bindMousewheelListeners(); - this.mousewheelTimeout = {}; - - if ( this.options.hold ) { - this.$element.on( 'mousedown.fu.spinbox', '.spinbox-up', $.proxy( function() { - this.startSpin( true ); - }, this ) ); - this.$element.on( 'mouseup.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy( this.stopSpin, this ) ); - this.$element.on( 'mouseout.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy( this.stopSpin, this ) ); - this.$element.on( 'mousedown.fu.spinbox', '.spinbox-down', $.proxy( function() { - this.startSpin( false ); - }, this ) ); - } else { - this.$element.on( 'click.fu.spinbox', '.spinbox-up', $.proxy( function() { - this.step( true ); - }, this ) ); - this.$element.on( 'click.fu.spinbox', '.spinbox-down', $.proxy( function() { - this.step( false ); - }, this ) ); - } - - this.switches = { - count: 1, - enabled: true - }; - - if ( this.options.speed === 'medium' ) { - this.switches.speed = 300; - } else if ( this.options.speed === 'fast' ) { - this.switches.speed = 100; - } else { - this.switches.speed = 500; - } - - this.options.defaultUnit = _isUnitLegal( this.options.defaultUnit, this.options.units ) ? this.options.defaultUnit : ''; - this.unit = this.options.defaultUnit; - - this.lastValue = this.options.value; - - this.render(); - - if ( this.options.disabled ) { - this.disable(); - } - }; - - // Truly private methods - var _limitToStep = function _limitToStep( number, step ) { - return Math.round( number / step ) * step; - }; - - var _isUnitLegal = function _isUnitLegal( unit, validUnits ) { - var legalUnit = false; - var suspectUnit = unit.toLowerCase(); - - $.each( validUnits, function( i, validUnit ) { - validUnit = validUnit.toLowerCase(); - if ( suspectUnit === validUnit ) { - legalUnit = true; - return false; //break out of the loop - } - } ); - - return legalUnit; - }; - - var _applyLimits = function _applyLimits( value ) { - // if unreadable - if ( isNaN( parseFloat( value ) ) ) { - return value; - } - - // if not within range return the limit - if ( value > this.options.max ) { - if ( this.options.cycle ) { - value = this.options.min; - } else { - value = this.options.max; - } - } else if ( value < this.options.min ) { - if ( this.options.cycle ) { - value = this.options.max; - } else { - value = this.options.min; - } - } - - if ( this.options.limitToStep && this.options.step ) { - value = _limitToStep( value, this.options.step ); - - //force round direction so that it stays within bounds - if ( value > this.options.max ) { - value = value - this.options.step; - } else if ( value < this.options.min ) { - value = value + this.options.step; - } - } - - return value; - }; - - Spinbox.prototype = { - constructor: Spinbox, - - destroy: function destroy() { - this.$element.remove(); - // any external bindings - // [none] - // set input value attrbute - this.$element.find( 'input' ).each( function() { - $( this ).attr( 'value', $( this ).val() ); - } ); - // empty elements to return to original markup - // [none] - // returns string of markup - return this.$element[ 0 ].outerHTML; - }, - - render: function render() { - this.setValue( this.getDisplayValue() ); - }, - - change: function change() { - this.setValue( this.getDisplayValue() ); - - this.triggerChangedEvent(); - }, - - stopSpin: function stopSpin() { - if ( this.switches.timeout !== undefined ) { - clearTimeout( this.switches.timeout ); - this.switches.count = 1; - this.triggerChangedEvent(); - } - }, - - triggerChangedEvent: function triggerChangedEvent() { - var currentValue = this.getValue(); - if ( currentValue === this.lastValue ) return; - this.lastValue = currentValue; - - // Primary changed event - this.$element.trigger( 'changed.fu.spinbox', currentValue ); - }, - - startSpin: function startSpin( type ) { - if ( !this.options.disabled ) { - var divisor = this.switches.count; - - if ( divisor === 1 ) { - this.step( type ); - divisor = 1; - } else if ( divisor < 3 ) { - divisor = 1.5; - } else if ( divisor < 8 ) { - divisor = 2.5; - } else { - divisor = 4; - } - - this.switches.timeout = setTimeout( $.proxy( function() { - this.iterate( type ); - }, this ), this.switches.speed / divisor ); - this.switches.count++; - } - }, - - iterate: function iterate( type ) { - this.step( type ); - this.startSpin( type ); - }, - - step: function step( isIncrease ) { - //refresh value from display before trying to increment in case they have just been typing before clicking the nubbins - this.setValue( this.getDisplayValue() ); - var newVal; - - if ( isIncrease ) { - newVal = this.options.value + this.options.step; - } else { - newVal = this.options.value - this.options.step; - } - - newVal = newVal.toFixed( 5 ); - - this.setValue( newVal + this.unit ); - }, - - getDisplayValue: function getDisplayValue() { - var inputValue = this.parseInput( this.$input.val() ); - var value = ( !!inputValue ) ? inputValue : this.options.value; - return value; - }, - - setDisplayValue: function setDisplayValue( value ) { - this.$input.val( value ); - }, - - getValue: function getValue() { - var val = this.options.value; - if ( this.options.decimalMark !== '.' ) { - val = ( val + '' ).split( '.' ).join( this.options.decimalMark ); - } - return val + this.unit; - }, - - setValue: function setValue( val ) { - //remove any i18n on the number - if ( this.options.decimalMark !== '.' ) { - val = this.parseInput( val ); - } - - //are we dealing with united numbers? - if ( typeof val !== "number" ) { - var potentialUnit = val.replace( /[0-9.-]/g, '' ); - //make sure unit is valid, or else drop it in favor of current unit, or default unit (potentially nothing) - this.unit = _isUnitLegal( potentialUnit, this.options.units ) ? potentialUnit : this.options.defaultUnit; - } - - var intVal = this.getIntValue( val ); - - //make sure we are dealing with a number - if ( isNaN( intVal ) && !isFinite( intVal ) ) { - return this.setValue( this.options.value ); - } - - //conform - intVal = _applyLimits.call( this, intVal ); - - //cache the pure int value - this.options.value = intVal; - - //prepare number for display - val = intVal + this.unit; - - if ( this.options.decimalMark !== '.' ) { - val = ( val + '' ).split( '.' ).join( this.options.decimalMark ); - } - - //display number - this.setDisplayValue( val ); - - return this; - }, - - value: function value( val ) { - if ( val || val === 0 ) { - return this.setValue( val ); - } else { - return this.getValue(); - } - }, - - parseInput: function parseInput( value ) { - value = ( value + '' ).split( this.options.decimalMark ).join( '.' ); - - return value; - }, - - getIntValue: function getIntValue( value ) { - //if they didn't pass in a number, try and get the number - value = ( typeof value === "undefined" ) ? this.getValue() : value; - // if there still isn't a number, abort - if ( typeof value === "undefined" ) { - return; - } - - if ( typeof value === 'string' ) { - value = this.parseInput( value ); - } - - value = parseFloat( value, 10 ); - - return value; - }, - - disable: function disable() { - this.options.disabled = true; - this.$element.addClass( 'disabled' ); - this.$input.attr( 'disabled', '' ); - this.$element.find( 'button' ).addClass( 'disabled' ); - }, - - enable: function enable() { - this.options.disabled = false; - this.$element.removeClass( 'disabled' ); - this.$input.removeAttr( 'disabled' ); - this.$element.find( 'button' ).removeClass( 'disabled' ); - }, - - keydown: function keydown( event ) { - var keyCode = event.keyCode; - if ( keyCode === 38 ) { - this.step( true ); - } else if ( keyCode === 40 ) { - this.step( false ); - } else if ( keyCode === 13 ) { - this.change(); - } - }, - - keyup: function keyup( event ) { - var keyCode = event.keyCode; - - if ( keyCode === 38 || keyCode === 40 ) { - this.triggerChangedEvent(); - } - }, - - bindMousewheelListeners: function bindMousewheelListeners() { - var inputEl = this.$input.get( 0 ); - if ( inputEl.addEventListener ) { - //IE 9, Chrome, Safari, Opera - inputEl.addEventListener( 'mousewheel', $.proxy( this.mousewheelHandler, this ), false ); - // Firefox - inputEl.addEventListener( 'DOMMouseScroll', $.proxy( this.mousewheelHandler, this ), false ); - } else { - // IE <9 - inputEl.attachEvent( 'onmousewheel', $.proxy( this.mousewheelHandler, this ) ); - } - }, - - mousewheelHandler: function mousewheelHandler( event ) { - if ( !this.options.disabled ) { - var e = window.event || event; // old IE support - var delta = Math.max( -1, Math.min( 1, ( e.wheelDelta || -e.detail ) ) ); - var self = this; - - clearTimeout( this.mousewheelTimeout ); - this.mousewheelTimeout = setTimeout( function() { - self.triggerChangedEvent(); - }, 300 ); - - if ( delta < 0 ) { - this.step( true ); - } else { - this.step( false ); - } - - if ( e.preventDefault ) { - e.preventDefault(); - } else { - e.returnValue = false; - } - - return false; - } - } - }; - - - // SPINBOX PLUGIN DEFINITION - - $.fn.spinbox = function spinbox( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.spinbox' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.spinbox', ( data = new Spinbox( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - // value needs to be 0 for this.render(); - $.fn.spinbox.defaults = { - value: 0, - min: 0, - max: 999, - step: 1, - hold: true, - speed: 'medium', - disabled: false, - cycle: false, - units: [], - decimalMark: '.', - defaultUnit: '', - limitToStep: false - }; - - $.fn.spinbox.Constructor = Spinbox; - - $.fn.spinbox.noConflict = function noConflict() { - $.fn.spinbox = old; - return this; - }; - - - // DATA-API - - $( document ).on( 'mousedown.fu.spinbox.data-api', '[data-initialize=spinbox]', function( e ) { - var $control = $( e.target ).closest( '.spinbox' ); - if ( !$control.data( 'fu.spinbox' ) ) { - $control.spinbox( $control.data() ); - } - } ); - - // Must be domReady for AMD compatibility - $( function() { - $( '[data-initialize=spinbox]' ).each( function() { - var $this = $( this ); - if ( !$this.data( 'fu.spinbox' ) ) { - $this.spinbox( $this.data() ); - } - } ); - } ); - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Tree - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.tree; - - // TREE CONSTRUCTOR AND PROTOTYPE - - var Tree = function Tree( element, options ) { - this.$element = $( element ); - this.options = $.extend( {}, $.fn.tree.defaults, options ); - - if ( this.options.itemSelect ) { - this.$element.on( 'click.fu.tree', '.tree-item', $.proxy( function( ev ) { - this.selectItem( ev.currentTarget ); - }, this ) ); - } - - this.$element.on( 'click.fu.tree', '.tree-branch-name', $.proxy( function( ev ) { - this.toggleFolder( ev.currentTarget ); - }, this ) ); - - // folderSelect default is true - if ( this.options.folderSelect ) { - this.$element.addClass( 'tree-folder-select' ); - this.$element.off( 'click.fu.tree', '.tree-branch-name' ); - this.$element.on( 'click.fu.tree', '.icon-caret', $.proxy( function( ev ) { - this.toggleFolder( $( ev.currentTarget ).parent() ); - }, this ) ); - this.$element.on( 'click.fu.tree', '.tree-branch-name', $.proxy( function( ev ) { - this.selectFolder( $( ev.currentTarget ) ); - }, this ) ); - } - - this.render(); - }; - - Tree.prototype = { - constructor: Tree, - - deselectAll: function deselectAll( nodes ) { - // clear all child tree nodes and style as deselected - nodes = nodes || this.$element; - var $selectedElements = $( nodes ).find( '.tree-selected' ); - $selectedElements.each( function( index, element ) { - styleNodeDeselected( $( element ), $( element ).find( '.glyphicon' ) ); - } ); - return $selectedElements; - }, - - destroy: function destroy() { - // any external bindings [none] - // empty elements to return to original markup - this.$element.find( "li:not([data-template])" ).remove(); - - this.$element.remove(); - // returns string of markup - return this.$element[ 0 ].outerHTML; - }, - - render: function render() { - this.populate( this.$element ); - }, - - populate: function populate( $el ) { - var self = this; - var $parent = ( $el.hasClass( 'tree' ) ) ? $el : $el.parent(); - var loader = $parent.find( '.tree-loader:eq(0)' ); - var treeData = $parent.data(); - - loader.removeClass( 'hide hidden' ); // hide is deprecated - this.options.dataSource( treeData ? treeData : {}, function( items ) { - loader.addClass( 'hidden' ); - - $.each( items.data, function( index, value ) { - var $entity; - - if ( value.type === 'folder' ) { - $entity = self.$element.find( '[data-template=treebranch]:eq(0)' ).clone().removeClass( 'hide hidden' ).removeData( 'template' ); // hide is deprecated - $entity.data( value ); - $entity.find( '.tree-branch-name > .tree-label' ).html( value.text || value.name ); - } else if ( value.type === 'item' ) { - $entity = self.$element.find( '[data-template=treeitem]:eq(0)' ).clone().removeClass( 'hide hidden' ).removeData( 'template' ); // hide is deprecated - $entity.find( '.tree-item-name > .tree-label' ).html( value.text || value.name ); - $entity.data( value ); - } - - // Decorate $entity with data or other attributes making the - // element easily accessable with libraries like jQuery. - // - // Values are contained within the object returned - // for folders and items as attr: - // - // { - // text: "An Item", - // type: 'item', - // attr = { - // 'classes': 'required-item red-text', - // 'data-parent': parentId, - // 'guid': guid, - // 'id': guid - // } - // }; - // - // the "name" attribute is also supported but is deprecated for "text". - - // add attributes to tree-branch or tree-item - var attr = value.attr || value.dataAttributes || []; - $.each( attr, function( key, value ) { - switch ( key ) { - case 'cssClass': - case 'class': - case 'className': - $entity.addClass( value ); - break; - - // allow custom icons - case 'data-icon': - $entity.find( '.icon-item' ).removeClass().addClass( 'icon-item ' + value ); - $entity.attr( key, value ); - break; - - // ARIA support - case 'id': - $entity.attr( key, value ); - $entity.attr( 'aria-labelledby', value + '-label' ); - $entity.find( '.tree-branch-name > .tree-label' ).attr( 'id', value + '-label' ); - break; - - // style, data-* - default: - $entity.attr( key, value ); - break; - } - } ); - - // add child nodes - if ( $el.hasClass( 'tree-branch-header' ) ) { - $parent.find( '.tree-branch-children:eq(0)' ).append( $entity ); - } else { - $el.append( $entity ); - } - } ); - - // return newly populated folder - self.$element.trigger( 'loaded.fu.tree', $parent ); - } ); - }, - - selectTreeNode: function selectItem( clickedElement, nodeType ) { - var clicked = {}; // object for clicked element - clicked.$element = $( clickedElement ); - - var selected = {}; // object for selected elements - selected.$elements = this.$element.find( '.tree-selected' ); - selected.dataForEvent = []; - - // determine clicked element and it's icon - if ( nodeType === 'folder' ) { - // make the clicked.$element the container branch - clicked.$element = clicked.$element.closest( '.tree-branch' ); - clicked.$icon = clicked.$element.find( '.icon-folder' ); - } else { - clicked.$icon = clicked.$element.find( '.icon-item' ); - } - clicked.elementData = clicked.$element.data(); - - // the below functions pass objects by copy/reference and use modified object in this function - if ( this.options.multiSelect ) { - multiSelectSyncNodes( this, clicked, selected ); - } else { - singleSelectSyncNodes( this, clicked, selected ); - } - - // all done with the DOM, now fire events - this.$element.trigger( selected.eventType + '.fu.tree', { - target: clicked.elementData, - selected: selected.dataForEvent - } ); - - clicked.$element.trigger( 'updated.fu.tree', { - selected: selected.dataForEvent, - item: clicked.$element, - eventType: selected.eventType - } ); - }, - - discloseFolder: function discloseFolder( el ) { - var $el = $( el ); - - var $branch = $el.closest( '.tree-branch' ); - var $treeFolderContent = $branch.find( '.tree-branch-children' ); - var $treeFolderContentFirstChild = $treeFolderContent.eq( 0 ); - - //take care of the styles - $branch.addClass( 'tree-open' ); - $branch.attr( 'aria-expanded', 'true' ); - $treeFolderContentFirstChild.removeClass( 'hide hidden' ); // hide is deprecated - $branch.find( '> .tree-branch-header .icon-folder' ).eq( 0 ) - .removeClass( 'glyphicon-folder-close' ) - .addClass( 'glyphicon-folder-open' ); - - //add the children to the folder - if ( !$treeFolderContent.children().length ) { - this.populate( $treeFolderContent ); - } - - this.$element.trigger( 'disclosedFolder.fu.tree', $branch.data() ); - }, - - closeFolder: function closeFolder( el ) { - var $el = $( el ); - var $branch = $el.closest( '.tree-branch' ); - var $treeFolderContent = $branch.find( '.tree-branch-children' ); - var $treeFolderContentFirstChild = $treeFolderContent.eq( 0 ); - - //take care of the styles - $branch.removeClass( 'tree-open' ); - $branch.attr( 'aria-expanded', 'false' ); - $treeFolderContentFirstChild.addClass( 'hidden' ); - $branch.find( '> .tree-branch-header .icon-folder' ).eq( 0 ) - .removeClass( 'glyphicon-folder-open' ) - .addClass( 'glyphicon-folder-close' ); - - // remove chidren if no cache - if ( !this.options.cacheItems ) { - $treeFolderContentFirstChild.empty(); - } - - this.$element.trigger( 'closed.fu.tree', $branch.data() ); - }, - - toggleFolder: function toggleFolder( el ) { - var $el = $( el ); - - if ( $el.find( '.glyphicon-folder-close' ).length ) { - this.discloseFolder( el ); - } else if ( $el.find( '.glyphicon-folder-open' ).length ) { - this.closeFolder( el ); - } - }, - - selectFolder: function selectFolder( el ) { - if ( this.options.folderSelect ) { - this.selectTreeNode( el, 'folder' ); - } - }, - - selectItem: function selectItem( el ) { - if ( this.options.itemSelect ) { - this.selectTreeNode( el, 'item' ); - } - }, - - selectedItems: function selectedItems() { - var $sel = this.$element.find( '.tree-selected' ); - var data = []; - - $.each( $sel, function( index, value ) { - data.push( $( value ).data() ); - } ); - return data; - }, - - // collapses open folders - collapse: function collapse() { - var self = this; - var reportedClosed = []; - - var closedReported = function closedReported( event, closed ) { - reportedClosed.push( closed ); - - // hide is deprecated - if ( self.$element.find( ".tree-branch.tree-open:not('.hidden, .hide')" ).length === 0 ) { - self.$element.trigger( 'closedAll.fu.tree', { - tree: self.$element, - reportedClosed: reportedClosed - } ); - self.$element.off( 'loaded.fu.tree', self.$element, closedReported ); - } - }; - - //trigger callback when all folders have reported closed - self.$element.on( 'closed.fu.tree', closedReported ); - - self.$element.find( ".tree-branch.tree-open:not('.hidden, .hide')" ).each( function() { - self.closeFolder( this ); - } ); - }, - - //disclose visible will only disclose visible tree folders - discloseVisible: function discloseVisible() { - var self = this; - - var $openableFolders = self.$element.find( ".tree-branch:not('.tree-open, .hidden, .hide')" ); - var reportedOpened = []; - - var openReported = function openReported( event, opened ) { - reportedOpened.push( opened ); - - if ( reportedOpened.length === $openableFolders.length ) { - self.$element.trigger( 'disclosedVisible.fu.tree', { - tree: self.$element, - reportedOpened: reportedOpened - } ); - /* - * Unbind the `openReported` event. `discloseAll` may be running and we want to reset this - * method for the next iteration. - */ - self.$element.off( 'loaded.fu.tree', self.$element, openReported ); - } - }; - - //trigger callback when all folders have reported opened - self.$element.on( 'loaded.fu.tree', openReported ); - - // open all visible folders - self.$element.find( ".tree-branch:not('.tree-open, .hidden, .hide')" ).each( function triggerOpen() { - self.discloseFolder( $( this ).find( '.tree-branch-header' ) ); - } ); - }, - - /** - * Disclose all will keep listening for `loaded.fu.tree` and if `$(tree-el).data('ignore-disclosures-limit')` - * is `true` (defaults to `true`) it will attempt to disclose any new closed folders than were - * loaded in during the last disclosure. - */ - discloseAll: function discloseAll() { - var self = this; - - //first time - if ( typeof self.$element.data( 'disclosures' ) === 'undefined' ) { - self.$element.data( 'disclosures', 0 ); - } - - var isExceededLimit = ( self.options.disclosuresUpperLimit >= 1 && self.$element.data( 'disclosures' ) >= self.options.disclosuresUpperLimit ); - var isAllDisclosed = self.$element.find( ".tree-branch:not('.tree-open, .hidden, .hide')" ).length === 0; - - - if ( !isAllDisclosed ) { - if ( isExceededLimit ) { - self.$element.trigger( 'exceededDisclosuresLimit.fu.tree', { - tree: self.$element, - disclosures: self.$element.data( 'disclosures' ) - } ); - - /* - * If you've exceeded the limit, the loop will be killed unless you - * explicitly ignore the limit and start the loop again: - * - * $tree.one('exceededDisclosuresLimit.fu.tree', function () { - * $tree.data('ignore-disclosures-limit', true); - * $tree.tree('discloseAll'); - * }); - */ - if ( !self.$element.data( 'ignore-disclosures-limit' ) ) { - return; - } - - } - - self.$element.data( 'disclosures', self.$element.data( 'disclosures' ) + 1 ); - - /* - * A new branch that is closed might be loaded in, make sure those get handled too. - * This attachment needs to occur before calling `discloseVisible` to make sure that - * if the execution of `discloseVisible` happens _super fast_ (as it does in our QUnit tests - * this will still be called. However, make sure this only gets called _once_, because - * otherwise, every single time we go through this loop, _another_ event will be bound - * and then when the trigger happens, this will fire N times, where N equals the number - * of recursive `discloseAll` executions (instead of just one) - */ - self.$element.one( 'disclosedVisible.fu.tree', function() { - self.discloseAll(); - } ); - - /* - * If the page is very fast, calling this first will cause `disclosedVisible.fu.tree` to not - * be bound in time to be called, so, we need to call this last so that the things bound - * and triggered above can have time to take place before the next execution of the - * `discloseAll` method. - */ - self.discloseVisible(); - } else { - self.$element.trigger( 'disclosedAll.fu.tree', { - tree: self.$element, - disclosures: self.$element.data( 'disclosures' ) - } ); - - //if `cacheItems` is false, and they call closeAll, the data is trashed and therefore - //disclosures needs to accurately reflect that - if ( !self.options.cacheItems ) { - self.$element.one( 'closeAll.fu.tree', function() { - self.$element.data( 'disclosures', 0 ); - } ); - } - - } - } - }; - - - // ALIASES - - //alias for collapse for consistency. "Collapse" is an ambiguous term (collapse what? All? One specific branch?) - Tree.prototype.closeAll = Tree.prototype.collapse; - //alias for backwards compatibility because there's no reason not to. - Tree.prototype.openFolder = Tree.prototype.discloseFolder; - //For library consistency - Tree.prototype.getValue = Tree.prototype.selectedItems; - - // PRIVATE FUNCTIONS - - function styleNodeSelected( $element, $icon ) { - $element.addClass( 'tree-selected' ); - if ( $element.data( 'type' ) === 'item' && $icon.hasClass( 'fueluxicon-bullet' ) ) { - $icon.removeClass( 'fueluxicon-bullet' ).addClass( 'glyphicon-ok' ); // make checkmark - } - } - - function styleNodeDeselected( $element, $icon ) { - $element.removeClass( 'tree-selected' ); - if ( $element.data( 'type' ) === 'item' && $icon.hasClass( 'glyphicon-ok' ) ) { - $icon.removeClass( 'glyphicon-ok' ).addClass( 'fueluxicon-bullet' ); // make bullet - } - } - - function multiSelectSyncNodes( self, clicked, selected ) { - // search for currently selected and add to selected data list if needed - $.each( selected.$elements, function( index, element ) { - var $element = $( element ); - if ( $element[ 0 ] !== clicked.$element[ 0 ] ) { - selected.dataForEvent.push( $( $element ).data() ); - } - } ); - - if ( clicked.$element.hasClass( 'tree-selected' ) ) { - styleNodeDeselected( clicked.$element, clicked.$icon ); - // set event data - selected.eventType = 'deselected'; - } else { - styleNodeSelected( clicked.$element, clicked.$icon ); - // set event data - selected.eventType = 'selected'; - selected.dataForEvent.push( clicked.elementData ); - } - } - - function singleSelectSyncNodes( self, clicked, selected ) { - // element is not currently selected - if ( selected.$elements[ 0 ] !== clicked.$element[ 0 ] ) { - var clearedElements = self.deselectAll( self.$element ); - styleNodeSelected( clicked.$element, clicked.$icon ); - // set event data - selected.eventType = 'selected'; - selected.dataForEvent = [ clicked.elementData ]; - } else { - styleNodeDeselected( clicked.$element, clicked.$icon ); - // set event data - selected.eventType = 'deselected'; - selected.dataForEvent = []; - } - } - - - // TREE PLUGIN DEFINITION - - $.fn.tree = function tree( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.tree' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.tree', ( data = new Tree( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.tree.defaults = { - dataSource: function dataSource( options, callback ) {}, - multiSelect: false, - cacheItems: true, - folderSelect: true, - itemSelect: true, - /* - * How many times `discloseAll` should be called before a stopping and firing - * an `exceededDisclosuresLimit` event. You can force it to continue by - * listening for this event, setting `ignore-disclosures-limit` to `true` and - * starting `discloseAll` back up again. This lets you make more decisions - * about if/when/how/why/how many times `discloseAll` will be started back - * up after it exceeds the limit. - * - * $tree.one('exceededDisclosuresLimit.fu.tree', function () { - * $tree.data('ignore-disclosures-limit', true); - * $tree.tree('discloseAll'); - * }); - * - * `disclusuresUpperLimit` defaults to `0`, so by default this trigger - * will never fire. The true hard the upper limit is the browser's - * ability to load new items (i.e. it will keep loading until the browser - * falls over and dies). On the Fuel UX `index.html` page, the point at - * which the page became super slow (enough to seem almost unresponsive) - * was `4`, meaning 256 folders had been opened, and 1024 were attempting to open. - */ - disclosuresUpperLimit: 0 - }; - - $.fn.tree.Constructor = Tree; - - $.fn.tree.noConflict = function() { - $.fn.tree = old; - return this; - }; - - - // NO DATA-API DUE TO NEED OF DATA-SOURCE - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Wizard - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.wizard; - - // WIZARD CONSTRUCTOR AND PROTOTYPE - - var Wizard = function( element, options ) { - var kids; - - this.$element = $( element ); - this.options = $.extend( {}, $.fn.wizard.defaults, options ); - this.options.disablePreviousStep = ( this.$element.attr( 'data-restrict' ) === 'previous' ) ? true : this.options.disablePreviousStep; - this.currentStep = this.options.selectedItem.step; - this.numSteps = this.$element.find( '.steps li' ).length; - this.$prevBtn = this.$element.find( 'button.btn-prev' ); - this.$nextBtn = this.$element.find( 'button.btn-next' ); - - // maintains backwards compatibility with < 3.8, will be removed in the future - if ( this.$element.children( '.steps-container' ).length === 0 ) { - this.$element.addClass( 'no-steps-container' ); - if ( window && window.console && window.console.warn ) { - window.console.warn( 'please update your wizard markup to include ".steps-container" as seen in http://getfuelux.com/javascript.html#wizard-usage-markup' ); - } - } - - kids = this.$nextBtn.children().detach(); - this.nextText = $.trim( this.$nextBtn.text() ); - this.$nextBtn.append( kids ); - - // handle events - this.$prevBtn.on( 'click.fu.wizard', $.proxy( this.previous, this ) ); - this.$nextBtn.on( 'click.fu.wizard', $.proxy( this.next, this ) ); - this.$element.on( 'click.fu.wizard', 'li.complete', $.proxy( this.stepclicked, this ) ); - - this.selectedItem( this.options.selectedItem ); - - if ( this.options.disablePreviousStep ) { - this.$prevBtn.attr( 'disabled', true ); - this.$element.find( '.steps' ).addClass( 'previous-disabled' ); - } - }; - - Wizard.prototype = { - - constructor: Wizard, - - destroy: function() { - this.$element.remove(); - // any external bindings [none] - // empty elements to return to original markup [none] - // returns string of markup - return this.$element[ 0 ].outerHTML; - }, - - //index is 1 based - //second parameter can be array of objects [{ ... }, { ... }] or you can pass n additional objects as args - //object structure is as follows (all params are optional): { badge: '', label: '', pane: '' } - addSteps: function( index ) { - var items = [].slice.call( arguments ).slice( 1 ); - var $steps = this.$element.find( '.steps' ); - var $stepContent = this.$element.find( '.step-content' ); - var i, l, $pane, $startPane, $startStep, $step; - - index = ( index === -1 || ( index > ( this.numSteps + 1 ) ) ) ? this.numSteps + 1 : index; - if ( items[ 0 ] instanceof Array ) { - items = items[ 0 ]; - } - - $startStep = $steps.find( 'li:nth-child(' + index + ')' ); - $startPane = $stepContent.find( '.step-pane:nth-child(' + index + ')' ); - if ( $startStep.length < 1 ) { - $startStep = null; - } - - for ( i = 0, l = items.length; i < l; i++ ) { - $step = $( '<li data-step="' + index + '"><span class="badge badge-info"></span></li>' ); - $step.append( items[ i ].label || '' ).append( '<span class="chevron"></span>' ); - $step.find( '.badge' ).append( items[ i ].badge || index ); - - $pane = $( '<div class="step-pane" data-step="' + index + '"></div>' ); - $pane.append( items[ i ].pane || '' ); - - if ( !$startStep ) { - $steps.append( $step ); - $stepContent.append( $pane ); - } else { - $startStep.before( $step ); - $startPane.before( $pane ); - } - - index++; - } - - this.syncSteps(); - this.numSteps = $steps.find( 'li' ).length; - this.setState(); - }, - - //index is 1 based, howMany is number to remove - removeSteps: function( index, howMany ) { - var action = 'nextAll'; - var i = 0; - var $steps = this.$element.find( '.steps' ); - var $stepContent = this.$element.find( '.step-content' ); - var $start; - - howMany = ( howMany !== undefined ) ? howMany : 1; - - if ( index > $steps.find( 'li' ).length ) { - $start = $steps.find( 'li:last' ); - } else { - $start = $steps.find( 'li:nth-child(' + index + ')' ).prev(); - if ( $start.length < 1 ) { - action = 'children'; - $start = $steps; - } - - } - - $start[ action ]().each( function() { - var item = $( this ); - var step = item.attr( 'data-step' ); - if ( i < howMany ) { - item.remove(); - $stepContent.find( '.step-pane[data-step="' + step + '"]:first' ).remove(); - } else { - return false; - } - - i++; - } ); - - this.syncSteps(); - this.numSteps = $steps.find( 'li' ).length; - this.setState(); - }, - - setState: function() { - var canMovePrev = ( this.currentStep > 1 ); //remember, steps index is 1 based... - var isFirstStep = ( this.currentStep === 1 ); - var isLastStep = ( this.currentStep === this.numSteps ); - - // disable buttons based on current step - if ( !this.options.disablePreviousStep ) { - this.$prevBtn.attr( 'disabled', ( isFirstStep === true || canMovePrev === false ) ); - } - - // change button text of last step, if specified - var last = this.$nextBtn.attr( 'data-last' ); - if ( last ) { - this.lastText = last; - // replace text - var text = this.nextText; - if ( isLastStep === true ) { - text = this.lastText; - // add status class to wizard - this.$element.addClass( 'complete' ); - } else { - this.$element.removeClass( 'complete' ); - } - - var kids = this.$nextBtn.children().detach(); - this.$nextBtn.text( text ).append( kids ); - } - - // reset classes for all steps - var $steps = this.$element.find( '.steps li' ); - $steps.removeClass( 'active' ).removeClass( 'complete' ); - $steps.find( 'span.badge' ).removeClass( 'badge-info' ).removeClass( 'badge-success' ); - - // set class for all previous steps - var prevSelector = '.steps li:lt(' + ( this.currentStep - 1 ) + ')'; - var $prevSteps = this.$element.find( prevSelector ); - $prevSteps.addClass( 'complete' ); - $prevSteps.find( 'span.badge' ).addClass( 'badge-success' ); - - // set class for current step - var currentSelector = '.steps li:eq(' + ( this.currentStep - 1 ) + ')'; - var $currentStep = this.$element.find( currentSelector ); - $currentStep.addClass( 'active' ); - $currentStep.find( 'span.badge' ).addClass( 'badge-info' ); - - // set display of target element - var $stepContent = this.$element.find( '.step-content' ); - var target = $currentStep.attr( 'data-step' ); - $stepContent.find( '.step-pane' ).removeClass( 'active' ); - $stepContent.find( '.step-pane[data-step="' + target + '"]:first' ).addClass( 'active' ); - - // reset the wizard position to the left - this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: 0' ); - - // check if the steps are wider than the container div - var totalWidth = 0; - this.$element.find( '.steps > li' ).each( function() { - totalWidth += $( this ).outerWidth(); - } ); - var containerWidth = 0; - if ( this.$element.find( '.actions' ).length ) { - containerWidth = this.$element.width() - this.$element.find( '.actions' ).first().outerWidth(); - } else { - containerWidth = this.$element.width(); - } - - if ( totalWidth > containerWidth ) { - // set the position so that the last step is on the right - var newMargin = totalWidth - containerWidth; - this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: -' + newMargin + 'px' ); - - // set the position so that the active step is in a good - // position if it has been moved out of view - if ( this.$element.find( 'li.active' ).first().position().left < 200 ) { - newMargin += this.$element.find( 'li.active' ).first().position().left - 200; - if ( newMargin < 1 ) { - this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: 0' ); - } else { - this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: -' + newMargin + 'px' ); - } - - } - - } - - // only fire changed event after initializing - if ( typeof( this.initialized ) !== 'undefined' ) { - var e = $.Event( 'changed.fu.wizard' ); - this.$element.trigger( e, { - step: this.currentStep - } ); - } - - this.initialized = true; - }, - - stepclicked: function( e ) { - var li = $( e.currentTarget ); - var index = this.$element.find( '.steps li' ).index( li ); - - if ( index < this.currentStep && this.options.disablePreviousStep ) { //enforce restrictions - return; - } else { - var evt = $.Event( 'stepclicked.fu.wizard' ); - this.$element.trigger( evt, { - step: index + 1 - } ); - if ( evt.isDefaultPrevented() ) { - return; - } - - this.currentStep = ( index + 1 ); - this.setState(); - } - }, - - syncSteps: function() { - var i = 1; - var $steps = this.$element.find( '.steps' ); - var $stepContent = this.$element.find( '.step-content' ); - - $steps.children().each( function() { - var item = $( this ); - var badge = item.find( '.badge' ); - var step = item.attr( 'data-step' ); - - if ( !isNaN( parseInt( badge.html(), 10 ) ) ) { - badge.html( i ); - } - - item.attr( 'data-step', i ); - $stepContent.find( '.step-pane[data-step="' + step + '"]:last' ).attr( 'data-step', i ); - i++; - } ); - }, - - previous: function() { - if ( this.options.disablePreviousStep || this.currentStep === 1 ) { - return; - } - - var e = $.Event( 'actionclicked.fu.wizard' ); - this.$element.trigger( e, { - step: this.currentStep, - direction: 'previous' - } ); - if ( e.isDefaultPrevented() ) { - return; - } // don't increment ...what? Why? - - this.currentStep -= 1; - this.setState(); - - // only set focus if focus is still on the $nextBtn (avoid stomping on a focus set programmatically in actionclicked callback) - if ( this.$prevBtn.is( ':focus' ) ) { - var firstFormField = this.$element.find( '.active' ).find( 'input, select, textarea' )[ 0 ]; - - if ( typeof firstFormField !== 'undefined' ) { - // allow user to start typing immediately instead of having to click on the form field. - $( firstFormField ).focus(); - } else if ( this.$element.find( '.active input:first' ).length === 0 && this.$prevBtn.is( ':disabled' ) ) { - //only set focus on a button as the last resort if no form fields exist and the just clicked button is now disabled - this.$nextBtn.focus(); - } - - } - }, - - next: function() { - var e = $.Event( 'actionclicked.fu.wizard' ); - this.$element.trigger( e, { - step: this.currentStep, - direction: 'next' - } ); - if ( e.isDefaultPrevented() ) { - return; - } // respect preventDefault in case dev has attached validation to step and wants to stop propagation based on it. - - if ( this.currentStep < this.numSteps ) { - this.currentStep += 1; - this.setState(); - } else { //is last step - this.$element.trigger( 'finished.fu.wizard' ); - } - - // only set focus if focus is still on the $nextBtn (avoid stomping on a focus set programmatically in actionclicked callback) - if ( this.$nextBtn.is( ':focus' ) ) { - var firstFormField = this.$element.find( '.active' ).find( 'input, select, textarea' )[ 0 ]; - - if ( typeof firstFormField !== 'undefined' ) { - // allow user to start typing immediately instead of having to click on the form field. - $( firstFormField ).focus(); - } else if ( this.$element.find( '.active input:first' ).length === 0 && this.$nextBtn.is( ':disabled' ) ) { - //only set focus on a button as the last resort if no form fields exist and the just clicked button is now disabled - this.$prevBtn.focus(); - } - - } - }, - - selectedItem: function( selectedItem ) { - var retVal, step; - - if ( selectedItem ) { - step = selectedItem.step || -1; - //allow selection of step by data-name - step = Number( this.$element.find( '.steps li[data-name="' + step + '"]' ).first().attr( 'data-step' ) ) || Number( step ); - - if ( 1 <= step && step <= this.numSteps ) { - this.currentStep = step; - this.setState(); - } else { - step = this.$element.find( '.steps li.active:first' ).attr( 'data-step' ); - if ( !isNaN( step ) ) { - this.currentStep = parseInt( step, 10 ); - this.setState(); - } - - } - - retVal = this; - } else { - retVal = { - step: this.currentStep - }; - if ( this.$element.find( '.steps li.active:first[data-name]' ).length ) { - retVal.stepname = this.$element.find( '.steps li.active:first' ).attr( 'data-name' ); - } - - } - - return retVal; - } - }; - - - // WIZARD PLUGIN DEFINITION - - $.fn.wizard = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.wizard' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.wizard', ( data = new Wizard( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.wizard.defaults = { - disablePreviousStep: false, - selectedItem: { - step: -1 - } //-1 means it will attempt to look for "active" class in order to set the step - }; - - $.fn.wizard.Constructor = Wizard; - - $.fn.wizard.noConflict = function() { - $.fn.wizard = old; - return this; - }; - - - // DATA-API - - $( document ).on( 'mouseover.fu.wizard.data-api', '[data-initialize=wizard]', function( e ) { - var $control = $( e.target ).closest( '.wizard' ); - if ( !$control.data( 'fu.wizard' ) ) { - $control.wizard( $control.data() ); - } - } ); - - // Must be domReady for AMD compatibility - $( function() { - $( '[data-initialize=wizard]' ).each( function() { - var $this = $( this ); - if ( $this.data( 'fu.wizard' ) ) return; - $this.wizard( $this.data() ); - } ); - } ); - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Infinite Scroll - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.infinitescroll; - - // INFINITE SCROLL CONSTRUCTOR AND PROTOTYPE - - var InfiniteScroll = function( element, options ) { - this.$element = $( element ); - this.$element.addClass( 'infinitescroll' ); - this.options = $.extend( {}, $.fn.infinitescroll.defaults, options ); - - this.curScrollTop = this.$element.scrollTop(); - this.curPercentage = this.getPercentage(); - this.fetchingData = false; - - this.$element.on( 'scroll.fu.infinitescroll', $.proxy( this.onScroll, this ) ); - this.onScroll(); - }; - - InfiniteScroll.prototype = { - - constructor: InfiniteScroll, - - destroy: function() { - this.$element.remove(); - // any external bindings - // [none] - - // empty elements to return to original markup - this.$element.empty(); - - return this.$element[ 0 ].outerHTML; - }, - - disable: function() { - this.$element.off( 'scroll.fu.infinitescroll' ); - }, - - enable: function() { - this.$element.on( 'scroll.fu.infinitescroll', $.proxy( this.onScroll, this ) ); - }, - - end: function( content ) { - var end = $( '<div class="infinitescroll-end"></div>' ); - if ( content ) { - end.append( content ); - } else { - end.append( '---------' ); - } - - this.$element.append( end ); - this.disable(); - }, - - getPercentage: function() { - var height = ( this.$element.css( 'box-sizing' ) === 'border-box' ) ? this.$element.outerHeight() : this.$element.height(); - var scrollHeight = this.$element.get( 0 ).scrollHeight; - return ( scrollHeight > height ) ? ( ( height / ( scrollHeight - this.curScrollTop ) ) * 100 ) : 0; - }, - - fetchData: function( force ) { - var load = $( '<div class="infinitescroll-load"></div>' ); - var self = this; - var moreBtn; - - var fetch = function() { - var helpers = { - percentage: self.curPercentage, - scrollTop: self.curScrollTop - }; - var $loader = $( '<div class="loader"></div>' ); - load.append( $loader ); - $loader.loader(); - if ( self.options.dataSource ) { - self.options.dataSource( helpers, function( resp ) { - var end; - load.remove(); - if ( resp.content ) { - self.$element.append( resp.content ); - } - - if ( resp.end ) { - end = ( resp.end !== true ) ? resp.end : undefined; - self.end( end ); - } - - self.fetchingData = false; - } ); - } - }; - - this.fetchingData = true; - this.$element.append( load ); - if ( this.options.hybrid && force !== true ) { - moreBtn = $( '<button type="button" class="btn btn-primary"></button>' ); - if ( typeof this.options.hybrid === 'object' ) { - moreBtn.append( this.options.hybrid.label ); - } else { - moreBtn.append( '<span class="glyphicon glyphicon-repeat"></span>' ); - } - - moreBtn.on( 'click.fu.infinitescroll', function() { - moreBtn.remove(); - fetch(); - } ); - load.append( moreBtn ); - } else { - fetch(); - } - }, - - onScroll: function( e ) { - this.curScrollTop = this.$element.scrollTop(); - this.curPercentage = this.getPercentage(); - if ( !this.fetchingData && this.curPercentage >= this.options.percentage ) { - this.fetchData(); - } - } - }; - - // INFINITE SCROLL PLUGIN DEFINITION - - $.fn.infinitescroll = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.infinitescroll' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.infinitescroll', ( data = new InfiniteScroll( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.infinitescroll.defaults = { - dataSource: null, - hybrid: false, //can be true or an object with structure: { 'label': (markup or jQuery obj) } - percentage: 95 //percentage scrolled to the bottom before more is loaded - }; - - $.fn.infinitescroll.Constructor = InfiniteScroll; - - $.fn.infinitescroll.noConflict = function() { - $.fn.infinitescroll = old; - return this; - }; - - // NO DATA-API DUE TO NEED OF DATA-SOURCE - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Pillbox - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.pillbox; - - // PILLBOX CONSTRUCTOR AND PROTOTYPE - - var Pillbox = function( element, options ) { - this.$element = $( element ); - this.$moreCount = this.$element.find( '.pillbox-more-count' ); - this.$pillGroup = this.$element.find( '.pill-group' ); - this.$addItem = this.$element.find( '.pillbox-add-item' ); - this.$addItemWrap = this.$addItem.parent(); - this.$suggest = this.$element.find( '.suggest' ); - this.$pillHTML = '<li class="btn btn-default pill">' + - ' <span></span>' + - ' <span class="glyphicon glyphicon-close">' + - ' <span class="sr-only">Remove</span>' + - ' </span>' + - '</li>'; - - this.options = $.extend( {}, $.fn.pillbox.defaults, options ); - - if ( this.options.readonly === -1 ) { - if ( this.$element.attr( 'data-readonly' ) !== undefined ) { - this.readonly( true ); - } - - } else if ( this.options.readonly ) { - this.readonly( true ); - } - - // EVENTS - this.acceptKeyCodes = this._generateObject( this.options.acceptKeyCodes ); - // Creatie an object out of the key code array, so we dont have to loop through it on every key stroke - - this.$element.on( 'click.fu.pillbox', '.pill-group > .pill', $.proxy( this.itemClicked, this ) ); - this.$element.on( 'click.fu.pillbox', $.proxy( this.inputFocus, this ) ); - this.$element.on( 'keydown.fu.pillbox', '.pillbox-add-item', $.proxy( this.inputEvent, this ) ); - if ( this.options.onKeyDown ) { - this.$element.on( 'mousedown.fu.pillbox', '.suggest > li', $.proxy( this.suggestionClick, this ) ); - } - - if ( this.options.edit ) { - this.$element.addClass( 'pills-editable' ); - this.$element.on( 'blur.fu.pillbox', '.pillbox-add-item', $.proxy( this.cancelEdit, this ) ); - } - }; - - Pillbox.prototype = { - constructor: Pillbox, - - destroy: function() { - this.$element.remove(); - // any external bindings - // [none] - // empty elements to return to original markup - // [none] - // returns string of markup - return this.$element[ 0 ].outerHTML; - }, - - items: function() { - var self = this; - - return this.$pillGroup.children( '.pill' ).map( function() { - return self.getItemData( $( this ) ); - } ).get(); - }, - - itemClicked: function( e ) { - var self = this; - var $target = $( e.target ); - var $item; - - e.preventDefault(); - e.stopPropagation(); - this._closeSuggestions(); - - if ( !$target.hasClass( 'pill' ) ) { - $item = $target.parent(); - if ( this.$element.attr( 'data-readonly' ) === undefined ) { - if ( $target.hasClass( 'glyphicon-close' ) ) { - if ( this.options.onRemove ) { - this.options.onRemove( this.getItemData( $item, { - el: $item - } ), $.proxy( this._removeElement, this ) ); - } else { - this._removeElement( this.getItemData( $item, { - el: $item - } ) ); - } - - return false; - } else if ( this.options.edit ) { - if ( $item.find( '.pillbox-list-edit' ).length ) { - return false; - } - - this.openEdit( $item ); - } - - } - - } else { - $item = $target; - } - - this.$element.trigger( 'clicked.fu.pillbox', this.getItemData( $item ) ); - }, - - readonly: function( enable ) { - if ( enable ) { - this.$element.attr( 'data-readonly', 'readonly' ); - } else { - this.$element.removeAttr( 'data-readonly' ); - } - - if ( this.options.truncate ) { - this.truncate( enable ); - } - }, - - suggestionClick: function( e ) { - var $item = $( e.currentTarget ); - var item = { - text: $item.html(), - value: $item.data( 'value' ) - }; - - e.preventDefault(); - this.$addItem.val( '' ); - - if ( $item.data( 'attr' ) ) { - item.attr = JSON.parse( $item.data( 'attr' ) ); - } - - item.data = $item.data( 'data' ); - - this.addItems( item, true ); - - // needs to be after addItems for IE - this._closeSuggestions(); - }, - - itemCount: function() { - return this.$pillGroup.children( '.pill' ).length; - }, - - // First parameter is 1 based index (optional, if index is not passed all new items will be appended) - // Second parameter can be array of objects [{ ... }, { ... }] or you can pass n additional objects as args - // object structure is as follows (attr and value are optional): { text: '', value: '', attr: {}, data: {} } - addItems: function() { - var self = this; - var items, index, isInternal; - - if ( isFinite( String( arguments[ 0 ] ) ) && !( arguments[ 0 ] instanceof Array ) ) { - items = [].slice.call( arguments ).slice( 1 ); - index = arguments[ 0 ]; - } else { - items = [].slice.call( arguments ).slice( 0 ); - isInternal = items[ 1 ] && !items[ 1 ].text; - } - - //If first argument is an array, use that, otherwise they probably passed each thing through as a separate arg, so use items as-is - if ( items[ 0 ] instanceof Array ) { - items = items[ 0 ]; - } - - if ( items.length ) { - $.each( items, function( i, value ) { - var data = { - text: value.text, - value: ( value.value ? value.value : value.text ), - el: self.$pillHTML - }; - - if ( value.attr ) { - data.attr = value.attr; - } - - if ( value.data ) { - data.data = value.data; - } - - items[ i ] = data; - } ); - - if ( this.options.edit && this.currentEdit ) { - items[ 0 ].el = this.currentEdit.wrap( '<div></div>' ).parent().html(); - } - - if ( isInternal ) { - items.pop( 1 ); - } - - if ( self.options.onAdd && isInternal ) { - if ( this.options.edit && this.currentEdit ) { - self.options.onAdd( items[ 0 ], $.proxy( self.saveEdit, this ) ); - } else { - self.options.onAdd( items[ 0 ], $.proxy( self.placeItems, this ) ); - } - - } else { - if ( this.options.edit && this.currentEdit ) { - self.saveEdit( items ); - } else { - if ( index ) { - self.placeItems( index, items ); - } else { - self.placeItems( items, isInternal ); - } - - } - - } - - } - }, - - //First parameter is the index (1 based) to start removing items - //Second parameter is the number of items to be removed - removeItems: function( index, howMany ) { - var self = this; - var count; - var $currentItem; - - if ( !index ) { - this.$pillGroup.find( '.pill' ).remove(); - this._removePillTrigger( { - method: 'removeAll' - } ); - } else { - howMany = howMany ? howMany : 1; - - for ( count = 0; count < howMany; count++ ) { - $currentItem = self.$pillGroup.find( '> .pill:nth-child(' + index + ')' ); - - if ( $currentItem ) { - $currentItem.remove(); - } else { - break; - } - - } - } - }, - - //First parameter is index (optional) - //Second parameter is new arguments - placeItems: function() { - var $newHtml = []; - var items; - var index; - var $neighbor; - var isInternal; - - if ( isFinite( String( arguments[ 0 ] ) ) && !( arguments[ 0 ] instanceof Array ) ) { - items = [].slice.call( arguments ).slice( 1 ); - index = arguments[ 0 ]; - } else { - items = [].slice.call( arguments ).slice( 0 ); - isInternal = items[ 1 ] && !items[ 1 ].text; - } - - if ( items[ 0 ] instanceof Array ) { - items = items[ 0 ]; - } - - if ( items.length ) { - $.each( items, function( i, item ) { - var $item = $( item.el ); - var $neighbor; - - $item.attr( 'data-value', item.value ); - $item.find( 'span:first' ).html( item.text ); - - // DOM attributes - if ( item.attr ) { - $.each( item.attr, function( key, value ) { - if ( key === 'cssClass' || key === 'class' ) { - $item.addClass( value ); - } else { - $item.attr( key, value ); - } - } ); - - } - - if ( item.data ) { - $item.data( 'data', item.data ); - } - - $newHtml.push( $item ); - } ); - - if ( this.$pillGroup.children( '.pill' ).length > 0 ) { - if ( index ) { - $neighbor = this.$pillGroup.find( '.pill:nth-child(' + index + ')' ); - - if ( $neighbor.length ) { - $neighbor.before( $newHtml ); - } else { - this.$pillGroup.children( '.pill:last' ).after( $newHtml ); - } - - } else { - this.$pillGroup.children( '.pill:last' ).after( $newHtml ); - } - - } else { - this.$pillGroup.prepend( $newHtml ); - } - - if ( isInternal ) { - this.$element.trigger( 'added.fu.pillbox', { - text: items[ 0 ].text, - value: items[ 0 ].value - } ); - } - - } - }, - - inputEvent: function( e ) { - var self = this; - var text = this.$addItem.val(); - var value; - var attr; - var $lastItem; - var $selection; - - if ( this.acceptKeyCodes[ e.keyCode ] ) { - if ( this.options.onKeyDown && this._isSuggestionsOpen() ) { - $selection = this.$suggest.find( '.pillbox-suggest-sel' ); - - if ( $selection.length ) { - text = $selection.html(); - value = $selection.data( 'value' ); - attr = $selection.data( 'attr' ); - } - - } - - //ignore comma and make sure text that has been entered (protects against " ,". https://github.com/ExactTarget/fuelux/issues/593), unless allowEmptyPills is true. - if ( text.replace( /[ ]*\,[ ]*/, '' ).match( /\S/ ) || ( this.options.allowEmptyPills && text.length ) ) { - this._closeSuggestions(); - this.$addItem.hide(); - - if ( attr ) { - this.addItems( { - text: text, - value: value, - attr: JSON.parse( attr ) - }, true ); - } else { - this.addItems( { - text: text, - value: value - }, true ); - } - - setTimeout( function() { - self.$addItem.show().val( '' ).attr( { - size: 10 - } ); - }, 0 ); - } - - e.preventDefault(); - return true; - } else if ( e.keyCode === 8 || e.keyCode === 46 ) { - // backspace: 8 - // delete: 46 - - if ( !text.length ) { - e.preventDefault(); - - if ( this.options.edit && this.currentEdit ) { - this.cancelEdit(); - return true; - } - - this._closeSuggestions(); - $lastItem = this.$pillGroup.children( '.pill:last' ); - - if ( $lastItem.hasClass( 'pillbox-highlight' ) ) { - this._removeElement( this.getItemData( $lastItem, { - el: $lastItem - } ) ); - } else { - $lastItem.addClass( 'pillbox-highlight' ); - } - - return true; - } - - } else if ( text.length > 10 ) { - if ( this.$addItem.width() < ( this.$pillGroup.width() - 6 ) ) { - this.$addItem.attr( { - size: text.length + 3 - } ); - } - - } - - this.$pillGroup.find( '.pill' ).removeClass( 'pillbox-highlight' ); - - if ( this.options.onKeyDown ) { - if ( e.keyCode === 9 || e.keyCode === 38 || e.keyCode === 40 ) { - // tab: 9 - // up arrow: 38 - // down arrow: 40 - - if ( this._isSuggestionsOpen() ) { - this._keySuggestions( e ); - } - - return true; - } - - //only allowing most recent event callback to register - this.callbackId = e.timeStamp; - this.options.onKeyDown( { - event: e, - value: text - }, function( data ) { - self._openSuggestions( e, data ); - } ); - } - }, - - openEdit: function( el ) { - var index = el.index() + 1; - var $addItemWrap = this.$addItemWrap.detach().hide(); - - this.$pillGroup.find( '.pill:nth-child(' + index + ')' ).before( $addItemWrap ); - this.currentEdit = el.detach(); - - $addItemWrap.addClass( 'editing' ); - this.$addItem.val( el.find( 'span:first' ).html() ); - $addItemWrap.show(); - this.$addItem.focus().select(); - }, - - cancelEdit: function( e ) { - var $addItemWrap; - if ( !this.currentEdit ) { - return false; - } - - this._closeSuggestions(); - if ( e ) { - this.$addItemWrap.before( this.currentEdit ); - } - - this.currentEdit = false; - - $addItemWrap = this.$addItemWrap.detach(); - $addItemWrap.removeClass( 'editing' ); - this.$addItem.val( '' ); - this.$pillGroup.append( $addItemWrap ); - }, - - //Must match syntax of placeItem so addItem callback is called when an item is edited - //expecting to receive an array back from the callback containing edited items - saveEdit: function() { - var item = arguments[ 0 ][ 0 ] ? arguments[ 0 ][ 0 ] : arguments[ 0 ]; - - this.currentEdit = $( item.el ); - this.currentEdit.data( 'value', item.value ); - this.currentEdit.find( 'span:first' ).html( item.text ); - - this.$addItemWrap.hide(); - this.$addItemWrap.before( this.currentEdit ); - this.currentEdit = false; - - this.$addItem.val( '' ); - this.$addItemWrap.removeClass( 'editing' ); - this.$pillGroup.append( this.$addItemWrap.detach().show() ); - this.$element.trigger( 'edited.fu.pillbox', { - value: item.value, - text: item.text - } ); - }, - - removeBySelector: function() { - var selectors = [].slice.call( arguments ).slice( 0 ); - var self = this; - - $.each( selectors, function( i, sel ) { - self.$pillGroup.find( sel ).remove(); - } ); - - this._removePillTrigger( { - method: 'removeBySelector', - removedSelectors: selectors - } ); - }, - - removeByValue: function() { - var values = [].slice.call( arguments ).slice( 0 ); - var self = this; - - $.each( values, function( i, val ) { - self.$pillGroup.find( '> .pill[data-value="' + val + '"]' ).remove(); - } ); - - this._removePillTrigger( { - method: 'removeByValue', - removedValues: values - } ); - }, - - removeByText: function() { - var text = [].slice.call( arguments ).slice( 0 ); - var self = this; - - $.each( text, function( i, text ) { - self.$pillGroup.find( '> .pill:contains("' + text + '")' ).remove(); - } ); - - this._removePillTrigger( { - method: 'removeByText', - removedText: text - } ); - }, - - truncate: function( enable ) { - var self = this; - var available, full, i, pills, used; - - this.$element.removeClass( 'truncate' ); - this.$addItemWrap.removeClass( 'truncated' ); - this.$pillGroup.find( '.pill' ).removeClass( 'truncated' ); - - if ( enable ) { - this.$element.addClass( 'truncate' ); - - available = this.$element.width(); - full = false; - i = 0; - pills = this.$pillGroup.find( '.pill' ).length; - used = 0; - - this.$pillGroup.find( '.pill' ).each( function() { - var pill = $( this ); - if ( !full ) { - i++; - self.$moreCount.text( pills - i ); - if ( ( used + pill.outerWidth( true ) + self.$addItemWrap.outerWidth( true ) ) <= available ) { - used += pill.outerWidth( true ); - } else { - self.$moreCount.text( ( pills - i ) + 1 ); - pill.addClass( 'truncated' ); - full = true; - } - - } else { - pill.addClass( 'truncated' ); - } - } ); - if ( i === pills ) { - this.$addItemWrap.addClass( 'truncated' ); - } - - } - }, - - inputFocus: function( e ) { - this.$element.find( '.pillbox-add-item' ).focus(); - }, - - getItemData: function( el, data ) { - return $.extend( { - text: el.find( 'span:first' ).html() - }, el.data(), data ); - }, - - _removeElement: function( data ) { - data.el.remove(); - delete data.el; - this.$element.trigger( 'removed.fu.pillbox', data ); - }, - - _removePillTrigger: function( removedBy ) { - this.$element.trigger( 'removed.fu.pillbox', removedBy ); - }, - - _generateObject: function( data ) { - var obj = {}; - - $.each( data, function( index, value ) { - obj[ value ] = true; - } ); - - return obj; - }, - - _openSuggestions: function( e, data ) { - var markup = ''; - var $suggestionList = $( '<ul>' ); - - if ( this.callbackId !== e.timeStamp ) { - return false; - } - - if ( data.data && data.data.length ) { - $.each( data.data, function( index, value ) { - var val = value.value ? value.value : value.text; - - // markup concatentation is 10x faster, but does not allow data store - var $suggestion = $( '<li data-value="' + val + '">' + value.text + '</li>' ); - - if ( value.attr ) { - $suggestion.data( 'attr', JSON.stringify( value.attr ) ); - } - - if ( value.data ) { - $suggestion.data( 'data', value.data ); - } - - $suggestionList.append( $suggestion ); - } ); - - // suggestion dropdown - this.$suggest.html( '' ).append( $suggestionList.children() ); - $( document.body ).trigger( 'suggested.fu.pillbox', this.$suggest ); - } - }, - - _closeSuggestions: function() { - this.$suggest.html( '' ).parent().removeClass( 'open' ); - }, - - _isSuggestionsOpen: function() { - return this.$suggest.parent().hasClass( 'open' ); - }, - - _keySuggestions: function( e ) { - var $first = this.$suggest.find( 'li.pillbox-suggest-sel' ); - var dir = e.keyCode === 38; // up arrow - var $next, val; - - e.preventDefault(); - - if ( !$first.length ) { - $first = this.$suggest.find( 'li:first' ); - $first.addClass( 'pillbox-suggest-sel' ); - } else { - $next = dir ? $first.prev() : $first.next(); - - if ( !$next.length ) { - $next = dir ? this.$suggest.find( 'li:last' ) : this.$suggest.find( 'li:first' ); - } - - if ( $next ) { - $next.addClass( 'pillbox-suggest-sel' ); - $first.removeClass( 'pillbox-suggest-sel' ); - } - - } - } - }; - - Pillbox.prototype.getValue = Pillbox.prototype.items; - - // PILLBOX PLUGIN DEFINITION - - $.fn.pillbox = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.pillbox' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.pillbox', ( data = new Pillbox( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.pillbox.defaults = { - onAdd: undefined, - onRemove: undefined, - onKeyDown: undefined, - edit: false, - readonly: -1, //can be true or false. -1 means it will check for data-readonly="readonly" - truncate: false, - acceptKeyCodes: [ - 13, //Enter - 188 //Comma - ], - allowEmptyPills: false - - //example on remove - /*onRemove: function(data,callback){ - console.log('onRemove'); - callback(data); - }*/ - - //example on key down - /*onKeyDown: function(event, data, callback ){ - callback({data:[ - {text: Math.random(),value:'sdfsdfsdf'}, - {text: Math.random(),value:'sdfsdfsdf'} - ]}); - } - */ - //example onAdd - /*onAdd: function( data, callback ){ - console.log(data, callback); - callback(data); - }*/ - }; - - $.fn.pillbox.Constructor = Pillbox; - - $.fn.pillbox.noConflict = function() { - $.fn.pillbox = old; - return this; - }; - - - // DATA-API - - $( document ).on( 'mousedown.fu.pillbox.data-api', '[data-initialize=pillbox]', function( e ) { - var $control = $( e.target ).closest( '.pillbox' ); - if ( !$control.data( 'fu.pillbox' ) ) { - $control.pillbox( $control.data() ); - } - } ); - - // Must be domReady for AMD compatibility - $( function() { - $( '[data-initialize=pillbox]' ).each( function() { - var $this = $( this ); - if ( $this.data( 'fu.pillbox' ) ) return; - $this.pillbox( $this.data() ); - } ); - } ); - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Repeater - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.repeater; - - // REPEATER CONSTRUCTOR AND PROTOTYPE - - var Repeater = function( element, options ) { - var self = this; - var $btn, currentView; - - this.$element = $( element ); - - this.$canvas = this.$element.find( '.repeater-canvas' ); - this.$count = this.$element.find( '.repeater-count' ); - this.$end = this.$element.find( '.repeater-end' ); - this.$filters = this.$element.find( '.repeater-filters' ); - this.$loader = this.$element.find( '.repeater-loader' ); - this.$pageSize = this.$element.find( '.repeater-itemization .selectlist' ); - this.$nextBtn = this.$element.find( '.repeater-next' ); - this.$pages = this.$element.find( '.repeater-pages' ); - this.$prevBtn = this.$element.find( '.repeater-prev' ); - this.$primaryPaging = this.$element.find( '.repeater-primaryPaging' ); - this.$search = this.$element.find( '.repeater-search' ).find( '.search' ); - this.$secondaryPaging = this.$element.find( '.repeater-secondaryPaging' ); - this.$start = this.$element.find( '.repeater-start' ); - this.$viewport = this.$element.find( '.repeater-viewport' ); - this.$views = this.$element.find( '.repeater-views' ); - - this.currentPage = 0; - this.currentView = null; - this.infiniteScrollingCallback = function() {}; - this.infiniteScrollingCont = null; - this.infiniteScrollingEnabled = false; - this.infiniteScrollingEnd = null; - this.infiniteScrollingOptions = {}; - this.lastPageInput = 0; - this.options = $.extend( {}, $.fn.repeater.defaults, options ); - this.pageIncrement = 0; // store direction navigated - this.resizeTimeout = {}; - this.stamp = new Date().getTime() + ( Math.floor( Math.random() * 100 ) + 1 ); - this.storedDataSourceOpts = null; - this.viewOptions = {}; - this.viewType = null; - - this.$filters.selectlist(); - this.$pageSize.selectlist(); - this.$primaryPaging.find( '.combobox' ).combobox(); - this.$search.search(); - - this.$filters.on( 'changed.fu.selectlist', function( e, value ) { - self.$element.trigger( 'filtered.fu.repeater', value ); - self.render( { - clearInfinite: true, - pageIncrement: null - } ); - } ); - this.$nextBtn.on( 'click.fu.repeater', $.proxy( this.next, this ) ); - this.$pageSize.on( 'changed.fu.selectlist', function( e, value ) { - self.$element.trigger( 'pageSizeChanged.fu.repeater', value ); - self.render( { - pageIncrement: null - } ); - } ); - this.$prevBtn.on( 'click.fu.repeater', $.proxy( this.previous, this ) ); - this.$primaryPaging.find( '.combobox' ).on( 'changed.fu.combobox', function( evt, data ) { - self.$element.trigger( 'pageChanged.fu.repeater', [ data.text, data ] ); - self.pageInputChange( data.text ); - } ); - this.$search.on( 'searched.fu.search cleared.fu.search', function( e, value ) { - self.$element.trigger( 'searchChanged.fu.repeater', value ); - self.render( { - clearInfinite: true, - pageIncrement: null - } ); - } ); - this.$secondaryPaging.on( 'blur.fu.repeater', function( e ) { - self.pageInputChange( self.$secondaryPaging.val() ); - } ); - this.$secondaryPaging.on( 'keyup', function( e ) { - if ( e.keyCode === 13 ) { - self.pageInputChange( self.$secondaryPaging.val() ); - } - } ); - this.$views.find( 'input' ).on( 'change.fu.repeater', $.proxy( this.viewChanged, this ) ); - - // ID needed since event is bound to instance - $( window ).on( 'resize.fu.repeater.' + this.stamp, function( event ) { - clearTimeout( self.resizeTimeout ); - self.resizeTimeout = setTimeout( function() { - self.resize(); - self.$element.trigger( 'resized.fu.repeater' ); - }, 75 ); - } ); - - this.$loader.loader(); - this.$loader.loader( 'pause' ); - if ( this.options.defaultView !== -1 ) { - currentView = this.options.defaultView; - } else { - $btn = this.$views.find( 'label.active input' ); - currentView = ( $btn.length > 0 ) ? $btn.val() : 'list'; - } - - this.setViewOptions( currentView ); - - this.initViewTypes( function() { - self.resize(); - self.$element.trigger( 'resized.fu.repeater' ); - self.render( { - changeView: currentView - } ); - } ); - }; - - Repeater.prototype = { - constructor: Repeater, - - clear: function( options ) { - var viewChanged, viewTypeObj; - - function scan( cont ) { - var keep = []; - cont.children().each( function() { - var item = $( this ); - var pres = item.attr( 'data-preserve' ); - if ( pres === 'deep' ) { - item.detach(); - keep.push( item ); - } else if ( pres === 'shallow' ) { - scan( item ); - item.detach(); - keep.push( item ); - } - } ); - cont.empty(); - cont.append( keep ); - } - - options = options || {}; - - if ( !options.preserve ) { - //Just trash everything because preserve is false - this.$canvas.empty(); - } else if ( !this.infiniteScrollingEnabled || options.clearInfinite ) { - //Preserve clear only if infiniteScrolling is disabled or if specifically told to do so - scan( this.$canvas ); - } //Otherwise don't clear because infiniteScrolling is enabled - - //If viewChanged and current viewTypeObj has a cleared function, call it - viewChanged = ( options.viewChanged !== undefined ) ? options.viewChanged : false; - viewTypeObj = $.fn.repeater.viewTypes[ this.viewType ] || {}; - if ( !viewChanged && viewTypeObj.cleared ) { - viewTypeObj.cleared.call( this, { - options: options - } ); - } - }, - - clearPreservedDataSourceOptions: function() { - this.storedDataSourceOpts = null; - }, - - destroy: function() { - var markup; - // set input value attrbute in markup - this.$element.find( 'input' ).each( function() { - $( this ).attr( 'value', $( this ).val() ); - } ); - - // empty elements to return to original markup - this.$canvas.empty(); - markup = this.$element[ 0 ].outerHTML; - - // destroy components and remove leftover - this.$element.find( '.combobox' ).combobox( 'destroy' ); - this.$element.find( '.selectlist' ).selectlist( 'destroy' ); - this.$element.find( '.search' ).search( 'destroy' ); - if ( this.infiniteScrollingEnabled ) { - $( this.infiniteScrollingCont ).infinitescroll( 'destroy' ); - } - - this.$element.remove(); - - // any external events - $( window ).off( 'resize.fu.repeater.' + this.stamp ); - - return markup; - }, - - disable: function() { - var disable = 'disable'; - var disabled = 'disabled'; - - this.$search.search( disable ); - this.$filters.selectlist( disable ); - this.$views.find( 'label' ).attr( disabled, disabled ); - this.$pageSize.selectlist( disable ); - this.$primaryPaging.find( '.combobox' ).combobox( disable ); - this.$secondaryPaging.attr( disabled, disabled ); - this.$prevBtn.attr( disabled, disabled ); - this.$nextBtn.attr( disabled, disabled ); - - this.$element.addClass( 'disabled' ); - this.$element.trigger( 'disabled.fu.repeater' ); - }, - - enable: function() { - var disabled = 'disabled'; - var enable = 'enable'; - var pageEnd = 'page-end'; - - this.$search.search( enable ); - this.$filters.selectlist( enable ); - this.$views.find( 'label' ).removeAttr( disabled ); - this.$pageSize.selectlist( 'enable' ); - this.$primaryPaging.find( '.combobox' ).combobox( enable ); - this.$secondaryPaging.removeAttr( disabled ); - - if ( !this.$prevBtn.hasClass( pageEnd ) ) { - this.$prevBtn.removeAttr( disabled ); - } - if ( !this.$nextBtn.hasClass( pageEnd ) ) { - this.$nextBtn.removeAttr( disabled ); - } - - // is 0 or 1 pages, if using $primaryPaging (combobox) - // if using selectlist allow user to use selectlist to select 0 or 1 - if ( this.$prevBtn.hasClass( pageEnd ) && this.$nextBtn.hasClass( pageEnd ) ) { - this.$primaryPaging.combobox( 'disable' ); - } - - //if there are no items - if ( parseInt( this.$count.html() ) !== 0 ) { - this.$pageSize.selectlist( 'enable' ); - } else { - this.$pageSize.selectlist( 'disable' ); - } - - this.$element.removeClass( 'disabled' ); - this.$element.trigger( 'enabled.fu.repeater' ); - }, - - getDataOptions: function( options ) { - var dataSourceOptions = {}; - var opts = {}; - var val, viewDataOpts; - - options = options || {}; - - opts.filter = ( this.$filters.length > 0 ) ? this.$filters.selectlist( 'selectedItem' ) : { - text: 'All', - value: 'all' - }; - opts.view = this.currentView; - - if ( !this.infiniteScrollingEnabled ) { - opts.pageSize = ( this.$pageSize.length > 0 ) ? parseInt( this.$pageSize.selectlist( 'selectedItem' ).value, 10 ) : 25; - } - - if ( options.pageIncrement !== undefined ) { - if ( options.pageIncrement === null ) { - this.currentPage = 0; - } else { - this.currentPage += options.pageIncrement; - } - - } - - opts.pageIndex = this.currentPage; - - val = ( this.$search.length > 0 ) ? this.$search.find( 'input' ).val() : ''; - if ( val !== '' ) { - opts.search = val; - } - - if ( options.dataSourceOptions ) { - dataSourceOptions = options.dataSourceOptions; - if ( options.preserveDataSourceOptions ) { - this.storedDataSourceOpts = ( this.storedDataSourceOpts ) ? $.extend( this.storedDataSourceOpts, dataSourceOptions ) : dataSourceOptions; - } - } - - if ( this.storedDataSourceOpts ) { - dataSourceOptions = $.extend( this.storedDataSourceOpts, dataSourceOptions ); - } - - viewDataOpts = $.fn.repeater.viewTypes[ this.viewType ] || {}; - viewDataOpts = viewDataOpts.dataOptions; - if ( viewDataOpts ) { - viewDataOpts = viewDataOpts.call( this, opts ); - opts = $.extend( viewDataOpts, dataSourceOptions ); - } else { - opts = $.extend( opts, dataSourceOptions ); - } - - return opts; - }, - - infiniteScrolling: function( enable, options ) { - var footer = this.$element.find( '.repeater-footer' ); - var viewport = this.$element.find( '.repeater-viewport' ); - var cont, data; - - options = options || {}; - - if ( enable ) { - this.infiniteScrollingEnabled = true; - this.infiniteScrollingEnd = options.end; - delete options.dataSource; - delete options.end; - this.infiniteScrollingOptions = options; - viewport.css( { - height: viewport.height() + footer.outerHeight() - } ); - footer.hide(); - } else { - cont = this.infiniteScrollingCont; - data = cont.data(); - delete data.infinitescroll; - cont.off( 'scroll' ); - cont.removeClass( 'infinitescroll' ); - - this.infiniteScrollingCont = null; - this.infiniteScrollingEnabled = false; - this.infiniteScrollingEnd = null; - this.infiniteScrollingOptions = {}; - viewport.css( { - height: viewport.height() - footer.outerHeight() - } ); - footer.show(); - } - }, - - infiniteScrollPaging: function( data, options ) { - var end = ( this.infiniteScrollingEnd !== true ) ? this.infiniteScrollingEnd : undefined; - var page = data.page; - var pages = data.pages; - - this.currentPage = ( page !== undefined ) ? page : NaN; - - if ( ( this.currentPage + 1 ) >= pages ) { - this.infiniteScrollingCont.infinitescroll( 'end', end ); - } - }, - - initInfiniteScrolling: function() { - var cont = this.$canvas.find( '[data-infinite="true"]:first' ); - var opts, self; - - cont = ( cont.length < 1 ) ? this.$canvas : cont; - if ( cont.data( 'fu.infinitescroll' ) ) { - cont.infinitescroll( 'enable' ); - } else { - self = this; - opts = $.extend( {}, this.infiniteScrollingOptions ); - opts.dataSource = function( helpers, callback ) { - self.infiniteScrollingCallback = callback; - self.render( { - pageIncrement: 1 - } ); - }; - cont.infinitescroll( opts ); - this.infiniteScrollingCont = cont; - } - }, - - initViewTypes: function( callback ) { - var self = this; - var viewTypes = []; - var i, viewTypesLength; - - function init( index ) { - function next() { - index++; - if ( index < viewTypesLength ) { - init( index ); - } else { - callback(); - } - } - - if ( viewTypes[ index ].initialize ) { - viewTypes[ index ].initialize.call( self, {}, function() { - next(); - } ); - } else { - next(); - } - } - - for ( i in $.fn.repeater.viewTypes ) { - viewTypes.push( $.fn.repeater.viewTypes[ i ] ); - } - viewTypesLength = viewTypes.length; - if ( viewTypesLength > 0 ) { - init( 0 ); - } else { - callback(); - } - }, - - itemization: function( data ) { - this.$count.html( ( data.count !== undefined ) ? data.count : '?' ); - this.$end.html( ( data.end !== undefined ) ? data.end : '?' ); - this.$start.html( ( data.start !== undefined ) ? data.start : '?' ); - }, - - next: function( e ) { - var d = 'disabled'; - this.$nextBtn.attr( d, d ); - this.$prevBtn.attr( d, d ); - this.pageIncrement = 1; - this.$element.trigger( 'nextClicked.fu.repeater' ); - this.render( { - pageIncrement: this.pageIncrement - } ); - }, - - pageInputChange: function( val ) { - var pageInc; - if ( val !== this.lastPageInput ) { - this.lastPageInput = val; - val = parseInt( val, 10 ) - 1; - pageInc = val - this.currentPage; - this.$element.trigger( 'pageChanged.fu.repeater', val ); - this.render( { - pageIncrement: pageInc - } ); - } - }, - - pagination: function( data ) { - var act = 'active'; - var dsbl = 'disabled'; - var page = data.page; - var pageEnd = 'page-end'; - var pages = data.pages; - var dropMenu, i, l; - var currenPageOutput; - - this.currentPage = ( page !== undefined ) ? page : NaN; - - this.$primaryPaging.removeClass( act ); - this.$secondaryPaging.removeClass( act ); - - // set paging to 0 if total pages is 0, otherwise use one-based index - currenPageOutput = pages === 0 ? 0 : this.currentPage + 1; - - if ( pages <= this.viewOptions.dropPagingCap ) { - this.$primaryPaging.addClass( act ); - dropMenu = this.$primaryPaging.find( '.dropdown-menu' ); - dropMenu.empty(); - for ( i = 0; i < pages; i++ ) { - l = i + 1; - dropMenu.append( '<li data-value="' + l + '"><a href="#">' + l + '</a></li>' ); - } - - this.$primaryPaging.find( 'input.form-control' ).val( currenPageOutput ); - } else { - this.$secondaryPaging.addClass( act ); - this.$secondaryPaging.val( currenPageOutput ); - } - - this.lastPageInput = this.currentPage + 1 + ''; - - this.$pages.html( '' + pages ); - - // this is not the last page - if ( ( this.currentPage + 1 ) < pages ) { - this.$nextBtn.removeAttr( dsbl ); - this.$nextBtn.removeClass( pageEnd ); - } else { - this.$nextBtn.attr( dsbl, dsbl ); - this.$nextBtn.addClass( pageEnd ); - } - - // this is not the first page - if ( ( this.currentPage - 1 ) >= 0 ) { - this.$prevBtn.removeAttr( dsbl ); - this.$prevBtn.removeClass( pageEnd ); - } else { - this.$prevBtn.attr( dsbl, dsbl ); - this.$prevBtn.addClass( pageEnd ); - } - - // return focus to next/previous buttons after navigating - if ( this.pageIncrement !== 0 ) { - if ( this.pageIncrement > 0 ) { - if ( this.$nextBtn.is( ':disabled' ) ) { - // if you can't focus, go the other way - this.$prevBtn.focus(); - } else { - this.$nextBtn.focus(); - } - - } else { - if ( this.$prevBtn.is( ':disabled' ) ) { - // if you can't focus, go the other way - this.$nextBtn.focus(); - } else { - this.$prevBtn.focus(); - } - - } - - } - }, - - previous: function() { - var d = 'disabled'; - this.$nextBtn.attr( d, d ); - this.$prevBtn.attr( d, d ); - this.pageIncrement = -1; - this.$element.trigger( 'previousClicked.fu.repeater' ); - this.render( { - pageIncrement: this.pageIncrement - } ); - }, - - render: function( options ) { - var self = this; - var viewChanged = false; - var viewTypeObj = $.fn.repeater.viewTypes[ this.viewType ] || {}; - var dataOptions, prevView; - - options = options || {}; - this.disable(); - - if ( options.changeView && ( this.currentView !== options.changeView ) ) { - prevView = this.currentView; - this.currentView = options.changeView; - this.viewType = this.currentView.split( '.' )[ 0 ]; - this.setViewOptions( this.currentView ); - this.$element.attr( 'data-currentview', this.currentView ); - this.$element.attr( 'data-viewtype', this.viewType ); - viewChanged = true; - options.viewChanged = viewChanged; - - this.$element.trigger( 'viewChanged.fu.repeater', this.currentView ); - - if ( this.infiniteScrollingEnabled ) { - self.infiniteScrolling( false ); - } - - viewTypeObj = $.fn.repeater.viewTypes[ this.viewType ] || {}; - if ( viewTypeObj.selected ) { - viewTypeObj.selected.call( this, { - prevView: prevView - } ); - } - } - - options.preserve = ( options.preserve !== undefined ) ? options.preserve : !viewChanged; - this.clear( options ); - - if ( !this.infiniteScrollingEnabled || ( this.infiniteScrollingEnabled && viewChanged ) ) { - this.$loader.show().loader( 'play' ); - } - - dataOptions = this.getDataOptions( options ); - - this.viewOptions.dataSource( dataOptions, function( data ) { - data = data || {}; - - if ( self.infiniteScrollingEnabled ) { - self.infiniteScrollingCallback( {} ); - } else { - self.itemization( data ); - self.pagination( data ); - } - - self.runRenderer( viewTypeObj, data, function() { - if ( self.infiniteScrollingEnabled ) { - if ( viewChanged || options.clearInfinite ) { - self.initInfiniteScrolling(); - } - - self.infiniteScrollPaging( data, options ); - } - - self.$loader.hide().loader( 'pause' ); - self.$element.trigger( 'rendered.fu.repeater', { - data: data, - options: dataOptions, - renderOptions: options - } ); - - //for maintaining support of 'loaded' event - self.$element.trigger( 'loaded.fu.repeater', dataOptions ); - - self.enable(); - } ); - } ); - }, - - resize: function() { - var staticHeight = ( this.viewOptions.staticHeight === -1 ) ? this.$element.attr( 'data-staticheight' ) : this.viewOptions.staticHeight; - var viewTypeObj = {}; - var height, viewportMargins; - - if ( this.viewType ) { - viewTypeObj = $.fn.repeater.viewTypes[ this.viewType ] || {}; - } - - if ( staticHeight !== undefined && staticHeight !== false && staticHeight !== 'false' ) { - this.$canvas.addClass( 'scrolling' ); - viewportMargins = { - bottom: this.$viewport.css( 'margin-bottom' ), - top: this.$viewport.css( 'margin-top' ) - }; - height = ( ( staticHeight === 'true' || staticHeight === true ) ? this.$element.height() : parseInt( staticHeight, 10 ) ) - - this.$element.find( '.repeater-header' ).outerHeight() - - this.$element.find( '.repeater-footer' ).outerHeight() - - ( ( viewportMargins.bottom === 'auto' ) ? 0 : parseInt( viewportMargins.bottom, 10 ) ) - - ( ( viewportMargins.top === 'auto' ) ? 0 : parseInt( viewportMargins.top, 10 ) ); - this.$viewport.outerHeight( height ); - } else { - this.$canvas.removeClass( 'scrolling' ); - } - - if ( viewTypeObj.resize ) { - viewTypeObj.resize.call( this, { - height: this.$element.outerHeight(), - width: this.$element.outerWidth() - } ); - } - }, - - runRenderer: function( viewTypeObj, data, callback ) { - var $container, i, l, response, repeat, subset; - - function addItem( $parent, resp ) { - var action; - if ( resp ) { - action = ( resp.action ) ? resp.action : 'append'; - if ( action !== 'none' && resp.item !== undefined ) { - $parent = ( resp.container !== undefined ) ? $( resp.container ) : $parent; - $parent[ action ]( resp.item ); - } - } - } - - if ( !viewTypeObj.render ) { - if ( viewTypeObj.before ) { - response = viewTypeObj.before.call( this, { - container: this.$canvas, - data: data - } ); - addItem( this.$canvas, response ); - } - - $container = this.$canvas.find( '[data-container="true"]:last' ); - $container = ( $container.length > 0 ) ? $container : this.$canvas; - - if ( viewTypeObj.renderItem ) { - repeat = viewTypeObj.repeat || 'data.items'; - repeat = repeat.split( '.' ); - if ( repeat[ 0 ] === 'data' || repeat[ 0 ] === 'this' ) { - subset = ( repeat[ 0 ] === 'this' ) ? this : data; - repeat.shift(); - } else { - repeat = []; - subset = []; - if ( window.console && window.console.warn ) { - window.console.warn( 'WARNING: Repeater plugin "repeat" value must start with either "data" or "this"' ); - } - } - - for ( i = 0, l = repeat.length; i < l; i++ ) { - if ( subset[ repeat[ i ] ] !== undefined ) { - subset = subset[ repeat[ i ] ]; - } else { - subset = []; - if ( window.console && window.console.warn ) { - window.console.warn( 'WARNING: Repeater unable to find property to iterate renderItem on.' ); - } - break; - } - } - - for ( i = 0, l = subset.length; i < l; i++ ) { - response = viewTypeObj.renderItem.call( this, { - container: $container, - data: data, - index: i, - subset: subset - } ); - addItem( $container, response ); - } - } - - if ( viewTypeObj.after ) { - response = viewTypeObj.after.call( this, { - container: this.$canvas, - data: data - } ); - addItem( this.$canvas, response ); - } - - callback(); - } else { - viewTypeObj.render.call( this, { - container: this.$canvas, - data: data - }, function() { - callback(); - } ); - } - - }, - - setViewOptions: function( curView ) { - var opts = {}; - var viewName = curView.split( '.' )[ 1 ]; - - if ( this.options.views ) { - opts = this.options.views[ viewName ] || this.options.views[ curView ] || {}; - } else { - opts = {}; - } - - this.viewOptions = $.extend( {}, this.options, opts ); - }, - - viewChanged: function( e ) { - var $selected = $( e.target ); - var val = $selected.val(); - this.render( { - changeView: val, - pageIncrement: null - } ); - } - }; - - // REPEATER PLUGIN DEFINITION - - $.fn.repeater = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.repeater' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.repeater', ( data = new Repeater( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.repeater.defaults = { - dataSource: function( options, callback ) { - callback( { - count: 0, - end: 0, - items: [], - page: 0, - pages: 1, - start: 0 - } ); - }, - defaultView: -1, //should be a string value. -1 means it will grab the active view from the view controls - dropPagingCap: 10, - staticHeight: -1, //normally true or false. -1 means it will look for data-staticheight on the element - views: null //can be set to an object to configure multiple views of the same type - }; - - $.fn.repeater.viewTypes = {}; - - $.fn.repeater.Constructor = Repeater; - - $.fn.repeater.noConflict = function() { - $.fn.repeater = old; - return this; - }; - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Repeater - List View Plugin - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - if ( $.fn.repeater ) { - //ADDITIONAL METHODS - $.fn.repeater.Constructor.prototype.list_clearSelectedItems = function() { - this.$canvas.find( '.repeater-list-check' ).remove(); - this.$canvas.find( '.repeater-list table tbody tr.selected' ).removeClass( 'selected' ); - }; - - $.fn.repeater.Constructor.prototype.list_highlightColumn = function( index, force ) { - var tbody = this.$canvas.find( '.repeater-list-wrapper > table tbody' ); - if ( this.viewOptions.list_highlightSortedColumn || force ) { - tbody.find( 'td.sorted' ).removeClass( 'sorted' ); - tbody.find( 'tr' ).each( function() { - var col = $( this ).find( 'td:nth-child(' + ( index + 1 ) + ')' ).filter( function() { - return !$( this ).parent().hasClass( 'empty' ); - } ); - col.addClass( 'sorted' ); - } ); - } - }; - - $.fn.repeater.Constructor.prototype.list_getSelectedItems = function() { - var selected = []; - this.$canvas.find( '.repeater-list .repeater-list-wrapper > table tbody tr.selected' ).each( function() { - var $item = $( this ); - selected.push( { - data: $item.data( 'item_data' ), - element: $item - } ); - } ); - return selected; - }; - - $.fn.repeater.Constructor.prototype.getValue = $.fn.repeater.Constructor.prototype.list_getSelectedItems; - - $.fn.repeater.Constructor.prototype.list_positionHeadings = function() { - var $wrapper = this.$element.find( '.repeater-list-wrapper' ); - var offsetLeft = $wrapper.offset().left; - var scrollLeft = $wrapper.scrollLeft(); - if ( scrollLeft > 0 ) { - $wrapper.find( '.repeater-list-heading' ).each( function() { - var $heading = $( this ); - var left = ( $heading.parents( 'th:first' ).offset().left - offsetLeft ) + 'px'; - $heading.addClass( 'shifted' ).css( 'left', left ); - } ); - } else { - $wrapper.find( '.repeater-list-heading' ).each( function() { - $( this ).removeClass( 'shifted' ).css( 'left', '' ); - } ); - } - }; - - $.fn.repeater.Constructor.prototype.list_setSelectedItems = function( items, force ) { - var selectable = this.viewOptions.list_selectable; - var self = this; - var data, i, $item, l; - - //this function is necessary because lint yells when a function is in a loop - function checkIfItemMatchesValue() { - $item = $( this ); - data = $item.data( 'item_data' ) || {}; - if ( data[ items[ i ].property ] === items[ i ].value ) { - selectItem( $item, items[ i ].selected ); - } - } - - function selectItem( $itm, select ) { - select = ( select !== undefined ) ? select : true; - if ( select ) { - if ( !force && selectable !== 'multi' ) { - self.list_clearSelectedItems(); - } - - if ( !$itm.hasClass( 'selected' ) ) { - $itm.addClass( 'selected' ); - $itm.find( 'td:first' ).prepend( '<div class="repeater-list-check"><span class="glyphicon glyphicon-ok"></span></div>' ); - } - - } else { - $itm.find( '.repeater-list-check' ).remove(); - $itm.removeClass( 'selected' ); - } - } - - if ( !$.isArray( items ) ) { - items = [ items ]; - } - - if ( force === true || selectable === 'multi' ) { - l = items.length; - } else if ( selectable ) { - l = ( items.length > 0 ) ? 1 : 0; - } else { - l = 0; - } - - for ( i = 0; i < l; i++ ) { - if ( items[ i ].index !== undefined ) { - $item = this.$canvas.find( '.repeater-list table tbody tr:nth-child(' + ( items[ i ].index + 1 ) + ')' ); - if ( $item.length > 0 ) { - selectItem( $item, items[ i ].selected ); - } - - } else if ( items[ i ].property !== undefined && items[ i ].value !== undefined ) { - this.$canvas.find( '.repeater-list table tbody tr' ).each( checkIfItemMatchesValue ); - } - - } - }; - - $.fn.repeater.Constructor.prototype.list_sizeHeadings = function() { - var $table = this.$element.find( '.repeater-list table' ); - $table.find( 'thead th' ).each( function() { - var $hr = $( this ); - var $heading = $hr.find( '.repeater-list-heading' ); - $heading.outerHeight( $hr.outerHeight() ); - $heading.outerWidth( $hr.outerWidth() ); - } ); - }; - - $.fn.repeater.Constructor.prototype.list_setFrozenColumns = function() { - var frozenTable = this.$canvas.find( '.table-frozen' ); - var $wrapper = this.$element.find( '.repeater-canvas' ); - var $table = this.$element.find( '.repeater-list .repeater-list-wrapper > table' ); - var repeaterWrapper = this.$element.find( '.repeater-list' ); - var numFrozenColumns = this.viewOptions.list_frozenColumns; - var self = this; - - if ( this.viewOptions.list_selectable === 'multi' ) { - numFrozenColumns = numFrozenColumns + 1; - $wrapper.addClass( 'multi-select-enabled' ); - } - - if ( frozenTable.length < 1 ) { - //setup frozen column markup - //main wrapper and remove unneeded columns - var $frozenColumnWrapper = $( '<div class="frozen-column-wrapper"></div>' ).insertBefore( $table ); - var $frozenColumn = $table.clone().addClass( 'table-frozen' ); - $frozenColumn.find( 'th:not(:lt(' + numFrozenColumns + '))' ).remove(); - $frozenColumn.find( 'td:not(:nth-child(n+0):nth-child(-n+' + numFrozenColumns + '))' ).remove(); - - //need to set absolute heading for vertical scrolling - var $frozenThead = $frozenColumn.clone().removeClass( 'table-frozen' ); - $frozenThead.find( 'tbody' ).remove(); - var $frozenTheadWrapper = $( '<div class="frozen-thead-wrapper"></div>' ).append( $frozenThead ); - - $frozenColumnWrapper.append( $frozenColumn ); - repeaterWrapper.append( $frozenTheadWrapper ); - this.$canvas.addClass( 'frozen-enabled' ); - } - - this.$element.find( '.repeater-list table.table-frozen tr' ).each( function( i, elem ) { - $( this ).height( $table.find( 'tr:eq(' + i + ')' ).height() ); - } ); - - var columnWidth = $table.find( 'td:eq(0)' ).outerWidth(); - this.$element.find( '.frozen-column-wrapper, .frozen-thead-wrapper' ).width( columnWidth ); - - $( '.frozen-thead-wrapper .repeater-list-heading' ).on( 'click', function() { - var index = $( this ).parent( 'th' ).index(); - index = index + 1; - self.$element.find( '.repeater-list-wrapper > table thead th:nth-child(' + index + ') .repeater-list-heading' )[ 0 ].click(); - } ); - - - }; - - $.fn.repeater.Constructor.prototype.list_positionColumns = function() { - var $wrapper = this.$element.find( '.repeater-canvas' ); - var scrollTop = $wrapper.scrollTop(); - var scrollLeft = $wrapper.scrollLeft(); - var frozenEnabled = this.viewOptions.list_frozenColumns || this.viewOptions.list_selectable === 'multi'; - var actionsEnabled = this.viewOptions.list_actions; - - var canvasWidth = this.$element.find( '.repeater-canvas' ).outerWidth(); - var tableWidth = this.$element.find( '.repeater-list .repeater-list-wrapper > table' ).outerWidth(); - - var actionsWidth = this.$element.find( '.table-actions' ) ? this.$element.find( '.table-actions' ).outerWidth() : 0; - - var shouldScroll = ( tableWidth - ( canvasWidth - actionsWidth ) ) >= scrollLeft; - - - if ( scrollTop > 0 ) { - $wrapper.find( '.repeater-list-heading' ).css( 'top', scrollTop ); - } else { - $wrapper.find( '.repeater-list-heading' ).css( 'top', '0' ); - } - if ( scrollLeft > 0 ) { - if ( frozenEnabled ) { - $wrapper.find( '.frozen-thead-wrapper' ).css( 'left', scrollLeft ); - $wrapper.find( '.frozen-column-wrapper' ).css( 'left', scrollLeft ); - } - if ( actionsEnabled && shouldScroll ) { - $wrapper.find( '.actions-thead-wrapper' ).css( 'right', -scrollLeft ); - $wrapper.find( '.actions-column-wrapper' ).css( 'right', -scrollLeft ); - } - - } else { - if ( frozenEnabled ) { - $wrapper.find( '.frozen-thead-wrapper' ).css( 'left', '0' ); - $wrapper.find( '.frozen-column-wrapper' ).css( 'left', '0' ); - } - if ( actionsEnabled ) { - $wrapper.find( '.actions-thead-wrapper' ).css( 'right', '0' ); - $wrapper.find( '.actions-column-wrapper' ).css( 'right', '0' ); - } - } - }; - - $.fn.repeater.Constructor.prototype.list_createItemActions = function() { - var actionsHtml = ''; - var self = this; - var i, l; - var $table = this.$element.find( '.repeater-list .repeater-list-wrapper > table' ); - var $actionsTable = this.$canvas.find( '.table-actions' ); - - for ( i = 0, l = this.viewOptions.list_actions.items.length; i < l; i++ ) { - var action = this.viewOptions.list_actions.items[ i ]; - var html = action.html; - - actionsHtml += '<li><a href="#" data-action="' + action.name + '" class="action-item"> ' + html + '</a></li>'; - } - - var selectlist = '<div class="btn-group">' + - '<button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" data-flip="auto" aria-expanded="false">' + - '<span class="caret"></span>' + - '</button>' + - '<ul class="dropdown-menu dropdown-menu-right" role="menu">' + - actionsHtml + - '</ul></div>'; - - if ( $actionsTable.length < 1 ) { - - var $actionsColumnWrapper = $( '<div class="actions-column-wrapper" style="width: ' + this.list_actions_width + 'px"></div>' ).insertBefore( $table ); - var $actionsColumn = $table.clone().addClass( 'table-actions' ); - $actionsColumn.find( 'th:not(:last-child)' ).remove(); - $actionsColumn.find( 'tr td:not(:last-child)' ).remove(); - - // Dont show actions dropdown in header if not multi select - if ( this.viewOptions.list_selectable === 'multi' ) { - $actionsColumn.find( 'thead tr' ).html( '<th><div class="repeater-list-heading">' + selectlist + '</div></th>' ); - //disable the header dropdown until an item is selected - $actionsColumn.find( 'thead .btn' ).attr( 'disabled', 'disabled' ); - } else { - var label = this.viewOptions.list_actions.label || '<span class="actions-hidden">a</span>'; - $actionsColumn.find( 'thead tr' ).addClass( 'empty-heading' ).html( '<th>' + label + '<div class="repeater-list-heading">' + label + '</div></th>' ); - } - - // Create Actions dropdown for each cell in actions table - var $actionsCells = $actionsColumn.find( 'td' ); - - $actionsCells.each( function( i ) { - $( this ).html( selectlist ); - $( this ).find( 'a' ).attr( 'data-row', parseInt( [ i ] ) + 1 ); - } ); - - $actionsColumnWrapper.append( $actionsColumn ); - - this.$canvas.addClass( 'actions-enabled' ); - } - - /* this.$element.find('.repeater-list .actions-column-wrapper, .repeater-list .actions-column-wrapper td, .repeater-list .actions-column-wrapper th') - .css('width', this.list_actions_width); - - this.$element.find('.repeater-list .actions-column-wrapper th .repeater-list-heading').css('width', this.list_actions_width + 1 + 'px');*/ - this.$element.find( '.repeater-list table.table-actions thead tr th' ).outerHeight( $table.find( 'thead tr th' ).outerHeight() ); - this.$element.find( '.repeater-list table.table-actions tbody tr td:first-child' ).each( function( i, elem ) { - $( this ).outerHeight( $table.find( 'tbody tr:eq(' + i + ') td' ).outerHeight() ); - } ); - - - //row level actions click - this.$element.find( '.table-actions tbody .action-item' ).on( 'click', function() { - var actionName = $( this ).data( 'action' ); - var row = $( this ).data( 'row' ); - var selected = { - actionName: actionName, - rows: [ row ] - }; - self.list_getActionItems( selected ); - } ); - // bulk actions click - this.$element.find( '.table-actions thead .action-item' ).on( 'click', function() { - var actionName = $( this ).data( 'action' ); - var selected = { - actionName: actionName, - rows: [] - }; - self.$element.find( '.repeater-list-wrapper > table .selected' ).each( function() { - var index = $( this ).index(); - index = index + 1; - selected.rows.push( index ); - } ); - - self.list_getActionItems( selected ); - } ); - }; - - $.fn.repeater.Constructor.prototype.list_getActionItems = function( selected ) { - var i; - var selectedObj = []; - var actionObj = $.grep( this.viewOptions.list_actions.items, function( actions ) { - return actions.name === selected.actionName; - } )[ 0 ]; - for ( i = 0; i < selected.rows.length; i++ ) { - var clickedRow = this.$canvas.find( '.repeater-list-wrapper > table tbody tr:nth-child(' + selected.rows[ i ] + ')' ); - selectedObj.push( { - item: clickedRow, - rowData: clickedRow.data( 'item_data' ) - } ); - } - if ( selectedObj.length === 1 ) { - selectedObj = selectedObj[ 0 ]; - } - - if ( actionObj.clickAction ) { - actionObj.clickAction( selectedObj, function() {} ); - } - }; - - $.fn.repeater.Constructor.prototype.list_sizeActionsTable = function() { - var $table = this.$element.find( '.repeater-list-wrapper > table' ); - var $actionsTableHeading = this.$element.find( '.repeater-list-wrapper .actions-column-wrapper thead th .repeater-list-heading' ); - $actionsTableHeading.outerHeight( $table.find( 'thead th .repeater-list-heading' ).outerHeight() ); - }; - - $.fn.repeater.Constructor.prototype.list_frozenOptionsInitialize = function() { - var self = this; - var isFrozen = this.viewOptions.list_frozenColumns; - var isActions = this.viewOptions.list_actions; - var isMulti = this.viewOptions.list_selectable === 'multi'; - - var $checkboxes = this.$element.find( '.frozen-column-wrapper .checkbox-inline' ); - - var $everyTable = this.$element.find( '.repeater-list table' ); - - - - //Make sure if row is hovered that it is shown in frozen column as well - this.$element.find( 'tr.selectable' ).on( 'mouseover mouseleave', function( e ) { - var index = $( this ).index(); - index = index + 1; - if ( e.type === 'mouseover' ) { - $everyTable.find( 'tbody tr:nth-child(' + index + ')' ).addClass( 'hovered' ); - } else { - $everyTable.find( 'tbody tr:nth-child(' + index + ')' ).removeClass( 'hovered' ); - } - } ); - - $checkboxes.checkbox(); - - this.$element.find( '.table-frozen tbody .checkbox-inline' ).on( 'change', function( e ) { - e.preventDefault(); - var row = $( this ).attr( 'data-row' ); - row = parseInt( row ) + 1; - self.$element.find( '.repeater-list-wrapper > table tbody tr:nth-child(' + row + ')' ).click(); - } ); - - this.$element.find( '.frozen-thead-wrapper thead .checkbox-inline' ).on( 'change', function() { - if ( $( this ).checkbox( 'isChecked' ) ) { - self.$element.find( '.repeater-list-wrapper > table tbody tr:not(.selected)' ).click(); - self.$element.trigger( 'selected.fu.repeaterList', $checkboxes ); - } else { - self.$element.find( '.repeater-list-wrapper > table tbody tr.selected' ).click(); - self.$element.trigger( 'deselected.fu.repeaterList', $checkboxes ); - } - } ); - }; - - //ADDITIONAL DEFAULT OPTIONS - $.fn.repeater.defaults = $.extend( {}, $.fn.repeater.defaults, { - list_columnRendered: null, - list_columnSizing: true, - list_columnSyncing: true, - list_highlightSortedColumn: true, - list_infiniteScroll: false, - list_noItemsHTML: 'no items found', - list_selectable: false, - list_sortClearing: false, - list_rowRendered: null, - list_frozenColumns: 0, - list_actions: false - } ); - - //EXTENSION DEFINITION - $.fn.repeater.viewTypes.list = { - cleared: function() { - if ( this.viewOptions.list_columnSyncing ) { - this.list_sizeHeadings(); - } - }, - dataOptions: function( options ) { - if ( this.list_sortDirection ) { - options.sortDirection = this.list_sortDirection; - } - if ( this.list_sortProperty ) { - options.sortProperty = this.list_sortProperty; - } - return options; - }, - initialize: function( helpers, callback ) { - this.list_sortDirection = null; - this.list_sortProperty = null; - this.list_actions_width = ( this.viewOptions.list_actions.width !== undefined ) ? this.viewOptions.list_actions.width : 37; - this.list_noItems = false; - callback(); - }, - resize: function() { - if ( this.viewOptions.list_columnSyncing ) { - this.list_sizeHeadings(); - } - }, - selected: function() { - var infScroll = this.viewOptions.list_infiniteScroll; - var opts; - - this.list_firstRender = true; - this.$loader.addClass( 'noHeader' ); - - if ( infScroll ) { - opts = ( typeof infScroll === 'object' ) ? infScroll : {}; - this.infiniteScrolling( true, opts ); - } - }, - before: function( helpers ) { - var $listContainer = helpers.container.find( '.repeater-list' ); - var self = this; - var $table; - - if ( $listContainer.length < 1 ) { - $listContainer = $( '<div class="repeater-list ' + specialBrowserClass() + '" data-preserve="shallow"><div class="repeater-list-wrapper" data-infinite="true" data-preserve="shallow"><table aria-readonly="true" class="table" data-preserve="shallow" role="grid"></table></div></div>' ); - $listContainer.find( '.repeater-list-wrapper' ).on( 'scroll.fu.repeaterList', function() { - if ( self.viewOptions.list_columnSyncing ) { - self.list_positionHeadings(); - } - } ); - if ( self.viewOptions.list_frozenColumns || self.viewOptions.list_actions || self.viewOptions.list_selectable === 'multi' ) { - helpers.container.on( 'scroll.fu.repeaterList', function() { - self.list_positionColumns(); - } ); - } - - helpers.container.append( $listContainer ); - } - helpers.container.removeClass( 'actions-enabled actions-enabled multi-select-enabled' ); - - $table = $listContainer.find( 'table' ); - renderThead.call( this, $table, helpers.data ); - renderTbody.call( this, $table, helpers.data ); - - return false; - }, - renderItem: function( helpers ) { - renderRow.call( this, helpers.container, helpers.subset, helpers.index ); - return false; - }, - after: function() { - var $sorted; - - if ( ( this.viewOptions.list_frozenColumns || this.viewOptions.list_selectable === 'multi' ) && !this.list_noItems ) { - this.list_setFrozenColumns(); - } - - if ( this.viewOptions.list_actions && !this.list_noItems ) { - this.list_createItemActions(); - this.list_sizeActionsTable(); - } - - if ( ( this.viewOptions.list_frozenColumns || this.viewOptions.list_actions || this.viewOptions.list_selectable === 'multi' ) && !this.list_noItems ) { - this.list_positionColumns(); - this.list_frozenOptionsInitialize(); - } - - if ( this.viewOptions.list_columnSyncing ) { - this.list_sizeHeadings(); - this.list_positionHeadings(); - } - - $sorted = this.$canvas.find( '.repeater-list-wrapper > table .repeater-list-heading.sorted' ); - if ( $sorted.length > 0 ) { - this.list_highlightColumn( $sorted.data( 'fu_item_index' ) ); - } - - return false; - } - }; - } - - //ADDITIONAL METHODS - function renderColumn( $row, rows, rowIndex, columns, columnIndex ) { - var className = columns[ columnIndex ].className; - var content = rows[ rowIndex ][ columns[ columnIndex ].property ]; - var $col = $( '<td></td>' ); - var width = columns[ columnIndex ]._auto_width; - - var property = columns[ columnIndex ].property; - if ( this.viewOptions.list_actions !== false && property === '@_ACTIONS_@' ) { - content = '<div class="repeater-list-actions-placeholder" style="width: ' + this.list_actions_width + 'px"></div>'; - } - - content = ( content !== undefined ) ? content : ''; - - $col.addClass( ( ( className !== undefined ) ? className : '' ) ).append( content ); - if ( width !== undefined ) { - $col.outerWidth( width ); - } - $row.append( $col ); - - if ( this.viewOptions.list_selectable === 'multi' && columns[ columnIndex ].property === '@_CHECKBOX_@' ) { - var checkBoxMarkup = '<label data-row="' + rowIndex + '" class="checkbox-custom checkbox-inline body-checkbox">' + - '<input class="sr-only" type="checkbox"></label>'; - - $col.html( checkBoxMarkup ); - } - - if ( !( columns[ columnIndex ].property === '@_CHECKBOX_@' || columns[ columnIndex ].property === '@_ACTIONS_@' ) && this.viewOptions.list_columnRendered ) { - this.viewOptions.list_columnRendered( { - container: $row, - columnAttr: columns[ columnIndex ].property, - item: $col, - rowData: rows[ rowIndex ] - }, function() {} ); - } - } - - function renderHeader( $tr, columns, index ) { - var chevDown = 'glyphicon-chevron-down'; - var chevron = '.glyphicon.rlc:first'; - var chevUp = 'glyphicon-chevron-up'; - var $div = $( '<div class="repeater-list-heading"><span class="glyphicon rlc"></span></div>' ); - var checkBoxMarkup = '<div class="repeater-list-heading header-checkbox"><label class="checkbox-custom checkbox-inline">' + - '<input class="sr-only" type="checkbox"></label><div class="clearfix"></div></div>'; - var $header = $( '<th></th>' ); - var self = this; - var $both, className, sortable, $span, $spans; - - $div.data( 'fu_item_index', index ); - $div.prepend( columns[ index ].label ); - $header.html( $div.html() ).find( '[id]' ).removeAttr( 'id' ); - - if ( columns[ index ].property !== '@_CHECKBOX_@' ) { - $header.append( $div ); - } else { - $header.append( checkBoxMarkup ); - } - - $both = $header.add( $div ); - $span = $div.find( chevron ); - $spans = $span.add( $header.find( chevron ) ); - - if ( this.viewOptions.list_actions && columns[ index ].property === '@_ACTIONS_@' ) { - var width = this.list_actions_width; - $header.css( 'width', width ); - $div.css( 'width', width ); - } - - className = columns[ index ].className; - if ( className !== undefined ) { - $both.addClass( className ); - } - - sortable = columns[ index ].sortable; - if ( sortable ) { - $both.addClass( 'sortable' ); - $div.on( 'click.fu.repeaterList', function() { - self.list_sortProperty = ( typeof sortable === 'string' ) ? sortable : columns[ index ].property; - if ( $div.hasClass( 'sorted' ) ) { - if ( $span.hasClass( chevUp ) ) { - $spans.removeClass( chevUp ).addClass( chevDown ); - self.list_sortDirection = 'desc'; - } else { - if ( !self.viewOptions.list_sortClearing ) { - $spans.removeClass( chevDown ).addClass( chevUp ); - self.list_sortDirection = 'asc'; - } else { - $both.removeClass( 'sorted' ); - $spans.removeClass( chevDown ); - self.list_sortDirection = null; - self.list_sortProperty = null; - } - } - - } else { - $tr.find( 'th, .repeater-list-heading' ).removeClass( 'sorted' ); - $spans.removeClass( chevDown ).addClass( chevUp ); - self.list_sortDirection = 'asc'; - $both.addClass( 'sorted' ); - } - - self.render( { - clearInfinite: true, - pageIncrement: null - } ); - } ); - } - - if ( columns[ index ].sortDirection === 'asc' || columns[ index ].sortDirection === 'desc' ) { - $tr.find( 'th, .repeater-list-heading' ).removeClass( 'sorted' ); - $both.addClass( 'sortable sorted' ); - if ( columns[ index ].sortDirection === 'asc' ) { - $spans.addClass( chevUp ); - this.list_sortDirection = 'asc'; - } else { - $spans.addClass( chevDown ); - this.list_sortDirection = 'desc'; - } - - this.list_sortProperty = ( typeof sortable === 'string' ) ? sortable : columns[ index ].property; - } - - $tr.append( $header ); - } - - function renderRow( $tbody, rows, index ) { - var $row = $( '<tr></tr>' ); - var self = this; - var i, l; - var isMulti = this.viewOptions.list_selectable === 'multi'; - var isActions = this.viewOptions.list_actions; - - if ( this.viewOptions.list_selectable ) { - $row.addClass( 'selectable' ); - $row.attr( 'tabindex', 0 ); // allow items to be tabbed to / focused on - $row.data( 'item_data', rows[ index ] ); - - $row.on( 'click.fu.repeaterList', function() { - var $item = $( this ); - var index = $( this ).index(); - index = index + 1; - var $frozenRow = self.$element.find( '.frozen-column-wrapper tr:nth-child(' + index + ')' ); - var $actionsRow = self.$element.find( '.actions-column-wrapper tr:nth-child(' + index + ')' ); - var $checkBox = self.$element.find( '.frozen-column-wrapper tr:nth-child(' + index + ') .checkbox-inline' ); - - if ( $item.is( '.selected' ) ) { - $item.removeClass( 'selected' ); - if ( isMulti ) { - $checkBox.checkbox( 'uncheck' ); - $frozenRow.removeClass( 'selected' ); - if ( isActions ) { - $actionsRow.removeClass( 'selected' ); - } - } else { - $item.find( '.repeater-list-check' ).remove(); - } - - self.$element.trigger( 'deselected.fu.repeaterList', $item ); - } else { - if ( !isMulti ) { - self.$canvas.find( '.repeater-list-check' ).remove(); - self.$canvas.find( '.repeater-list tbody tr.selected' ).each( function() { - $( this ).removeClass( 'selected' ); - self.$element.trigger( 'deselected.fu.repeaterList', $( this ) ); - } ); - $item.find( 'td:first' ).prepend( '<div class="repeater-list-check"><span class="glyphicon glyphicon-ok"></span></div>' ); - $item.addClass( 'selected' ); - $frozenRow.addClass( 'selected' ); - } else { - $checkBox.checkbox( 'check' ); - $item.addClass( 'selected' ); - $frozenRow.addClass( 'selected' ); - if ( isActions ) { - $actionsRow.addClass( 'selected' ); - } - } - self.$element.trigger( 'selected.fu.repeaterList', $item ); - } - var $selected = self.$canvas.find( '.repeater-list-wrapper > table .selected' ); - var $actionsColumn = self.$element.find( '.table-actions' ); - - if ( $selected.length > 0 ) { - $actionsColumn.find( 'thead .btn' ).removeAttr( 'disabled' ); - } else { - $actionsColumn.find( 'thead .btn' ).attr( 'disabled', 'disabled' ); - } - } ); - - // allow selection via enter key - $row.keyup( function( e ) { - if ( e.keyCode === 13 ) { - // triggering a standard click event to be caught by the row click handler above - $row.trigger( 'click.fu.repeaterList' ); - } - } ); - } - - if ( this.viewOptions.list_actions && !this.viewOptions.list_selectable ) { - $row.data( 'item_data', rows[ index ] ); - } - - $tbody.append( $row ); - - for ( i = 0, l = this.list_columns.length; i < l; i++ ) { - renderColumn.call( this, $row, rows, index, this.list_columns, i ); - } - - if ( this.viewOptions.list_rowRendered ) { - this.viewOptions.list_rowRendered( { - container: $tbody, - item: $row, - rowData: rows[ index ] - }, function() {} ); - } - } - - function renderTbody( $table, data ) { - var $tbody = $table.find( 'tbody' ); - var $empty; - - if ( $tbody.length < 1 ) { - $tbody = $( '<tbody data-container="true"></tbody>' ); - $table.append( $tbody ); - } - - if ( typeof data.error === 'string' && data.error.length > 0 ) { - $empty = $( '<tr class="empty text-danger"><td colspan="' + this.list_columns.length + '"></td></tr>' ); - $empty.find( 'td' ).append( data.error ); - $tbody.append( $empty ); - } else if ( data.items && data.items.length < 1 ) { - $empty = $( '<tr class="empty"><td colspan="' + this.list_columns.length + '"></td></tr>' ); - $empty.find( 'td' ).append( this.viewOptions.list_noItemsHTML ); - $tbody.append( $empty ); - } - } - - function renderThead( $table, data ) { - var columns = data.columns || []; - var $thead = $table.find( 'thead' ); - var i, j, l, $tr; - - function differentColumns( oldCols, newCols ) { - if ( !newCols ) { - return false; - } - if ( !oldCols || ( newCols.length !== oldCols.length ) ) { - return true; - } - for ( i = 0, l = newCols.length; i < l; i++ ) { - if ( !oldCols[ i ] ) { - return true; - } else { - for ( j in newCols[ i ] ) { - if ( oldCols[ i ][ j ] !== newCols[ i ][ j ] ) { - return true; - } - - } - } - - } - return false; - } - - if ( this.list_firstRender || differentColumns( this.list_columns, columns ) || $thead.length === 0 ) { - $thead.remove(); - - if ( data.count < 1 ) { - this.list_noItems = true; - } - - if ( this.viewOptions.list_selectable === 'multi' && !this.list_noItems ) { - var checkboxColumn = { - label: 'c', - property: '@_CHECKBOX_@', - sortable: false - }; - columns.splice( 0, 0, checkboxColumn ); - } - - this.list_columns = columns; - this.list_firstRender = false; - this.$loader.removeClass( 'noHeader' ); - - if ( this.viewOptions.list_actions && !this.list_noItems ) { - var actionsColumn = { - label: this.viewOptions.list_actions.label || '<span class="actions-hidden">a</span>', - property: '@_ACTIONS_@', - sortable: false, - width: this.list_actions_width - }; - columns.push( actionsColumn ); - } - - - $thead = $( '<thead data-preserve="deep"><tr></tr></thead>' ); - $tr = $thead.find( 'tr' ); - for ( i = 0, l = columns.length; i < l; i++ ) { - renderHeader.call( this, $tr, columns, i ); - } - $table.prepend( $thead ); - - if ( this.viewOptions.list_selectable === 'multi' && !this.list_noItems ) { - //after checkbox column is created need to get width of checkbox column from - //its css class - var checkboxWidth = this.$element.find( '.repeater-list-wrapper .header-checkbox' ).outerWidth(); - var selectColumn = $.grep( columns, function( column ) { - return column.property === '@_CHECKBOX_@'; - } )[ 0 ]; - selectColumn.width = checkboxWidth; - } - sizeColumns.call( this, $tr ); - } - } - - function sizeColumns( $tr ) { - var auto = []; - var self = this; - var i, l, newWidth, taken, total; - - if ( this.viewOptions.list_columnSizing ) { - i = 0; - taken = 0; - total = 0; - $tr.find( 'th' ).each( function() { - var $th = $( this ); - var isLast = ( $th.next( 'th' ).length === 0 ); - var width; - if ( self.list_columns[ i ].width !== undefined ) { - width = self.list_columns[ i ].width; - $th.outerWidth( width ); - taken += $th.outerWidth(); - total += $th.outerWidth(); - if ( !isLast ) { - self.list_columns[ i ]._auto_width = width; - } else { - $th.outerWidth( '' ); - } - - } else { - var outerWidth = $th.find( '.repeater-list-heading' ).outerWidth(); - total += $th.outerWidth(); - auto.push( { - col: $th, - index: i, - last: isLast, - minWidth: outerWidth - } ); - } - - i++; - } ); - - l = auto.length; - - if ( l > 0 ) { - var canvasWidth = this.$canvas.find( '.repeater-list-wrapper' ).outerWidth(); - newWidth = Math.floor( ( canvasWidth - taken ) / l ); - for ( i = 0; i < l; i++ ) { - if ( auto[ i ].minWidth > newWidth ) { - newWidth = auto[ i ].minWidth; - } - if ( !auto[ i ].last || total > canvasWidth ) { - auto[ i ].col.outerWidth( newWidth ); - this.list_columns[ auto[ i ].index ]._auto_width = newWidth; - } - - } - } - } - } - - function specialBrowserClass() { - var ua = window.navigator.userAgent; - var msie = ua.indexOf( "MSIE " ); - var firefox = ua.indexOf( 'Firefox' ); - - if ( msie > 0 ) { - return 'ie-' + parseInt( ua.substring( msie + 5, ua.indexOf( ".", msie ) ) ); - } else if ( firefox > 0 ) { - return 'firefox'; - } else { - return ''; - } - } - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Repeater - Thumbnail View Plugin - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - if ( $.fn.repeater ) { - //ADDITIONAL METHODS - $.fn.repeater.Constructor.prototype.thumbnail_clearSelectedItems = function() { - this.$canvas.find( '.repeater-thumbnail-cont .selectable.selected' ).removeClass( 'selected' ); - }; - - $.fn.repeater.Constructor.prototype.thumbnail_getSelectedItems = function() { - var selected = []; - this.$canvas.find( '.repeater-thumbnail-cont .selectable.selected' ).each( function() { - selected.push( $( this ) ); - } ); - return selected; - }; - - $.fn.repeater.Constructor.prototype.thumbnail_setSelectedItems = function( items, force ) { - var selectable = this.viewOptions.thumbnail_selectable; - var self = this; - var i, $item, l, n; - - //this function is necessary because lint yells when a function is in a loop - function compareItemIndex() { - if ( n === items[ i ].index ) { - $item = $( this ); - return false; - } else { - n++; - } - } - - //this function is necessary because lint yells when a function is in a loop - function compareItemSelector() { - $item = $( this ); - if ( $item.is( items[ i ].selector ) ) { - selectItem( $item, items[ i ].selected ); - } - } - - function selectItem( $itm, select ) { - select = ( select !== undefined ) ? select : true; - if ( select ) { - if ( !force && selectable !== 'multi' ) { - self.thumbnail_clearSelectedItems(); - } - - $itm.addClass( 'selected' ); - } else { - $itm.removeClass( 'selected' ); - } - } - - if ( !$.isArray( items ) ) { - items = [ items ]; - } - - if ( force === true || selectable === 'multi' ) { - l = items.length; - } else if ( selectable ) { - l = ( items.length > 0 ) ? 1 : 0; - } else { - l = 0; - } - - for ( i = 0; i < l; i++ ) { - if ( items[ i ].index !== undefined ) { - $item = $(); - n = 0; - this.$canvas.find( '.repeater-thumbnail-cont .selectable' ).each( compareItemIndex ); - if ( $item.length > 0 ) { - selectItem( $item, items[ i ].selected ); - } - - } else if ( items[ i ].selector ) { - this.$canvas.find( '.repeater-thumbnail-cont .selectable' ).each( compareItemSelector ); - } - } - }; - - //ADDITIONAL DEFAULT OPTIONS - $.fn.repeater.defaults = $.extend( {}, $.fn.repeater.defaults, { - thumbnail_alignment: 'left', - thumbnail_infiniteScroll: false, - thumbnail_itemRendered: null, - thumbnail_noItemsHTML: 'no items found', - thumbnail_selectable: false, - thumbnail_template: '<div class="thumbnail repeater-thumbnail"><img height="75" src="{{src}}" width="65"><span>{{name}}</span></div>' - } ); - - //EXTENSION DEFINITION - $.fn.repeater.viewTypes.thumbnail = { - selected: function() { - var infScroll = this.viewOptions.thumbnail_infiniteScroll; - var opts; - if ( infScroll ) { - opts = ( typeof infScroll === 'object' ) ? infScroll : {}; - this.infiniteScrolling( true, opts ); - } - }, - before: function( helpers ) { - var alignment = this.viewOptions.thumbnail_alignment; - var $cont = this.$canvas.find( '.repeater-thumbnail-cont' ); - var data = helpers.data; - var response = {}; - var $empty, validAlignments; - - if ( $cont.length < 1 ) { - $cont = $( '<div class="clearfix repeater-thumbnail-cont" data-container="true" data-infinite="true" data-preserve="shallow"></div>' ); - if ( alignment && alignment !== 'none' ) { - validAlignments = { - 'center': 1, - 'justify': 1, - 'left': 1, - 'right': 1 - }; - alignment = ( validAlignments[ alignment ] ) ? alignment : 'justify'; - $cont.addClass( 'align-' + alignment ); - this.thumbnail_injectSpacers = true; - } else { - this.thumbnail_injectSpacers = false; - } - response.item = $cont; - } else { - response.action = 'none'; - } - - if ( data.items && data.items.length < 1 ) { - $empty = $( '<div class="empty"></div>' ); - $empty.append( this.viewOptions.thumbnail_noItemsHTML ); - $cont.append( $empty ); - } else { - $cont.find( '.empty:first' ).remove(); - } - - return response; - }, - renderItem: function( helpers ) { - var selectable = this.viewOptions.thumbnail_selectable; - var selected = 'selected'; - var self = this; - var $thumbnail = $( fillTemplate( helpers.subset[ helpers.index ], this.viewOptions.thumbnail_template ) ); - - if ( selectable ) { - $thumbnail.addClass( 'selectable' ); - $thumbnail.on( 'click', function() { - if ( !$thumbnail.hasClass( selected ) ) { - if ( selectable !== 'multi' ) { - self.$canvas.find( '.repeater-thumbnail-cont .selectable.selected' ).each( function() { - var $itm = $( this ); - $itm.removeClass( selected ); - self.$element.trigger( 'deselected.fu.repeaterThumbnail', $itm ); - } ); - } - - $thumbnail.addClass( selected ); - self.$element.trigger( 'selected.fu.repeaterThumbnail', $thumbnail ); - } else { - $thumbnail.removeClass( selected ); - self.$element.trigger( 'deselected.fu.repeaterThumbnail', $thumbnail ); - } - } ); - } - - helpers.container.append( $thumbnail ); - if ( this.thumbnail_injectSpacers ) { - $thumbnail.after( '<span class="spacer"> </span>' ); - } - - if ( this.viewOptions.thumbnail_itemRendered ) { - this.viewOptions.thumbnail_itemRendered( { - container: helpers.container, - item: $thumbnail, - itemData: helpers.subset[ helpers.index ] - }, function() {} ); - } - - return false; - } - }; - } - - //ADDITIONAL METHODS - function fillTemplate( itemData, template ) { - var invalid = false; - - function replace() { - var end, start, val; - - start = template.indexOf( '{{' ); - end = template.indexOf( '}}', start + 2 ); - - if ( start > -1 && end > -1 ) { - val = $.trim( template.substring( start + 2, end ) ); - val = ( itemData[ val ] !== undefined ) ? itemData[ val ] : ''; - template = template.substring( 0, start ) + val + template.substring( end + 2 ); - } else { - invalid = true; - } - } - - while ( !invalid && template.search( '{{' ) >= 0 ) { - replace( template ); - } - - return template; - } - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Scheduler - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.scheduler; - - // SCHEDULER CONSTRUCTOR AND PROTOTYPE - - var Scheduler = function( element, options ) { - var self = this; - - this.$element = $( element ); - this.options = $.extend( {}, $.fn.scheduler.defaults, options ); - - // cache elements - this.$startDate = this.$element.find( '.start-datetime .start-date' ); - this.$startTime = this.$element.find( '.start-datetime .start-time' ); - - this.$timeZone = this.$element.find( '.timezone-container .timezone' ); - - this.$repeatIntervalPanel = this.$element.find( '.repeat-every-panel' ); - this.$repeatIntervalSelect = this.$element.find( '.repeat-options' ); - - this.$repeatIntervalSpinbox = this.$element.find( '.repeat-every' ); - this.$repeatIntervalTxt = this.$element.find( '.repeat-every-text' ); - - this.$end = this.$element.find( '.repeat-end' ); - this.$endSelect = this.$end.find( '.end-options' ); - this.$endAfter = this.$end.find( '.end-after' ); - this.$endDate = this.$end.find( '.end-on-date' ); - - // panels - this.$recurrencePanels = this.$element.find( '.repeat-panel' ); - - - this.$repeatIntervalSelect.selectlist(); - - //initialize sub-controls - this.$element.find( '.selectlist' ).selectlist(); - this.$startDate.datepicker( this.options.startDateOptions ); - this.$startTime.combobox(); - // init start time - if ( this.$startTime.find( 'input' ).val() === '' ) { - this.$startTime.combobox( 'selectByIndex', 0 ); - } - - // every 0 days/hours doesn't make sense, change if not set - if ( this.$repeatIntervalSpinbox.find( 'input' ).val() === '0' ) { - this.$repeatIntervalSpinbox.spinbox( { - 'value': 1, - 'min': 1, - 'limitToStep': true - } ); - } else { - this.$repeatIntervalSpinbox.spinbox( { - 'min': 1, - 'limitToStep': true - } ); - } - - this.$endAfter.spinbox( { - 'value': 1, - 'min': 1, - 'limitToStep': true - } ); - this.$endDate.datepicker( this.options.endDateOptions ); - this.$element.find( '.radio-custom' ).radio(); - - // bind events: 'change' is a Bootstrap JS fired event - this.$repeatIntervalSelect.on( 'changed.fu.selectlist', $.proxy( this.repeatIntervalSelectChanged, this ) ); - this.$endSelect.on( 'changed.fu.selectlist', $.proxy( this.endSelectChanged, this ) ); - this.$element.find( '.repeat-days-of-the-week .btn-group .btn' ).on( 'change.fu.scheduler', function( e, data ) { - self.changed( e, data, true ); - } ); - this.$element.find( '.combobox' ).on( 'changed.fu.combobox', $.proxy( this.changed, this ) ); - this.$element.find( '.datepicker' ).on( 'changed.fu.datepicker', $.proxy( this.changed, this ) ); - this.$element.find( '.datepicker' ).on( 'dateClicked.fu.datepicker', $.proxy( this.changed, this ) ); - this.$element.find( '.selectlist' ).on( 'changed.fu.selectlist', $.proxy( this.changed, this ) ); - this.$element.find( '.spinbox' ).on( 'changed.fu.spinbox', $.proxy( this.changed, this ) ); - this.$element.find( '.repeat-monthly .radio-custom, .repeat-yearly .radio-custom' ).on( 'change.fu.scheduler', $.proxy( this.changed, this ) ); - }; - - Scheduler.prototype = { - constructor: Scheduler, - - destroy: function() { - var markup; - // set input value attribute - this.$element.find( 'input' ).each( function() { - $( this ).attr( 'value', $( this ).val() ); - } ); - - // empty elements to return to original markup and store - this.$element.find( '.datepicker .calendar' ).empty(); - - markup = this.$element[ 0 ].outerHTML; - - // destroy components - this.$element.find( '.combobox' ).combobox( 'destroy' ); - this.$element.find( '.datepicker' ).datepicker( 'destroy' ); - this.$element.find( '.selectlist' ).selectlist( 'destroy' ); - this.$element.find( '.spinbox' ).spinbox( 'destroy' ); - this.$element.find( '.radio-custom' ).radio( 'destroy' ); - this.$element.remove(); - - // any external bindings - // [none] - - return markup; - }, - - changed: function( e, data, propagate ) { - if ( !propagate ) { - e.stopPropagation(); - } - - this.$element.trigger( 'changed.fu.scheduler', { - data: ( data !== undefined ) ? data : $( e.currentTarget ).data(), - originalEvent: e, - value: this.getValue() - } ); - }, - - disable: function() { - this.toggleState( 'disable' ); - }, - - enable: function() { - this.toggleState( 'enable' ); - }, - - setUtcTime: function( d, t, offset ) { - var date = d.split( '-' ); - var time = t.split( ':' ); - - function z( n ) { - return ( n < 10 ? '0' : '' ) + n; - } - - var utcDate = new Date( Date.UTC( date[ 0 ], ( date[ 1 ] - 1 ), date[ 2 ], time[ 0 ], time[ 1 ], ( time[ 2 ] ? time[ 2 ] : 0 ) ) ); - - if ( offset === 'Z' ) { - utcDate.setUTCHours( utcDate.getUTCHours() + 0 ); - } else { - var re1 = '(.)'; // Any Single Character 1 - var re2 = '.*?'; // Non-greedy match on filler - var re3 = '\\d'; // Uninteresting: d - var re4 = '.*?'; // Non-greedy match on filler - var re5 = '(\\d)'; // Any Single Digit 1 - - var p = new RegExp( re1 + re2 + re3 + re4 + re5, [ "i" ] ); - var m = p.exec( offset ); - if ( m !== null ) { - var c1 = m[ 1 ]; - var d1 = m[ 2 ]; - - var modifier = ( c1 === '+' ) ? 1 : -1; - - utcDate.setUTCHours( utcDate.getUTCHours() + ( modifier * parseInt( d1, 10 ) ) ); - } - - } - - var localDifference = utcDate.getTimezoneOffset(); - utcDate.setMinutes( localDifference ); - return utcDate; - }, - - // called when the end range changes - // (Never, After, On date) - endSelectChanged: function( e, data ) { - var selectedItem, val; - - if ( !data ) { - selectedItem = this.$endSelect.selectlist( 'selectedItem' ); - val = selectedItem.value; - } else { - val = data.value; - } - - // hide all panels - this.$endAfter.parent().addClass( 'hidden' ); - this.$endAfter.parent().attr( 'aria-hidden', 'true' ); - - this.$endDate.parent().addClass( 'hidden' ); - this.$endDate.parent().attr( 'aria-hidden', 'true' ); - - if ( val === 'after' ) { - this.$endAfter.parent().removeClass( 'hide hidden' ); // hide is deprecated - this.$endAfter.parent().attr( 'aria-hidden', 'false' ); - } else if ( val === 'date' ) { - this.$endDate.parent().removeClass( 'hide hidden' ); // hide is deprecated - this.$endDate.parent().attr( 'aria-hidden', 'false' ); - } - }, - - getValue: function() { - // FREQ = frequency (secondly, minutely, hourly, daily, weekdays, weekly, monthly, yearly) - // BYDAY = when picking days (MO,TU,WE,etc) - // BYMONTH = when picking months (Jan,Feb,March) - note the values should be 1,2,3... - // BYMONTHDAY = when picking days of the month (1,2,3...) - // BYSETPOS = when picking First,Second,Third,Fourth,Last (1,2,3,4,-1) - - var interval = this.$repeatIntervalSpinbox.spinbox( 'value' ); - var pattern = ''; - var repeat = this.$repeatIntervalSelect.selectlist( 'selectedItem' ).value; - var startTime; - - if ( this.$startTime.combobox( 'selectedItem' ).value ) { - startTime = this.$startTime.combobox( 'selectedItem' ).value; - startTime = startTime.toLowerCase(); - - } else { - startTime = this.$startTime.combobox( 'selectedItem' ).text.toLowerCase(); - } - - var timeZone = this.$timeZone.selectlist( 'selectedItem' ); - var getFormattedDate; - - getFormattedDate = function( dateObj, dash ) { - var fdate = ''; - var item; - - fdate += dateObj.getFullYear(); - fdate += dash; - item = dateObj.getMonth() + 1; //because 0 indexing makes sense when dealing with months /sarcasm - fdate += ( item < 10 ) ? '0' + item : item; - fdate += dash; - item = dateObj.getDate(); - fdate += ( item < 10 ) ? '0' + item : item; - - return fdate; - }; - - var day, days, hasAm, hasPm, month, pos, startDateTime, type; - - startDateTime = '' + getFormattedDate( this.$startDate.datepicker( 'getDate' ), '-' ); - - startDateTime += 'T'; - hasAm = ( startTime.search( 'am' ) >= 0 ); - hasPm = ( startTime.search( 'pm' ) >= 0 ); - startTime = $.trim( startTime.replace( /am/g, '' ).replace( /pm/g, '' ) ).split( ':' ); - startTime[ 0 ] = parseInt( startTime[ 0 ], 10 ); - startTime[ 1 ] = parseInt( startTime[ 1 ], 10 ); - if ( hasAm && startTime[ 0 ] > 11 ) { - startTime[ 0 ] = 0; - } else if ( hasPm && startTime[ 0 ] < 12 ) { - startTime[ 0 ] += 12; - } - - startDateTime += ( startTime[ 0 ] < 10 ) ? '0' + startTime[ 0 ] : startTime[ 0 ]; - startDateTime += ':'; - startDateTime += ( startTime[ 1 ] < 10 ) ? '0' + startTime[ 1 ] : startTime[ 1 ]; - - startDateTime += ( timeZone.offset === '+00:00' ) ? 'Z' : timeZone.offset; - - if ( repeat === 'none' ) { - pattern = 'FREQ=DAILY;INTERVAL=1;COUNT=1;'; - } else if ( repeat === 'secondly' ) { - pattern = 'FREQ=SECONDLY;'; - pattern += 'INTERVAL=' + interval + ';'; - } else if ( repeat === 'minutely' ) { - pattern = 'FREQ=MINUTELY;'; - pattern += 'INTERVAL=' + interval + ';'; - } else if ( repeat === 'hourly' ) { - pattern = 'FREQ=HOURLY;'; - pattern += 'INTERVAL=' + interval + ';'; - } else if ( repeat === 'daily' ) { - pattern += 'FREQ=DAILY;'; - pattern += 'INTERVAL=' + interval + ';'; - } else if ( repeat === 'weekdays' ) { - pattern += 'FREQ=DAILY;'; - pattern += 'BYDAY=MO,TU,WE,TH,FR;'; - pattern += 'INTERVAL=1;'; - } else if ( repeat === 'weekly' ) { - days = []; - this.$element.find( '.repeat-days-of-the-week .btn-group input:checked' ).each( function() { - days.push( $( this ).data().value ); - } ); - - pattern += 'FREQ=WEEKLY;'; - pattern += 'BYDAY=' + days.join( ',' ) + ';'; - pattern += 'INTERVAL=' + interval + ';'; - } else if ( repeat === 'monthly' ) { - pattern += 'FREQ=MONTHLY;'; - pattern += 'INTERVAL=' + interval + ';'; - type = this.$element.find( 'input[name=repeat-monthly]:checked' ).val(); - - if ( type === 'bymonthday' ) { - day = parseInt( this.$element.find( '.repeat-monthly-date .selectlist' ).selectlist( 'selectedItem' ).text, 10 ); - pattern += 'BYMONTHDAY=' + day + ';'; - } else if ( type === 'bysetpos' ) { - days = this.$element.find( '.repeat-monthly-day .month-days' ).selectlist( 'selectedItem' ).value; - pos = this.$element.find( '.repeat-monthly-day .month-day-pos' ).selectlist( 'selectedItem' ).value; - pattern += 'BYDAY=' + days + ';'; - pattern += 'BYSETPOS=' + pos + ';'; - } - - } else if ( repeat === 'yearly' ) { - pattern += 'FREQ=YEARLY;'; - type = this.$element.find( 'input[name=repeat-yearly]:checked' ).val(); - - if ( type === 'bymonthday' ) { - // there are multiple .year-month classed elements in scheduler markup - month = this.$element.find( '.repeat-yearly-date .year-month' ).selectlist( 'selectedItem' ).value; - day = this.$element.find( '.repeat-yearly-date .year-month-day' ).selectlist( 'selectedItem' ).text; - pattern += 'BYMONTH=' + month + ';'; - pattern += 'BYMONTHDAY=' + day + ';'; - } else if ( type === 'bysetpos' ) { - days = this.$element.find( '.repeat-yearly-day .year-month-days' ).selectlist( 'selectedItem' ).value; - pos = this.$element.find( '.repeat-yearly-day .year-month-day-pos' ).selectlist( 'selectedItem' ).value; - // there are multiple .year-month classed elements in scheduler markup - month = this.$element.find( '.repeat-yearly-day .year-month' ).selectlist( 'selectedItem' ).value; - - pattern += 'BYDAY=' + days + ';'; - pattern += 'BYSETPOS=' + pos + ';'; - pattern += 'BYMONTH=' + month + ';'; - } - - } - - var end = this.$endSelect.selectlist( 'selectedItem' ).value; - var duration = ''; - - // if both UNTIL and COUNT are not specified, the recurrence will repeat forever - // http://tools.ietf.org/html/rfc2445#section-4.3.10 - if ( repeat !== 'none' ) { - if ( end === 'after' ) { - duration = 'COUNT=' + this.$endAfter.spinbox( 'value' ) + ';'; - } else if ( end === 'date' ) { - duration = 'UNTIL=' + getFormattedDate( this.$endDate.datepicker( 'getDate' ), '' ) + ';'; - } - - } - - pattern += duration; - // remove trailing semicolon - pattern = pattern.substring( pattern.length - 1 ) === ';' ? pattern.substring( 0, pattern.length - 1 ) : pattern; - - var data = { - startDateTime: startDateTime, - timeZone: timeZone, - recurrencePattern: pattern - }; - - return data; - }, - - // called when the repeat interval changes - // (None, Hourly, Daily, Weekdays, Weekly, Monthly, Yearly - repeatIntervalSelectChanged: function( e, data ) { - var selectedItem, val, txt; - - if ( !data ) { - selectedItem = this.$repeatIntervalSelect.selectlist( 'selectedItem' ); - val = selectedItem.value || ""; - txt = selectedItem.text || ""; - } else { - val = data.value; - txt = data.text; - } - - // set the text - this.$repeatIntervalTxt.text( txt ); - - switch ( val.toLowerCase() ) { - case 'hourly': - case 'daily': - case 'weekly': - case 'monthly': - this.$repeatIntervalPanel.removeClass( 'hide hidden' ); // hide is deprecated - this.$repeatIntervalPanel.attr( 'aria-hidden', 'false' ); - break; - default: - this.$repeatIntervalPanel.addClass( 'hidden' ); // hide is deprecated - this.$repeatIntervalPanel.attr( 'aria-hidden', 'true' ); - break; - } - - // hide all panels - this.$recurrencePanels.addClass( 'hidden' ); - this.$recurrencePanels.attr( 'aria-hidden', 'true' ); - - // show panel for current selection - this.$element.find( '.repeat-' + val ).removeClass( 'hide hidden' ); // hide is deprecated - this.$element.find( '.repeat-' + val ).attr( 'aria-hidden', 'false' ); - - // the end selection should only be shown when - // the repeat interval is not "None (run once)" - if ( val === 'none' ) { - this.$end.addClass( 'hidden' ); - this.$end.attr( 'aria-hidden', 'true' ); - } else { - this.$end.removeClass( 'hide hidden' ); // hide is deprecated - this.$end.attr( 'aria-hidden', 'false' ); - } - }, - - setValue: function( options ) { - var hours, i, item, l, minutes, period, recur, temp, startDate, startTime, timeOffset; - - if ( options.startDateTime ) { - temp = options.startDateTime.split( 'T' ); - startDate = temp[ 0 ]; - - if ( temp[ 1 ] ) { - temp[ 1 ] = temp[ 1 ].split( ':' ); - hours = parseInt( temp[ 1 ][ 0 ], 10 ); - minutes = ( temp[ 1 ][ 1 ] ) ? parseInt( temp[ 1 ][ 1 ].split( '+' )[ 0 ].split( '-' )[ 0 ].split( 'Z' )[ 0 ], 10 ) : 0; - period = ( hours < 12 ) ? 'AM' : 'PM'; - - if ( hours === 0 ) { - hours = 12; - } else if ( hours > 12 ) { - hours -= 12; - } - - minutes = ( minutes < 10 ) ? '0' + minutes : minutes; - startTime = hours + ':' + minutes; - temp = hours + ':' + minutes + ' ' + period; - this.$startTime.find( 'input' ).val( temp ); - this.$startTime.combobox( 'selectByText', temp ); - } else { - startTime = '00:00'; - } - } else { - startTime = '00:00'; - var currentDate = this.$startDate.datepicker( 'getDate' ); - startDate = currentDate.getFullYear() + '-' + currentDate.getMonth() + '-' + currentDate.getDate(); - } - - // create jQuery selection string for timezone object - // based on data-attributes and pass to selectlist - item = 'li'; - if ( options.timeZone ) { - if ( typeof( options.timeZone ) === 'string' ) { - item += '[data-name="' + options.timeZone + '"]'; - } else { - $.each( options.timeZone, function( key, value ) { - item += '[data-' + key + '="' + value + '"]'; - } ); - } - timeOffset = options.timeZone.offset; - this.$timeZone.selectlist( 'selectBySelector', item ); - } else if ( options.startDateTime ) { - temp = options.startDateTime.split( 'T' )[ 1 ]; - if ( temp ) { - if ( temp.search( /\+/ ) > -1 ) { - temp = '+' + $.trim( temp.split( '+' )[ 1 ] ); - } else if ( temp.search( /\-/ ) > -1 ) { - temp = '-' + $.trim( temp.split( '-' )[ 1 ] ); - } else { - temp = '+00:00'; - } - } else { - temp = '+00:00'; - } - timeOffset = ( temp === '+00:00' ) ? 'Z' : temp; - item += '[data-offset="' + temp + '"]'; - this.$timeZone.selectlist( 'selectBySelector', item ); - } else { - timeOffset = 'Z'; - } - - if ( options.recurrencePattern ) { - recur = {}; - temp = options.recurrencePattern.toUpperCase().split( ';' ); - for ( i = 0, l = temp.length; i < l; i++ ) { - if ( temp[ i ] !== '' ) { - item = temp[ i ].split( '=' ); - recur[ item[ 0 ] ] = item[ 1 ]; - } - } - - if ( recur.FREQ === 'DAILY' ) { - if ( recur.BYDAY === 'MO,TU,WE,TH,FR' ) { - item = 'weekdays'; - } else { - if ( recur.INTERVAL === '1' && recur.COUNT === '1' ) { - item = 'none'; - } else { - item = 'daily'; - } - } - } else if ( recur.FREQ === 'SECONDLY' ) { - item = 'secondly'; - } else if ( recur.FREQ === 'MINUTELY' ) { - item = 'minutely'; - } else if ( recur.FREQ === 'HOURLY' ) { - item = 'hourly'; - } else if ( recur.FREQ === 'WEEKLY' ) { - if ( recur.BYDAY ) { - item = this.$element.find( '.repeat-days-of-the-week .btn-group' ); - item.find( 'label' ).removeClass( 'active' ); - temp = recur.BYDAY.split( ',' ); - for ( i = 0, l = temp.length; i < l; i++ ) { - item.find( 'input[data-value="' + temp[ i ] + '"]' ).prop( 'checked', true ).parent().addClass( 'active' ); - } - } - - item = 'weekly'; - } else if ( recur.FREQ === 'MONTHLY' ) { - this.$element.find( '.repeat-monthly input' ).removeAttr( 'checked' ).removeClass( 'checked' ); - this.$element.find( '.repeat-monthly label.radio-custom' ).removeClass( 'checked' ); - if ( recur.BYMONTHDAY ) { - temp = this.$element.find( '.repeat-monthly-date' ); - temp.find( 'input' ).addClass( 'checked' ).prop( 'checked', true ); - temp.find( 'label.radio-custom' ).addClass( 'checked' ); - temp.find( '.selectlist' ).selectlist( 'selectByValue', recur.BYMONTHDAY ); - } else if ( recur.BYDAY ) { - temp = this.$element.find( '.repeat-monthly-day' ); - temp.find( 'input' ).addClass( 'checked' ).prop( 'checked', true ); - temp.find( 'label.radio-custom' ).addClass( 'checked' ); - if ( recur.BYSETPOS ) { - temp.find( '.month-day-pos' ).selectlist( 'selectByValue', recur.BYSETPOS ); - } - - temp.find( '.month-days' ).selectlist( 'selectByValue', recur.BYDAY ); - } - - item = 'monthly'; - } else if ( recur.FREQ === 'YEARLY' ) { - this.$element.find( '.repeat-yearly input' ).removeAttr( 'checked' ).removeClass( 'checked' ); - this.$element.find( '.repeat-yearly label.radio-custom' ).removeClass( 'checked' ); - if ( recur.BYMONTHDAY ) { - temp = this.$element.find( '.repeat-yearly-date' ); - temp.find( 'input' ).addClass( 'checked' ).prop( 'checked', true ); - temp.find( 'label.radio-custom' ).addClass( 'checked' ); - if ( recur.BYMONTH ) { - temp.find( '.year-month' ).selectlist( 'selectByValue', recur.BYMONTH ); - } - - temp.find( '.year-month-day' ).selectlist( 'selectByValue', recur.BYMONTHDAY ); - } else if ( recur.BYSETPOS ) { - temp = this.$element.find( '.repeat-yearly-day' ); - temp.find( 'input' ).addClass( 'checked' ).prop( 'checked', true ); - temp.find( 'label.radio-custom' ).addClass( 'checked' ); - temp.find( '.year-month-day-pos' ).selectlist( 'selectByValue', recur.BYSETPOS ); - if ( recur.BYDAY ) { - temp.find( '.year-month-days' ).selectlist( 'selectByValue', recur.BYDAY ); - } - - if ( recur.BYMONTH ) { - temp.find( '.year-month' ).selectlist( 'selectByValue', recur.BYMONTH ); - } - - } - - item = 'yearly'; - } else { - item = 'none'; - } - - if ( recur.COUNT ) { - this.$endAfter.spinbox( 'value', parseInt( recur.COUNT, 10 ) ); - this.$endSelect.selectlist( 'selectByValue', 'after' ); - } else if ( recur.UNTIL ) { - temp = recur.UNTIL; - if ( temp.length === 8 ) { - temp = temp.split( '' ); - temp.splice( 4, 0, '-' ); - temp.splice( 7, 0, '-' ); - temp = temp.join( '' ); - } - - var timeZone = this.$timeZone.selectlist( 'selectedItem' ); - var timezoneOffset = ( timeZone.offset === '+00:00' ) ? 'Z' : timeZone.offset; - - var utcEndHours = this.setUtcTime( temp, startTime, timezoneOffset ); - this.$endDate.datepicker( 'setDate', utcEndHours ); - - this.$endSelect.selectlist( 'selectByValue', 'date' ); - } else { - this.$endSelect.selectlist( 'selectByValue', 'never' ); - } - - this.endSelectChanged(); - - if ( recur.INTERVAL ) { - this.$repeatIntervalSpinbox.spinbox( 'value', parseInt( recur.INTERVAL, 10 ) ); - } - - this.$repeatIntervalSelect.selectlist( 'selectByValue', item ); - this.repeatIntervalSelectChanged(); - } - - var utcStartHours = this.setUtcTime( startDate, startTime, timeOffset ); - - this.$startDate.datepicker( 'setDate', utcStartHours ); - }, - - toggleState: function( action ) { - this.$element.find( '.combobox' ).combobox( action ); - this.$element.find( '.datepicker' ).datepicker( action ); - this.$element.find( '.selectlist' ).selectlist( action ); - this.$element.find( '.spinbox' ).spinbox( action ); - this.$element.find( '.radio-custom' ).radio( action ); - - if ( action === 'disable' ) { - action = 'addClass'; - } else { - action = 'removeClass'; - } - - this.$element.find( '.repeat-days-of-the-week .btn-group' )[ action ]( 'disabled' ); - }, - - value: function( options ) { - if ( options ) { - return this.setValue( options ); - } else { - return this.getValue(); - } - } - }; - - - // SCHEDULER PLUGIN DEFINITION - - $.fn.scheduler = function( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.scheduler' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.scheduler', ( data = new Scheduler( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.scheduler.defaults = {}; - - $.fn.scheduler.Constructor = Scheduler; - - $.fn.scheduler.noConflict = function() { - $.fn.scheduler = old; - return this; - }; - - - // DATA-API - - $( document ).on( 'mousedown.fu.scheduler.data-api', '[data-initialize=scheduler]', function( e ) { - var $control = $( e.target ).closest( '.scheduler' ); - if ( !$control.data( 'fu.scheduler' ) ) { - $control.scheduler( $control.data() ); - } - } ); - - // Must be domReady for AMD compatibility - $( function() { - $( '[data-initialize=scheduler]' ).each( function() { - var $this = $( this ); - if ( $this.data( 'scheduler' ) ) return; - $this.scheduler( $this.data() ); - } ); - } ); - - - - } )( jQuery ); - - - ( function( $ ) { - - /* - * Fuel UX Picker - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - - - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.picker; - - // PLACARD CONSTRUCTOR AND PROTOTYPE - - var Picker = function Picker( element, options ) { - var self = this; - this.$element = $( element ); - this.options = $.extend( {}, $.fn.picker.defaults, options ); - - this.$accept = this.$element.find( '.picker-accept' ); - this.$cancel = this.$element.find( '.picker-cancel' ); - this.$trigger = this.$element.find( '.picker-trigger' ); - this.$footer = this.$element.find( '.picker-footer' ); - this.$header = this.$element.find( '.picker-header' ); - this.$popup = this.$element.find( '.picker-popup' ); - this.$body = this.$element.find( '.picker-body' ); - - this.clickStamp = '_'; - - this.isInput = this.$trigger.is( 'input' ); - - this.$trigger.on( 'keydown.fu.picker', $.proxy( this.keyComplete, this ) ); - this.$trigger.on( 'focus.fu.picker', $.proxy( function inputFocus( e ) { - if ( typeof e === "undefined" || $( e.target ).is( 'input[type=text]' ) ) { - $.proxy( this.show(), this ); - } - }, this ) ); - this.$trigger.on( 'click.fu.picker', $.proxy( function triggerClick( e ) { - if ( !$( e.target ).is( 'input[type=text]' ) ) { - $.proxy( this.toggle(), this ); - } else { - $.proxy( this.show(), this ); - } - }, this ) ); - this.$accept.on( 'click.fu.picker', $.proxy( this.complete, this, 'accepted' ) ); - this.$cancel.on( 'click.fu.picker', function( e ) { - e.preventDefault(); - self.complete( 'cancelled' ); - } ); - - - }; - - var _isOffscreen = function _isOffscreen( picker ) { - var windowHeight = Math.max( document.documentElement.clientHeight, window.innerHeight || 0 ); - var scrollTop = $( document ).scrollTop(); - var popupTop = picker.$popup.offset(); - var popupBottom = popupTop.top + picker.$popup.outerHeight( true ); - - //if the bottom of the popup goes off the page, but the top does not, dropup. - if ( popupBottom > windowHeight + scrollTop || popupTop.top < scrollTop ) { - return true; - } else { //otherwise, prefer showing the top of the popup only vs the bottom - return false; - } - }; - - var _display = function _display( picker ) { - picker.$popup.css( 'visibility', 'hidden' ); - - _showBelow( picker ); - - //if part of the popup is offscreen try to show it above - if ( _isOffscreen( picker ) ) { - _showAbove( picker ); - - //if part of the popup is still offscreen, prefer cutting off the bottom - if ( _isOffscreen( picker ) ) { - _showBelow( picker ); - } - } - - picker.$popup.css( 'visibility', 'visible' ); - }; - - var _showAbove = function _showAbove( picker ) { - picker.$popup.css( 'top', -picker.$popup.outerHeight( true ) + 'px' ); - }; - - var _showBelow = function _showBelow( picker ) { - picker.$popup.css( 'top', picker.$trigger.outerHeight( true ) + 'px' ); - }; - - Picker.prototype = { - constructor: Picker, - - complete: function complete( action ) { - var EVENT_CALLBACK_MAP = { - 'accepted': 'onAccept', - 'cancelled': 'onCancel', - 'exited': 'onExit' - }; - var func = this.options[ EVENT_CALLBACK_MAP[ action ] ]; - - var obj = { - contents: this.$body - }; - - if ( func ) { - func( obj ); - this.$element.trigger( action + '.fu.picker', obj ); - } else { - this.$element.trigger( action + '.fu.picker', obj ); - this.hide(); - } - }, - - keyComplete: function keyComplete( e ) { - if ( this.isInput && e.keyCode === 13 ) { - this.complete( 'accepted' ); - this.$trigger.blur(); - } else if ( e.keyCode === 27 ) { - this.complete( 'exited' ); - this.$trigger.blur(); - } - }, - - destroy: function destroy() { - this.$element.remove(); - // remove any external bindings - $( document ).off( 'click.fu.picker.externalClick.' + this.clickStamp ); - // empty elements to return to original markup - // [none] - // return string of markup - return this.$element[ 0 ].outerHTML; - }, - - disable: function disable() { - this.$element.addClass( 'disabled' ); - this.$trigger.attr( 'disabled', 'disabled' ); - }, - - enable: function enable() { - this.$element.removeClass( 'disabled' ); - this.$trigger.removeAttr( 'disabled' ); - }, - - toggle: function toggle() { - if ( this.$element.hasClass( 'showing' ) ) { - this.hide(); - } else { - this.show(); - } - }, - - hide: function hide() { - if ( !this.$element.hasClass( 'showing' ) ) { - return; - } - - this.$element.removeClass( 'showing' ); - $( document ).off( 'click.fu.picker.externalClick.' + this.clickStamp ); - this.$element.trigger( 'hidden.fu.picker' ); - }, - - externalClickListener: function externalClickListener( e, force ) { - if ( force === true || this.isExternalClick( e ) ) { - this.complete( 'exited' ); - } - }, - - isExternalClick: function isExternalClick( e ) { - var el = this.$element.get( 0 ); - var exceptions = this.options.externalClickExceptions || []; - var $originEl = $( e.target ); - var i, l; - - if ( e.target === el || $originEl.parents( '.picker:first' ).get( 0 ) === el ) { - return false; - } else { - for ( i = 0, l = exceptions.length; i < l; i++ ) { - if ( $originEl.is( exceptions[ i ] ) || $originEl.parents( exceptions[ i ] ).length > 0 ) { - return false; - } - - } - } - - return true; - }, - - show: function show() { - var other; - - other = $( document ).find( '.picker.showing' ); - if ( other.length > 0 ) { - if ( other.data( 'fu.picker' ) && other.data( 'fu.picker' ).options.explicit ) { - return; - } - - other.picker( 'externalClickListener', {}, true ); - } - - this.$element.addClass( 'showing' ); - - _display( this ); - - this.$element.trigger( 'shown.fu.picker' ); - - this.clickStamp = new Date().getTime() + ( Math.floor( Math.random() * 100 ) + 1 ); - if ( !this.options.explicit ) { - $( document ).on( 'click.fu.picker.externalClick.' + this.clickStamp, $.proxy( this.externalClickListener, this ) ); - } - } - }; - - // PLACARD PLUGIN DEFINITION - - $.fn.picker = function picker( option ) { - var args = Array.prototype.slice.call( arguments, 1 ); - var methodReturn; - - var $set = this.each( function() { - var $this = $( this ); - var data = $this.data( 'fu.picker' ); - var options = typeof option === 'object' && option; - - if ( !data ) { - $this.data( 'fu.picker', ( data = new Picker( this, options ) ) ); - } - - if ( typeof option === 'string' ) { - methodReturn = data[ option ].apply( data, args ); - } - } ); - - return ( methodReturn === undefined ) ? $set : methodReturn; - }; - - $.fn.picker.defaults = { - onAccept: undefined, - onCancel: undefined, - onExit: undefined, - externalClickExceptions: [], - explicit: false - }; - - $.fn.picker.Constructor = Picker; - - $.fn.picker.noConflict = function noConflict() { - $.fn.picker = old; - return this; - }; - - // DATA-API - - $( document ).on( 'focus.fu.picker.data-api', '[data-initialize=picker]', function( e ) { - var $control = $( e.target ).closest( '.picker' ); - if ( !$control.data( 'fu.picker' ) ) { - $control.picker( $control.data() ); - } - } ); - - // Must be domReady for AMD compatibility - $( function() { - $( '[data-initialize=picker]' ).each( function() { - var $this = $( this ); - if ( $this.data( 'fu.picker' ) ) return; - $this.picker( $this.data() ); - } ); - } ); - - - - } )( jQuery ); - - -} ) ); diff --git a/elgg_clean/bower_components/fuelux/dist/js/fuelux.min.js b/elgg_clean/bower_components/fuelux/dist/js/fuelux.min.js deleted file mode 100644 index 795cec80..00000000 --- a/elgg_clean/bower_components/fuelux/dist/js/fuelux.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Fuel UX v3.11.4 - * Copyright 2012-2015 ExactTarget - * Licensed under the BSD-3-Clause license (https://github.com/ExactTarget/fuelux/blob/master/LICENSE) - */ -!function(a){"function"==typeof define&&define.amd?define(["jquery","bootstrap"],a):a(jQuery)}(function(a){if("undefined"==typeof a)throw new Error("Fuel UX's JavaScript requires jQuery");if("undefined"==typeof a.fn.dropdown||"undefined"==typeof a.fn.collapse)throw new Error("Fuel UX's JavaScript requires Bootstrap");!function(a){var b=a.fn.checkbox,c=function(b,c){if(this.options=a.extend({},a.fn.checkbox.defaults,c),"label"===b.tagName.toLowerCase()){this.$label=a(b),this.$chk=this.$label.find('input[type="checkbox"]'),this.$container=a(b).parent(".checkbox");var d=this.$chk.attr("data-toggle");this.$toggleContainer=a(d),this.$chk.on("change",a.proxy(this.itemchecked,this)),this.setInitialState()}};c.prototype={constructor:c,setInitialState:function(){var a=this.$chk,b=(this.$label,a.prop("checked")),c=a.prop("disabled");this.setCheckedState(a,b),this.setDisabledState(a,c)},setCheckedState:function(a,b){var c=a,d=this.$label,e=(this.$container,this.$toggleContainer);b?(c.prop("checked",!0),d.addClass("checked"),e.removeClass("hide hidden"),d.trigger("checked.fu.checkbox")):(c.prop("checked",!1),d.removeClass("checked"),e.addClass("hidden"),d.trigger("unchecked.fu.checkbox")),d.trigger("changed.fu.checkbox",b)},setDisabledState:function(a,b){var c=this.$label;b?(this.$chk.prop("disabled",!0),c.addClass("disabled"),c.trigger("disabled.fu.checkbox")):(this.$chk.prop("disabled",!1),c.removeClass("disabled"),c.trigger("enabled.fu.checkbox"))},itemchecked:function(b){var c=a(b.target),d=c.prop("checked");this.setCheckedState(c,d)},toggle:function(){var a=this.isChecked();a?this.uncheck():this.check()},check:function(){this.setCheckedState(this.$chk,!0)},uncheck:function(){this.setCheckedState(this.$chk,!1)},isChecked:function(){var a=this.$chk.prop("checked");return a},enable:function(){this.setDisabledState(this.$chk,!1)},disable:function(){this.setDisabledState(this.$chk,!0)},destroy:function(){return this.$label.remove(),this.$label[0].outerHTML}},c.prototype.getValue=c.prototype.isChecked,a.fn.checkbox=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.checkbox"),h="object"==typeof b&&b;g||f.data("fu.checkbox",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.checkbox.defaults={},a.fn.checkbox.Constructor=c,a.fn.checkbox.noConflict=function(){return a.fn.checkbox=b,this},a(document).on("mouseover.fu.checkbox.data-api","[data-initialize=checkbox]",function(b){var c=a(b.target);c.data("fu.checkbox")||c.checkbox(c.data())}),a(function(){a("[data-initialize=checkbox]").each(function(){var b=a(this);b.data("fu.checkbox")||b.checkbox(b.data())})})}(a),function(a){var b=a.fn.combobox,c=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.combobox.defaults,c),this.$dropMenu=this.$element.find(".dropdown-menu"),this.$input=this.$element.find("input"),this.$button=this.$element.find(".btn"),this.$element.on("click.fu.combobox","a",a.proxy(this.itemclicked,this)),this.$element.on("change.fu.combobox","input",a.proxy(this.inputchanged,this)),this.$element.on("shown.bs.dropdown",a.proxy(this.menuShown,this)),this.setDefaultSelection();var d=this.$dropMenu.children("li");0===d.length&&this.$button.addClass("disabled")};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$element[0].outerHTML},doSelect:function(a){"undefined"!=typeof a[0]?(this.$selectedItem=a,this.$input.val(this.$selectedItem.text().trim())):this.$selectedItem=null},menuShown:function(){this.options.autoResizeMenu&&this.resizeMenu()},resizeMenu:function(){var a=this.$element.outerWidth();this.$dropMenu.outerWidth(a)},selectedItem:function(){var b=this.$selectedItem,c={};if(b){var d=this.$selectedItem.text().trim();c=a.extend({text:d},this.$selectedItem.data())}else c={text:this.$input.val()};return c},selectByText:function(b){var c=a([]);this.$element.find("li").each(function(){return(this.textContent||this.innerText||a(this).text()||"").toLowerCase()===(b||"").toLowerCase()?(c=a(this),!1):void 0}),this.doSelect(c)},selectByValue:function(a){var b='li[data-value="'+a+'"]';this.selectBySelector(b)},selectByIndex:function(a){var b="li:eq("+a+")";this.selectBySelector(b)},selectBySelector:function(a){var b=this.$element.find(a);this.doSelect(b)},setDefaultSelection:function(){var a="li[data-selected=true]:first",b=this.$element.find(a);b.length>0&&(this.selectBySelector(a),b.removeData("selected"),b.removeAttr("data-selected"))},enable:function(){this.$element.removeClass("disabled"),this.$input.removeAttr("disabled"),this.$button.removeClass("disabled")},disable:function(){this.$element.addClass("disabled"),this.$input.attr("disabled",!0),this.$button.addClass("disabled")},itemclicked:function(b){this.$selectedItem=a(b.target).parent(),this.$input.val(this.$selectedItem.text().trim()).trigger("change",{synthetic:!0});var c=this.selectedItem();this.$element.trigger("changed.fu.combobox",c),b.preventDefault(),this.$element.find(".dropdown-toggle").focus()},inputchanged:function(b,c){if(!c||!c.synthetic){var d=a(b.target).val();this.selectByText(d);var e=this.selectedItem();0===e.text.length&&(e={text:d}),this.$element.trigger("changed.fu.combobox",e)}}},c.prototype.getValue=c.prototype.selectedItem,a.fn.combobox=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.combobox"),h="object"==typeof b&&b;g||f.data("fu.combobox",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.combobox.defaults={autoResizeMenu:!0},a.fn.combobox.Constructor=c,a.fn.combobox.noConflict=function(){return a.fn.combobox=b,this},a(document).on("mousedown.fu.combobox.data-api","[data-initialize=combobox]",function(b){var c=a(b.target).closest(".combobox");c.data("fu.combobox")||c.combobox(c.data())}),a(function(){a("[data-initialize=combobox]").each(function(){var b=a(this);b.data("fu.combobox")||b.combobox(b.data())})})}(a),function(a){var b="Invalid Date",c="moment.js is not available so you cannot use this function",d=[],e=!1,f=a.fn.datepicker,g=!1,h=function(){var a,b;for(g=!0,a=0,b=d.length;b>a;a++)d[a].init.call(d[a].scope);d=[]};"function"==typeof define&&define.amd?require(["moment"],function(a){e=a,h()},function(a){var b=a.requireModules&&a.requireModules[0];"moment"===b&&h()}):h();var i=function(b,c){this.$element=a(b),this.options=a.extend(!0,{},a.fn.datepicker.defaults,c),this.$calendar=this.$element.find(".datepicker-calendar"),this.$days=this.$calendar.find(".datepicker-calendar-days"),this.$header=this.$calendar.find(".datepicker-calendar-header"),this.$headerTitle=this.$header.find(".title"),this.$input=this.$element.find("input"),this.$wheels=this.$element.find(".datepicker-wheels"),this.$wheelsMonth=this.$element.find(".datepicker-wheels-month"),this.$wheelsYear=this.$element.find(".datepicker-wheels-year"),this.artificialScrolling=!1,this.formatDate=this.options.formatDate||this.formatDate,this.inputValue=null,this.moment=!1,this.momentFormat=null,this.parseDate=this.options.parseDate||this.parseDate,this.preventBlurHide=!1,this.restricted=this.options.restricted||[],this.restrictedParsed=[],this.restrictedText=this.options.restrictedText,this.sameYearOnly=this.options.sameYearOnly,this.selectedDate=null,this.yearRestriction=null,this.$calendar.find(".datepicker-today").on("click.fu.datepicker",a.proxy(this.todayClicked,this)),this.$days.on("click.fu.datepicker","tr td button",a.proxy(this.dateClicked,this)),this.$header.find(".next").on("click.fu.datepicker",a.proxy(this.next,this)),this.$header.find(".prev").on("click.fu.datepicker",a.proxy(this.prev,this)),this.$headerTitle.on("click.fu.datepicker",a.proxy(this.titleClicked,this)),this.$input.on("change.fu.datepicker",a.proxy(this.inputChanged,this)),this.$input.on("mousedown.fu.datepicker",a.proxy(this.showDropdown,this)),this.$wheels.find(".datepicker-wheels-back").on("click.fu.datepicker",a.proxy(this.backClicked,this)),this.$wheels.find(".datepicker-wheels-select").on("click.fu.datepicker",a.proxy(this.selectClicked,this)),this.$wheelsMonth.on("click.fu.datepicker","ul button",a.proxy(this.monthClicked,this)),this.$wheelsYear.on("click.fu.datepicker","ul button",a.proxy(this.yearClicked,this)),this.$wheelsYear.find("ul").on("scroll.fu.datepicker",a.proxy(this.onYearScroll,this));var f=function(){this.checkForMomentJS()&&(e=e||window.moment,this.moment=!0,this.momentFormat=this.options.momentConfig.format,this.setCulture(this.options.momentConfig.culture),e.locale=e.locale||e.lang),this.setRestrictedDates(this.restricted),this.setDate(this.options.date)||(this.$input.val(""),this.inputValue=this.$input.val()),this.sameYearOnly&&(this.yearRestriction=this.selectedDate?this.selectedDate.getFullYear():(new Date).getFullYear())};g?f.call(this):d.push({init:f,scope:this})};i.prototype={constructor:i,backClicked:function(){this.changeView("calendar")},changeView:function(a,b){"wheels"===a?(this.$calendar.hide().attr("aria-hidden","true"),this.$wheels.show().removeAttr("aria-hidden",""),b&&this.renderWheel(b)):(this.$wheels.hide().attr("aria-hidden","true"),this.$calendar.show().removeAttr("aria-hidden",""),b&&this.renderMonth(b))},checkForMomentJS:function(){return(a.isFunction(window.moment)||"undefined"!=typeof e&&a.isFunction(e))&&a.isPlainObject(this.options.momentConfig)&&"string"==typeof this.options.momentConfig.culture&&"string"==typeof this.options.momentConfig.format?!0:!1},dateClicked:function(b){var c,d=a(b.currentTarget).parents("td:first");d.hasClass("restricted")||(this.$days.find("td.selected").removeClass("selected"),d.addClass("selected"),c=new Date(d.attr("data-year"),d.attr("data-month"),d.attr("data-date")),this.selectedDate=c,this.$input.val(this.formatDate(c)),this.inputValue=this.$input.val(),this.hideDropdown(),this.$input.focus(),this.$element.trigger("dateClicked.fu.datepicker",c))},destroy:function(){return this.$element.remove(),this.$days.find("tbody").empty(),this.$wheelsYear.find("ul").empty(),this.$element[0].outerHTML},disable:function(){this.$element.addClass("disabled"),this.$element.find("input, button").attr("disabled","disabled"),this.$element.find(".input-group-btn").removeClass("open")},enable:function(){this.$element.removeClass("disabled"),this.$element.find("input, button").removeAttr("disabled")},formatDate:function(a){var b=function(a){var b="0"+a;return b.substr(b.length-2)};return this.moment?e(a).format(this.momentFormat):b(a.getMonth()+1)+"/"+b(a.getDate())+"/"+a.getFullYear()},getCulture:function(){if(this.moment)return e.locale();throw c},getDate:function(){return this.selectedDate?this.selectedDate:new Date(0/0)},getFormat:function(){if(this.moment)return this.momentFormat;throw c},getFormattedDate:function(){return this.selectedDate?this.formatDate(this.selectedDate):b},getRestrictedDates:function(){return this.restricted},inputChanged:function(){var a,b=this.$input.val();b!==this.inputValue&&(a=this.setDate(b),null===a?this.$element.trigger("inputParsingFailed.fu.datepicker",b):a===!1?this.$element.trigger("inputRestrictedDate.fu.datepicker",a):this.$element.trigger("changed.fu.datepicker",a))},showDropdown:function(){this.$input.is(":focus")||this.$element.find(".input-group-btn").addClass("open")},hideDropdown:function(){this.$element.find(".input-group-btn").removeClass("open")},isInvalidDate:function(a){var c=a.toString();return c===b||"NaN"===c?!0:!1},isRestricted:function(a,b,c){var d,e,f,g,h=this.restrictedParsed;if(this.sameYearOnly&&null!==this.yearRestriction&&c!==this.yearRestriction)return!0;for(d=0,f=h.length;f>d;d++)if(e=h[d].from,g=h[d].to,(c>e.year||c===e.year&&b>e.month||c===e.year&&b===e.month&&a>=e.date)&&(c<g.year||c===g.year&&b<g.month||c===g.year&&b===g.month&&a<=g.date))return!0;return!1},monthClicked:function(b){this.$wheelsMonth.find(".selected").removeClass("selected"),a(b.currentTarget).parent().addClass("selected")},next:function(){var a=this.$headerTitle.attr("data-month"),b=this.$headerTitle.attr("data-year");if(a++,a>11){if(this.sameYearOnly)return;a=0,b++}this.renderMonth(new Date(b,a,1))},onYearScroll:function(b){if(!this.artificialScrolling){var c,d,e=a(b.currentTarget),f="border-box"===e.css("box-sizing")?e.outerHeight():e.height(),g=e.get(0).scrollHeight,h=e.scrollTop(),i=f/(g-h)*100,j=h/g*100;if(5>j){for(d=parseInt(e.find("li:first").attr("data-year"),10),c=d-1;c>d-11;c--)e.prepend('<li data-year="'+c+'"><button type="button">'+c+"</button></li>");this.artificialScrolling=!0,e.scrollTop(e.get(0).scrollHeight-g+h),this.artificialScrolling=!1}else if(i>90)for(d=parseInt(e.find("li:last").attr("data-year"),10),c=d+1;d+11>c;c++)e.append('<li data-year="'+c+'"><button type="button">'+c+"</button></li>")}},parseDate:function(a){var b,c,d,f,g,h,i,j=this,k=new Date(0/0);if(a){if(this.moment)return f=function(a){var b=e(a,j.momentFormat);return!0===b.isValid()?b.toDate():k},d=function(a){var b=e(new Date(a));return!0===b.isValid()?b.toDate():k},g=function(a,b,c){var d=b(a);return j.isInvalidDate(d)?(d=c(d),j.isInvalidDate(d)?k:d):d},"string"==typeof a?g(a,f,d):g(a,d,f);if("string"==typeof a){if(b=new Date(Date.parse(a)),!this.isInvalidDate(b))return b;if(a=a.split("T")[0],c=/^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,i=c.exec(a),i&&(h=parseInt(i[2],10),b=new Date(i[1],h-1,i[3]),h===b.getMonth()+1))return b}else if(b=new Date(a),!this.isInvalidDate(b))return b}return new Date(0/0)},prev:function(){var a=this.$headerTitle.attr("data-month"),b=this.$headerTitle.attr("data-year");if(a--,0>a){if(this.sameYearOnly)return;a=11,b--}this.renderMonth(new Date(b,a,1))},renderMonth:function(b){b=b||new Date;var c,d,e,f,g,h,i,j,k,l,m,n=new Date(b.getFullYear(),b.getMonth(),1).getDay(),o=new Date(b.getFullYear(),b.getMonth()+1,0).getDate(),p=new Date(b.getFullYear(),b.getMonth(),0).getDate(),q=this.$headerTitle.find(".month"),r=b.getMonth(),s=new Date,t=s.getDate(),u=s.getMonth(),v=s.getFullYear(),w=this.selectedDate,x=this.$days.find("tbody"),y=b.getFullYear();for(w&&(w={date:w.getDate(),month:w.getMonth(),year:w.getFullYear()}),q.find(".current").removeClass("current"),q.find('span[data-month="'+r+'"]').addClass("current"),this.$headerTitle.find(".year").text(y),this.$headerTitle.attr({"data-month":r,"data-year":y}),x.empty(),0!==n?(c=p-n+1,i=-1):(c=1,i=0),h=35-n>=o?5:6,f=0;h>f;f++){for(m=a("<tr></tr>"),g=0;7>g;g++)l=a("<td></td>"),-1===i?(l.addClass("last-month"),j!==i&&l.addClass("first")):1===i&&(l.addClass("next-month"),j!==i&&l.addClass("first")),d=r+i,e=y,0>d?(d=11,e--):d>11&&(d=0,e++),l.attr({"data-date":c,"data-month":d,"data-year":e}),e===v&&d===u&&c===t?l.addClass("current-day"):(v>e||e===v&&u>d||e===v&&d===u&&t>c)&&(l.addClass("past"),this.options.allowPastDates||l.addClass("restricted").attr("title",this.restrictedText)),this.isRestricted(c,d,e)&&l.addClass("restricted").attr("title",this.restrictedText),w&&e===w.year&&d===w.month&&c===w.date&&l.addClass("selected"),l.html(l.hasClass("restricted")?'<span><b class="datepicker-date">'+c+"</b></span>":'<span><button type="button" class="datepicker-date">'+c+"</button></span>"),c++,k=j,j=i,-1===i&&c>p?(c=1,i=0,k!==i&&l.addClass("last")):0===i&&c>o&&(c=1,i=1,k!==i&&l.addClass("last")),f===h-1&&6===g&&l.addClass("last"),m.append(l);x.append(m)}},renderWheel:function(a){var b,c,d,e=a.getMonth(),f=this.$wheelsMonth.find("ul"),g=a.getFullYear(),h=this.$wheelsYear.find("ul");for(this.sameYearOnly?(this.$wheelsMonth.addClass("full"),this.$wheelsYear.addClass("hidden")):(this.$wheelsMonth.removeClass("full"),this.$wheelsYear.removeClass("hide hidden")),f.find(".selected").removeClass("selected"),c=f.find('li[data-month="'+e+'"]'),c.addClass("selected"),f.scrollTop(f.scrollTop()+(c.position().top-f.outerHeight()/2-c.outerHeight(!0)/2)),h.empty(),b=g-10;g+11>b;b++)h.append('<li data-year="'+b+'"><button type="button">'+b+"</button></li>");d=h.find('li[data-year="'+g+'"]'),d.addClass("selected"),this.artificialScrolling=!0,h.scrollTop(h.scrollTop()+(d.position().top-h.outerHeight()/2-d.outerHeight(!0)/2)),this.artificialScrolling=!1,c.find("button").focus()},selectClicked:function(){var a=this.$wheelsMonth.find(".selected").attr("data-month"),b=this.$wheelsYear.find(".selected").attr("data-year");this.changeView("calendar",new Date(b,a,1))},setCulture:function(a){if(!a)return!1;if(!this.moment)throw c;e.locale(a)},setDate:function(a){var b=this.parseDate(a);return this.isInvalidDate(b)?(this.selectedDate=null,this.renderMonth()):this.isRestricted(b.getDate(),b.getMonth(),b.getFullYear())?(this.selectedDate=!1,this.renderMonth()):(this.selectedDate=b,this.renderMonth(b),this.$input.val(this.formatDate(b))),this.inputValue=this.$input.val(),this.selectedDate},setFormat:function(a){if(!a)return!1;if(!this.moment)throw c;this.momentFormat=a},setRestrictedDates:function(a){var b,c,d=[],e=this,f=function(a){return a===-1/0?{date:-1/0,month:-1/0,year:-1/0}:1/0===a?{date:1/0,month:1/0,year:1/0}:(a=e.parseDate(a),{date:a.getDate(),month:a.getMonth(),year:a.getFullYear()})};for(this.restricted=a,b=0,c=a.length;c>b;b++)d.push({from:f(a[b].from),to:f(a[b].to)});this.restrictedParsed=d},titleClicked:function(){this.changeView("wheels",new Date(this.$headerTitle.attr("data-year"),this.$headerTitle.attr("data-month"),1))},todayClicked:function(){var a=new Date;(a.getMonth()+""!==this.$headerTitle.attr("data-month")||a.getFullYear()+""!==this.$headerTitle.attr("data-year"))&&this.renderMonth(a)},yearClicked:function(b){this.$wheelsYear.find(".selected").removeClass("selected"),a(b.currentTarget).parent().addClass("selected")}},i.prototype.getValue=i.prototype.getDate,a.fn.datepicker=function(b){var c,d=Array.prototype.slice.call(arguments,1),e=this.each(function(){var e=a(this),f=e.data("fu.datepicker"),g="object"==typeof b&&b;f||e.data("fu.datepicker",f=new i(this,g)),"string"==typeof b&&(c=f[b].apply(f,d))});return void 0===c?e:c},a.fn.datepicker.defaults={allowPastDates:!1,date:new Date,formatDate:null,momentConfig:{culture:"en",format:"L"},parseDate:null,restricted:[],restrictedText:"Restricted",sameYearOnly:!1},a.fn.datepicker.Constructor=i,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=f,this},a(document).on("mousedown.fu.datepicker.data-api","[data-initialize=datepicker]",function(b){var c=a(b.target).closest(".datepicker");c.data("datepicker")||c.datepicker(c.data())}),a(document).on("click.fu.datepicker.data-api",".datepicker .dropdown-menu",function(b){var c=a(b.target);(!c.is(".datepicker-date")||c.closest(".restricted").length)&&b.stopPropagation()}),a(document).on("click.fu.datepicker.data-api",".datepicker input",function(a){a.stopPropagation()}),a(function(){a("[data-initialize=datepicker]").each(function(){var b=a(this);b.data("datepicker")||b.datepicker(b.data())})})}(a),function(a){function b(b){a(b).css({visibility:"hidden"}),c(b)?b.parent().addClass("dropup"):b.parent().removeClass("dropup"),a(b).css({visibility:"visible"})}function c(a){var b=d(a),c={};return c.parentHeight=a.parent().outerHeight(),c.parentOffsetTop=a.parent().offset().top,c.dropdownHeight=a.outerHeight(),c.containerHeight=b.overflowElement.outerHeight(),c.containerOffsetTop=b.isWindow?b.overflowElement.scrollTop():b.overflowElement.offset().top,c.fromTop=c.parentOffsetTop-c.containerOffsetTop,c.fromBottom=c.containerHeight-c.parentHeight-(c.parentOffsetTop-c.containerOffsetTop),c.dropdownHeight<c.fromBottom?!1:c.dropdownHeight<c.fromTop?!0:c.dropdownHeight>=c.fromTop&&c.dropdownHeight>=c.fromBottom?c.fromTop>=c.fromBottom?!0:!1:void 0}function d(b){var c,d;return b.attr("data-target")?(c=b.attr("data-target"),d=!1):(c=window,d=!0),a.each(b.parents(),function(b,e){return"visible"!==a(e).css("overflow")?(c=e,d=!1,!1):void 0}),{overflowElement:a(c),isWindow:d}}a(document.body).on("click.fu.dropdown-autoflip","[data-toggle=dropdown][data-flip]",function(){"auto"===a(this).data().flip&&b(a(this).next(".dropdown-menu"))}),a(document.body).on("suggested.fu.pillbox",function(c,d){b(a(d)),a(d).parent().addClass("open")}),a.fn.dropdownautoflip=function(){}}(a),function(a){var b=a.fn.loader,c=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.loader.defaults,c),this.begin=this.$element.is("[data-begin]")?parseInt(this.$element.attr("data-begin"),10):1,this.delay=this.$element.is("[data-delay]")?parseFloat(this.$element.attr("data-delay")):150,this.end=this.$element.is("[data-end]")?parseInt(this.$element.attr("data-end"),10):8,this.frame=this.$element.is("[data-frame]")?parseInt(this.$element.attr("data-frame"),10):this.begin,this.isIElt9=!1,this.timeout={};var d=this.msieVersion();d!==!1&&9>d&&(this.$element.addClass("iefix"),this.isIElt9=!0),this.$element.attr("data-frame",this.frame+""),this.play()};c.prototype={constructor:c,destroy:function(){return this.pause(),this.$element.remove(),this.$element[0].outerHTML},ieRepaint:function(){this.isIElt9&&this.$element.addClass("iefix_repaint").removeClass("iefix_repaint")},msieVersion:function(){var a=window.navigator.userAgent,b=a.indexOf("MSIE ");return b>0?parseInt(a.substring(b+5,a.indexOf(".",b)),10):!1},next:function(){this.frame++,this.frame>this.end&&(this.frame=this.begin),this.$element.attr("data-frame",this.frame+""),this.ieRepaint()},pause:function(){clearTimeout(this.timeout)},play:function(){var a=this;clearTimeout(this.timeout),this.timeout=setTimeout(function(){a.next(),a.play()},this.delay)},previous:function(){this.frame--,this.frame<this.begin&&(this.frame=this.end),this.$element.attr("data-frame",this.frame+""),this.ieRepaint()},reset:function(){this.frame=this.begin,this.$element.attr("data-frame",this.frame+""),this.ieRepaint()}},a.fn.loader=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.loader"),h="object"==typeof b&&b;g||f.data("fu.loader",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.loader.defaults={},a.fn.loader.Constructor=c,a.fn.loader.noConflict=function(){return a.fn.loader=b,this},a(function(){a("[data-initialize=loader]").each(function(){var b=a(this);b.data("fu.loader")||b.loader(b.data())})})}(a),function(a){var b=a.fn.placard,c={accepted:"onAccept",cancelled:"onCancel"},d=function(b,c){var d=this;this.$element=a(b),this.options=a.extend({},a.fn.placard.defaults,c),"true"===this.$element.attr("data-ellipsis")&&(this.options.applyEllipsis=!0),this.$accept=this.$element.find(".placard-accept"),this.$cancel=this.$element.find(".placard-cancel"),this.$field=this.$element.find(".placard-field"),this.$footer=this.$element.find(".placard-footer"),this.$header=this.$element.find(".placard-header"),this.$popup=this.$element.find(".placard-popup"),this.actualValue=null,this.clickStamp="_",this.previousValue="",-1===this.options.revertOnCancel&&(this.options.revertOnCancel=this.$accept.length>0?!0:!1),this.isInput=this.$field.is("input"),this.$field.on("focus.fu.placard",a.proxy(this.show,this)),this.$field.on("keydown.fu.placard",a.proxy(this.keyComplete,this)),this.$element.on("close.fu.placard",a.proxy(this.hide,this)),this.$accept.on("click.fu.placard",a.proxy(this.complete,this,"accepted")),this.$cancel.on("click.fu.placard",function(a){a.preventDefault(),d.complete("cancelled")}),this.applyEllipsis()},e=function(a){return a.$element.hasClass("showing")?!0:!1},f=function(){var b;if(b=a(document).find(".placard.showing"),b.length>0){if(b.data("fu.placard")&&b.data("fu.placard").options.explicit)return!1;b.placard("externalClickListener",{},!0)}return!0};d.prototype={constructor:d,complete:function(a){var b=this.options[c[a]],d={previousValue:this.previousValue,value:this.getValue()};b?(b(d),this.$element.trigger(a+".fu.placard",d)):("cancelled"===a&&this.options.revertOnCancel&&this.setValue(this.previousValue,!0),this.$element.trigger(a+".fu.placard",d),this.hide())},keyComplete:function(a){this.isInput&&13===a.keyCode?(this.complete("accepted"),this.$field.blur()):27===a.keyCode&&(this.complete("cancelled"),this.$field.blur())},destroy:function(){return this.$element.remove(),a(document).off("click.fu.placard.externalClick."+this.clickStamp),this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$element[0].outerHTML},disable:function(){this.$element.addClass("disabled"),this.$field.attr("disabled","disabled"),this.hide()},applyEllipsis:function(){var a,b,c;if(this.options.applyEllipsis)if(a=this.$field.get(0),this.$field.is("input"))a.scrollLeft=0;else if(a.scrollTop=0,a.clientHeight<a.scrollHeight){for(this.actualValue=this.getValue(),this.setValue("",!0),c="",b=0;a.clientHeight>=a.scrollHeight;)c+=this.actualValue[b],this.setValue(c+"...",!0),b++;c=c.length>0?c.substring(0,c.length-1):"",this.setValue(c+"...",!0)}},enable:function(){this.$element.removeClass("disabled"),this.$field.removeAttr("disabled")},externalClickListener:function(a,b){(b===!0||this.isExternalClick(a))&&this.complete(this.options.externalClickAction)},getValue:function(){return null!==this.actualValue?this.actualValue:this.$field.val()},hide:function(){this.$element.hasClass("showing")&&(this.$element.removeClass("showing"),this.applyEllipsis(),a(document).off("click.fu.placard.externalClick."+this.clickStamp),this.$element.trigger("hidden.fu.placard"))},isExternalClick:function(b){var c,d,e=this.$element.get(0),f=this.options.externalClickExceptions||[],g=a(b.target);if(b.target===e||g.parents(".placard:first").get(0)===e)return!1;for(c=0,d=f.length;d>c;c++)if(g.is(f[c])||g.parents(f[c]).length>0)return!1;return!0},setValue:function(a,b){return"undefined"==typeof b&&(b=!this.options.applyEllipsis),this.$field.val(a),b||e(this)||this.applyEllipsis(),this.$field},show:function(){e(this)||f()&&(this.previousValue=this.$field.val(),null!==this.actualValue&&(this.setValue(this.actualValue),this.actualValue=null),this.showPlacard())},showPlacard:function(){this.$element.addClass("showing"),this.$header.length>0&&this.$popup.css("top","-"+this.$header.outerHeight(!0)+"px"),this.$footer.length>0&&this.$popup.css("bottom","-"+this.$footer.outerHeight(!0)+"px"),this.$element.trigger("shown.fu.placard"),this.clickStamp=(new Date).getTime()+(Math.floor(100*Math.random())+1),this.options.explicit||a(document).on("click.fu.placard.externalClick."+this.clickStamp,a.proxy(this.externalClickListener,this))}},a.fn.placard=function(b){var c,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.placard"),h="object"==typeof b&&b;g||f.data("fu.placard",g=new d(this,h)),"string"==typeof b&&(c=g[b].apply(g,e))});return void 0===c?f:c},a.fn.placard.defaults={onAccept:void 0,onCancel:void 0,externalClickAction:"cancelled",externalClickExceptions:[],explicit:!1,revertOnCancel:-1,applyEllipsis:!1},a.fn.placard.Constructor=d,a.fn.placard.noConflict=function(){return a.fn.placard=b,this},a(document).on("focus.fu.placard.data-api","[data-initialize=placard]",function(b){var c=a(b.target).closest(".placard");c.data("fu.placard")||c.placard(c.data())}),a(function(){a("[data-initialize=placard]").each(function(){var b=a(this);b.data("fu.placard")||b.placard(b.data())})})}(a),function(a){var b=a.fn.radio,c=function(b,c){if(this.options=a.extend({},a.fn.radio.defaults,c),"label"===b.tagName.toLowerCase()){this.$label=a(b),this.$radio=this.$label.find('input[type="radio"]'),this.groupName=this.$radio.attr("name");var d=this.$radio.attr("data-toggle");this.$toggleContainer=a(d),this.$radio.on("change",a.proxy(this.itemchecked,this)),this.setInitialState()}};c.prototype={constructor:c,setInitialState:function(){var a=this.$radio,b=(this.$label,a.prop("checked")),c=a.prop("disabled");this.setCheckedState(a,b),this.setDisabledState(a,c)},resetGroup:function(){var b=a('input[name="'+this.groupName+'"]');b.each(function(b,c){var d=a(c),e=d.parent(),f=d.attr("data-toggle"),g=a(f);e.removeClass("checked"),g.addClass("hidden")})},setCheckedState:function(b,c){var d=b,e=d.parent(),f=d.attr("data-toggle"),g=a(f);c?(this.resetGroup(),d.prop("checked",!0),e.addClass("checked"),g.removeClass("hide hidden"),e.trigger("checked.fu.radio")):(d.prop("checked",!1),e.removeClass("checked"),g.addClass("hidden"),e.trigger("unchecked.fu.radio")),e.trigger("changed.fu.radio",c)},setDisabledState:function(a,b){var c=this.$label;b?(this.$radio.prop("disabled",!0),c.addClass("disabled"),c.trigger("disabled.fu.radio")):(this.$radio.prop("disabled",!1),c.removeClass("disabled"),c.trigger("enabled.fu.radio"))},itemchecked:function(b){var c=a(b.target);this.setCheckedState(c,!0)},check:function(){this.setCheckedState(this.$radio,!0)},uncheck:function(){this.setCheckedState(this.$radio,!1)},isChecked:function(){var a=this.$radio.prop("checked");return a},enable:function(){this.setDisabledState(this.$radio,!1)},disable:function(){this.setDisabledState(this.$radio,!0)},destroy:function(){return this.$label.remove(),this.$label[0].outerHTML}},c.prototype.getValue=c.prototype.isChecked,a.fn.radio=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.radio"),h="object"==typeof b&&b;g||f.data("fu.radio",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.radio.defaults={},a.fn.radio.Constructor=c,a.fn.radio.noConflict=function(){return a.fn.radio=b,this},a(document).on("mouseover.fu.radio.data-api","[data-initialize=radio]",function(b){var c=a(b.target);c.data("fu.radio")||c.radio(c.data())}),a(function(){a("[data-initialize=radio]").each(function(){var b=a(this);b.data("fu.radio")||b.radio(b.data())})})}(a),function(a){var b=a.fn.search,c=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.search.defaults,c),this.$button=this.$element.find("button"),this.$input=this.$element.find("input"),this.$icon=this.$element.find(".glyphicon"),this.$button.on("click.fu.search",a.proxy(this.buttonclicked,this)),this.$input.on("keydown.fu.search",a.proxy(this.keypress,this)),this.$input.on("keyup.fu.search",a.proxy(this.keypressed,this)),this.activeSearch=""};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$element[0].outerHTML},search:function(a){this.$icon.hasClass("glyphicon")&&this.$icon.removeClass("glyphicon-search").addClass("glyphicon-remove"),this.activeSearch=a,this.$element.addClass("searched"),this.$element.trigger("searched.fu.search",a)},clear:function(){this.$icon.hasClass("glyphicon")&&this.$icon.removeClass("glyphicon-remove").addClass("glyphicon-search"),this.activeSearch="",this.$input.val(""),this.$element.removeClass("searched"),this.$element.trigger("cleared.fu.search")},action:function(){var a=this.$input.val(),b=""===a||a===this.activeSearch;this.activeSearch&&b?this.clear():a&&this.search(a)},buttonclicked:function(b){b.preventDefault(),a(b.currentTarget).is(".disabled, :disabled")||this.action()},keypress:function(a){13===a.which&&a.preventDefault()},keypressed:function(a){var b,c="glyphicon-remove",d="glyphicon-search";13===a.which?(a.preventDefault(),this.action()):9===a.which?a.preventDefault():(b=this.$input.val(),b===this.activeSearch&&b?this.$icon.removeClass(d).addClass(c):(this.$icon.removeClass(c).addClass(d),b?this.$element.removeClass("searched"):this.options.clearOnEmpty&&this.clear()))},disable:function(){this.$element.addClass("disabled"),this.$input.attr("disabled","disabled"),this.$button.addClass("disabled")},enable:function(){this.$element.removeClass("disabled"),this.$input.removeAttr("disabled"),this.$button.removeClass("disabled")}},a.fn.search=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.search"),h="object"==typeof b&&b;g||f.data("fu.search",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.search.defaults={clearOnEmpty:!1},a.fn.search.Constructor=c,a.fn.search.noConflict=function(){return a.fn.search=b,this -},a(document).on("mousedown.fu.search.data-api","[data-initialize=search]",function(b){var c=a(b.target).closest(".search");c.data("fu.search")||c.search(c.data())}),a(function(){a("[data-initialize=search]").each(function(){var b=a(this);b.data("fu.search")||b.search(b.data())})})}(a),function(a){var b=a.fn.selectlist,c=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.selectlist.defaults,c),this.$button=this.$element.find(".btn.dropdown-toggle"),this.$hiddenField=this.$element.find(".hidden-field"),this.$label=this.$element.find(".selected-label"),this.$dropdownMenu=this.$element.find(".dropdown-menu"),this.$element.on("click.fu.selectlist",".dropdown-menu a",a.proxy(this.itemClicked,this)),this.setDefaultSelection(),("auto"===c.resize||"auto"===this.$element.attr("data-resize"))&&this.resize();var d=this.$dropdownMenu.children("li");0===d.length&&(this.disable(),this.doSelect(a(this.options.emptyLabelHTML))),this.$element.on("shown.bs.dropdown",function(){var b=a(this);a(document).on("keypress.fu.selectlist",function(c){var d=String.fromCharCode(c.which);b.find("li").each(function(b,c){return a(c).text().charAt(0).toLowerCase()===d?(a(c).children("a").focus(),!1):void 0})})}),this.$element.on("hide.bs.dropdown",function(){a(document).off("keypress.fu.selectlist")})};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element[0].outerHTML},doSelect:function(b){var c;this.$selectedItem=c=b,this.$hiddenField.val(this.$selectedItem.attr("data-value")),this.$label.html(a(this.$selectedItem.children()[0]).html()),this.$element.find("li").each(function(){c.is(a(this))?a(this).attr("data-selected",!0):a(this).removeData("selected").removeAttr("data-selected")})},itemClicked:function(b){this.$element.trigger("clicked.fu.selectlist",this.$selectedItem),b.preventDefault(),a(b.currentTarget).parent("li").is(".disabled, :disabled")||(a(b.target).parent().is(this.$selectedItem)||this.itemChanged(b),this.$element.find(".dropdown-toggle").focus())},itemChanged:function(b){this.doSelect(a(b.target).closest("li"));var c=this.selectedItem();this.$element.trigger("changed.fu.selectlist",c)},resize:function(){var b=0,c=0,d=a("<div/>").addClass("selectlist-sizer");Boolean(a(document).find("html").hasClass("fuelux"))?a(document.body).append(d):a(".fuelux:first").append(d),d.append(this.$element.clone()),this.$element.find("a").each(function(){d.find(".selected-label").text(a(this).text()),c=d.find(".selectlist").outerWidth(),c+=d.find(".sr-only").outerWidth(),c>b&&(b=c)}),1>=b||(this.$button.css("width",b),this.$dropdownMenu.css("width",b),d.remove())},selectedItem:function(){var b=this.$selectedItem.text();return a.extend({text:b},this.$selectedItem.data())},selectByText:function(b){var c=a([]);this.$element.find("li").each(function(){return(this.textContent||this.innerText||a(this).text()||"").toLowerCase()===(b||"").toLowerCase()?(c=a(this),!1):void 0}),this.doSelect(c)},selectByValue:function(a){var b='li[data-value="'+a+'"]';this.selectBySelector(b)},selectByIndex:function(a){var b="li:eq("+a+")";this.selectBySelector(b)},selectBySelector:function(a){var b=this.$element.find(a);this.doSelect(b)},setDefaultSelection:function(){var a=this.$element.find("li[data-selected=true]").eq(0);0===a.length&&(a=this.$element.find("li").has("a").eq(0)),this.doSelect(a)},enable:function(){this.$element.removeClass("disabled"),this.$button.removeClass("disabled")},disable:function(){this.$element.addClass("disabled"),this.$button.addClass("disabled")}},c.prototype.getValue=c.prototype.selectedItem,a.fn.selectlist=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.selectlist"),h="object"==typeof b&&b;g||f.data("fu.selectlist",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.selectlist.defaults={emptyLabelHTML:'<li data-value=""><a href="#">No items</a></li>'},a.fn.selectlist.Constructor=c,a.fn.selectlist.noConflict=function(){return a.fn.selectlist=b,this},a(document).on("mousedown.fu.selectlist.data-api","[data-initialize=selectlist]",function(b){var c=a(b.target).closest(".selectlist");c.data("fu.selectlist")||c.selectlist(c.data())}),a(function(){a("[data-initialize=selectlist]").each(function(){var b=a(this);b.data("fu.selectlist")||b.selectlist(b.data())})})}(a),function(a){var b=a.fn.spinbox,c=function(b,c){this.$element=a(b),this.$element.find(".btn").on("click",function(a){a.preventDefault()}),this.options=a.extend({},a.fn.spinbox.defaults,c),this.options.step=this.$element.data("step")||this.options.step,this.options.value<this.options.min?this.options.value=this.options.min:this.options.max<this.options.value&&(this.options.value=this.options.max),this.$input=this.$element.find(".spinbox-input"),this.$input.on("focusout.fu.spinbox",this.$input,a.proxy(this.change,this)),this.$element.on("keydown.fu.spinbox",this.$input,a.proxy(this.keydown,this)),this.$element.on("keyup.fu.spinbox",this.$input,a.proxy(this.keyup,this)),this.bindMousewheelListeners(),this.mousewheelTimeout={},this.options.hold?(this.$element.on("mousedown.fu.spinbox",".spinbox-up",a.proxy(function(){this.startSpin(!0)},this)),this.$element.on("mouseup.fu.spinbox",".spinbox-up, .spinbox-down",a.proxy(this.stopSpin,this)),this.$element.on("mouseout.fu.spinbox",".spinbox-up, .spinbox-down",a.proxy(this.stopSpin,this)),this.$element.on("mousedown.fu.spinbox",".spinbox-down",a.proxy(function(){this.startSpin(!1)},this))):(this.$element.on("click.fu.spinbox",".spinbox-up",a.proxy(function(){this.step(!0)},this)),this.$element.on("click.fu.spinbox",".spinbox-down",a.proxy(function(){this.step(!1)},this))),this.switches={count:1,enabled:!0},this.switches.speed="medium"===this.options.speed?300:"fast"===this.options.speed?100:500,this.options.defaultUnit=e(this.options.defaultUnit,this.options.units)?this.options.defaultUnit:"",this.unit=this.options.defaultUnit,this.lastValue=this.options.value,this.render(),this.options.disabled&&this.disable()},d=function(a,b){return Math.round(a/b)*b},e=function(b,c){var d=!1,e=b.toLowerCase();return a.each(c,function(a,b){return b=b.toLowerCase(),e===b?(d=!0,!1):void 0}),d},f=function(a){return isNaN(parseFloat(a))?a:(a>this.options.max?a=this.options.cycle?this.options.min:this.options.max:a<this.options.min&&(a=this.options.cycle?this.options.max:this.options.min),this.options.limitToStep&&this.options.step&&(a=d(a,this.options.step),a>this.options.max?a-=this.options.step:a<this.options.min&&(a+=this.options.step)),a)};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$element[0].outerHTML},render:function(){this.setValue(this.getDisplayValue())},change:function(){this.setValue(this.getDisplayValue()),this.triggerChangedEvent()},stopSpin:function(){void 0!==this.switches.timeout&&(clearTimeout(this.switches.timeout),this.switches.count=1,this.triggerChangedEvent())},triggerChangedEvent:function(){var a=this.getValue();a!==this.lastValue&&(this.lastValue=a,this.$element.trigger("changed.fu.spinbox",a))},startSpin:function(b){if(!this.options.disabled){var c=this.switches.count;1===c?(this.step(b),c=1):c=3>c?1.5:8>c?2.5:4,this.switches.timeout=setTimeout(a.proxy(function(){this.iterate(b)},this),this.switches.speed/c),this.switches.count++}},iterate:function(a){this.step(a),this.startSpin(a)},step:function(a){this.setValue(this.getDisplayValue());var b;b=a?this.options.value+this.options.step:this.options.value-this.options.step,b=b.toFixed(5),this.setValue(b+this.unit)},getDisplayValue:function(){var a=this.parseInput(this.$input.val()),b=a?a:this.options.value;return b},setDisplayValue:function(a){this.$input.val(a)},getValue:function(){var a=this.options.value;return"."!==this.options.decimalMark&&(a=(a+"").split(".").join(this.options.decimalMark)),a+this.unit},setValue:function(a){if("."!==this.options.decimalMark&&(a=this.parseInput(a)),"number"!=typeof a){var b=a.replace(/[0-9.-]/g,"");this.unit=e(b,this.options.units)?b:this.options.defaultUnit}var c=this.getIntValue(a);return isNaN(c)&&!isFinite(c)?this.setValue(this.options.value):(c=f.call(this,c),this.options.value=c,a=c+this.unit,"."!==this.options.decimalMark&&(a=(a+"").split(".").join(this.options.decimalMark)),this.setDisplayValue(a),this)},value:function(a){return a||0===a?this.setValue(a):this.getValue()},parseInput:function(a){return a=(a+"").split(this.options.decimalMark).join(".")},getIntValue:function(a){return a="undefined"==typeof a?this.getValue():a,"undefined"!=typeof a?("string"==typeof a&&(a=this.parseInput(a)),a=parseFloat(a,10)):void 0},disable:function(){this.options.disabled=!0,this.$element.addClass("disabled"),this.$input.attr("disabled",""),this.$element.find("button").addClass("disabled")},enable:function(){this.options.disabled=!1,this.$element.removeClass("disabled"),this.$input.removeAttr("disabled"),this.$element.find("button").removeClass("disabled")},keydown:function(a){var b=a.keyCode;38===b?this.step(!0):40===b?this.step(!1):13===b&&this.change()},keyup:function(a){var b=a.keyCode;(38===b||40===b)&&this.triggerChangedEvent()},bindMousewheelListeners:function(){var b=this.$input.get(0);b.addEventListener?(b.addEventListener("mousewheel",a.proxy(this.mousewheelHandler,this),!1),b.addEventListener("DOMMouseScroll",a.proxy(this.mousewheelHandler,this),!1)):b.attachEvent("onmousewheel",a.proxy(this.mousewheelHandler,this))},mousewheelHandler:function(a){if(!this.options.disabled){var b=window.event||a,c=Math.max(-1,Math.min(1,b.wheelDelta||-b.detail)),d=this;return clearTimeout(this.mousewheelTimeout),this.mousewheelTimeout=setTimeout(function(){d.triggerChangedEvent()},300),this.step(0>c?!0:!1),b.preventDefault?b.preventDefault():b.returnValue=!1,!1}}},a.fn.spinbox=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.spinbox"),h="object"==typeof b&&b;g||f.data("fu.spinbox",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.spinbox.defaults={value:0,min:0,max:999,step:1,hold:!0,speed:"medium",disabled:!1,cycle:!1,units:[],decimalMark:".",defaultUnit:"",limitToStep:!1},a.fn.spinbox.Constructor=c,a.fn.spinbox.noConflict=function(){return a.fn.spinbox=b,this},a(document).on("mousedown.fu.spinbox.data-api","[data-initialize=spinbox]",function(b){var c=a(b.target).closest(".spinbox");c.data("fu.spinbox")||c.spinbox(c.data())}),a(function(){a("[data-initialize=spinbox]").each(function(){var b=a(this);b.data("fu.spinbox")||b.spinbox(b.data())})})}(a),function(a){function b(a,b){a.addClass("tree-selected"),"item"===a.data("type")&&b.hasClass("fueluxicon-bullet")&&b.removeClass("fueluxicon-bullet").addClass("glyphicon-ok")}function c(a,b){a.removeClass("tree-selected"),"item"===a.data("type")&&b.hasClass("glyphicon-ok")&&b.removeClass("glyphicon-ok").addClass("fueluxicon-bullet")}function d(d,e,f){a.each(f.$elements,function(b,c){var d=a(c);d[0]!==e.$element[0]&&f.dataForEvent.push(a(d).data())}),e.$element.hasClass("tree-selected")?(c(e.$element,e.$icon),f.eventType="deselected"):(b(e.$element,e.$icon),f.eventType="selected",f.dataForEvent.push(e.elementData))}function e(a,d,e){if(e.$elements[0]!==d.$element[0]){{a.deselectAll(a.$element)}b(d.$element,d.$icon),e.eventType="selected",e.dataForEvent=[d.elementData]}else c(d.$element,d.$icon),e.eventType="deselected",e.dataForEvent=[]}var f=a.fn.tree,g=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.tree.defaults,c),this.options.itemSelect&&this.$element.on("click.fu.tree",".tree-item",a.proxy(function(a){this.selectItem(a.currentTarget)},this)),this.$element.on("click.fu.tree",".tree-branch-name",a.proxy(function(a){this.toggleFolder(a.currentTarget)},this)),this.options.folderSelect&&(this.$element.addClass("tree-folder-select"),this.$element.off("click.fu.tree",".tree-branch-name"),this.$element.on("click.fu.tree",".icon-caret",a.proxy(function(b){this.toggleFolder(a(b.currentTarget).parent())},this)),this.$element.on("click.fu.tree",".tree-branch-name",a.proxy(function(b){this.selectFolder(a(b.currentTarget))},this))),this.render()};g.prototype={constructor:g,deselectAll:function(b){b=b||this.$element;var d=a(b).find(".tree-selected");return d.each(function(b,d){c(a(d),a(d).find(".glyphicon"))}),d},destroy:function(){return this.$element.find("li:not([data-template])").remove(),this.$element.remove(),this.$element[0].outerHTML},render:function(){this.populate(this.$element)},populate:function(b){var c=this,d=b.hasClass("tree")?b:b.parent(),e=d.find(".tree-loader:eq(0)"),f=d.data();e.removeClass("hide hidden"),this.options.dataSource(f?f:{},function(f){e.addClass("hidden"),a.each(f.data,function(e,f){var g;"folder"===f.type?(g=c.$element.find("[data-template=treebranch]:eq(0)").clone().removeClass("hide hidden").removeData("template"),g.data(f),g.find(".tree-branch-name > .tree-label").html(f.text||f.name)):"item"===f.type&&(g=c.$element.find("[data-template=treeitem]:eq(0)").clone().removeClass("hide hidden").removeData("template"),g.find(".tree-item-name > .tree-label").html(f.text||f.name),g.data(f));var h=f.attr||f.dataAttributes||[];a.each(h,function(a,b){switch(a){case"cssClass":case"class":case"className":g.addClass(b);break;case"data-icon":g.find(".icon-item").removeClass().addClass("icon-item "+b),g.attr(a,b);break;case"id":g.attr(a,b),g.attr("aria-labelledby",b+"-label"),g.find(".tree-branch-name > .tree-label").attr("id",b+"-label");break;default:g.attr(a,b)}}),b.hasClass("tree-branch-header")?d.find(".tree-branch-children:eq(0)").append(g):b.append(g)}),c.$element.trigger("loaded.fu.tree",d)})},selectTreeNode:function(b,c){var f={};f.$element=a(b);var g={};g.$elements=this.$element.find(".tree-selected"),g.dataForEvent=[],"folder"===c?(f.$element=f.$element.closest(".tree-branch"),f.$icon=f.$element.find(".icon-folder")):f.$icon=f.$element.find(".icon-item"),f.elementData=f.$element.data(),this.options.multiSelect?d(this,f,g):e(this,f,g),this.$element.trigger(g.eventType+".fu.tree",{target:f.elementData,selected:g.dataForEvent}),f.$element.trigger("updated.fu.tree",{selected:g.dataForEvent,item:f.$element,eventType:g.eventType})},discloseFolder:function(b){var c=a(b),d=c.closest(".tree-branch"),e=d.find(".tree-branch-children"),f=e.eq(0);d.addClass("tree-open"),d.attr("aria-expanded","true"),f.removeClass("hide hidden"),d.find("> .tree-branch-header .icon-folder").eq(0).removeClass("glyphicon-folder-close").addClass("glyphicon-folder-open"),e.children().length||this.populate(e),this.$element.trigger("disclosedFolder.fu.tree",d.data())},closeFolder:function(b){var c=a(b),d=c.closest(".tree-branch"),e=d.find(".tree-branch-children"),f=e.eq(0);d.removeClass("tree-open"),d.attr("aria-expanded","false"),f.addClass("hidden"),d.find("> .tree-branch-header .icon-folder").eq(0).removeClass("glyphicon-folder-open").addClass("glyphicon-folder-close"),this.options.cacheItems||f.empty(),this.$element.trigger("closed.fu.tree",d.data())},toggleFolder:function(b){var c=a(b);c.find(".glyphicon-folder-close").length?this.discloseFolder(b):c.find(".glyphicon-folder-open").length&&this.closeFolder(b)},selectFolder:function(a){this.options.folderSelect&&this.selectTreeNode(a,"folder")},selectItem:function(a){this.options.itemSelect&&this.selectTreeNode(a,"item")},selectedItems:function(){var b=this.$element.find(".tree-selected"),c=[];return a.each(b,function(b,d){c.push(a(d).data())}),c},collapse:function(){var a=this,b=[],c=function d(c,e){b.push(e),0===a.$element.find(".tree-branch.tree-open:not('.hidden, .hide')").length&&(a.$element.trigger("closedAll.fu.tree",{tree:a.$element,reportedClosed:b}),a.$element.off("loaded.fu.tree",a.$element,d))};a.$element.on("closed.fu.tree",c),a.$element.find(".tree-branch.tree-open:not('.hidden, .hide')").each(function(){a.closeFolder(this)})},discloseVisible:function(){var b=this,c=b.$element.find(".tree-branch:not('.tree-open, .hidden, .hide')"),d=[],e=function f(a,e){d.push(e),d.length===c.length&&(b.$element.trigger("disclosedVisible.fu.tree",{tree:b.$element,reportedOpened:d}),b.$element.off("loaded.fu.tree",b.$element,f))};b.$element.on("loaded.fu.tree",e),b.$element.find(".tree-branch:not('.tree-open, .hidden, .hide')").each(function(){b.discloseFolder(a(this).find(".tree-branch-header"))})},discloseAll:function(){var a=this;"undefined"==typeof a.$element.data("disclosures")&&a.$element.data("disclosures",0);var b=a.options.disclosuresUpperLimit>=1&&a.$element.data("disclosures")>=a.options.disclosuresUpperLimit,c=0===a.$element.find(".tree-branch:not('.tree-open, .hidden, .hide')").length;if(c)a.$element.trigger("disclosedAll.fu.tree",{tree:a.$element,disclosures:a.$element.data("disclosures")}),a.options.cacheItems||a.$element.one("closeAll.fu.tree",function(){a.$element.data("disclosures",0)});else{if(b&&(a.$element.trigger("exceededDisclosuresLimit.fu.tree",{tree:a.$element,disclosures:a.$element.data("disclosures")}),!a.$element.data("ignore-disclosures-limit")))return;a.$element.data("disclosures",a.$element.data("disclosures")+1),a.$element.one("disclosedVisible.fu.tree",function(){a.discloseAll()}),a.discloseVisible()}}},g.prototype.closeAll=g.prototype.collapse,g.prototype.openFolder=g.prototype.discloseFolder,g.prototype.getValue=g.prototype.selectedItems,a.fn.tree=function(b){var c,d=Array.prototype.slice.call(arguments,1),e=this.each(function(){var e=a(this),f=e.data("fu.tree"),h="object"==typeof b&&b;f||e.data("fu.tree",f=new g(this,h)),"string"==typeof b&&(c=f[b].apply(f,d))});return void 0===c?e:c},a.fn.tree.defaults={dataSource:function(){},multiSelect:!1,cacheItems:!0,folderSelect:!0,itemSelect:!0,disclosuresUpperLimit:0},a.fn.tree.Constructor=g,a.fn.tree.noConflict=function(){return a.fn.tree=f,this}}(a),function(a){var b=a.fn.wizard,c=function(b,c){var d;this.$element=a(b),this.options=a.extend({},a.fn.wizard.defaults,c),this.options.disablePreviousStep="previous"===this.$element.attr("data-restrict")?!0:this.options.disablePreviousStep,this.currentStep=this.options.selectedItem.step,this.numSteps=this.$element.find(".steps li").length,this.$prevBtn=this.$element.find("button.btn-prev"),this.$nextBtn=this.$element.find("button.btn-next"),0===this.$element.children(".steps-container").length&&(this.$element.addClass("no-steps-container"),window&&window.console&&window.console.warn&&window.console.warn('please update your wizard markup to include ".steps-container" as seen in http://getfuelux.com/javascript.html#wizard-usage-markup')),d=this.$nextBtn.children().detach(),this.nextText=a.trim(this.$nextBtn.text()),this.$nextBtn.append(d),this.$prevBtn.on("click.fu.wizard",a.proxy(this.previous,this)),this.$nextBtn.on("click.fu.wizard",a.proxy(this.next,this)),this.$element.on("click.fu.wizard","li.complete",a.proxy(this.stepclicked,this)),this.selectedItem(this.options.selectedItem),this.options.disablePreviousStep&&(this.$prevBtn.attr("disabled",!0),this.$element.find(".steps").addClass("previous-disabled"))};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element[0].outerHTML},addSteps:function(b){var c,d,e,f,g,h,i=[].slice.call(arguments).slice(1),j=this.$element.find(".steps"),k=this.$element.find(".step-content");for(b=-1===b||b>this.numSteps+1?this.numSteps+1:b,i[0]instanceof Array&&(i=i[0]),g=j.find("li:nth-child("+b+")"),f=k.find(".step-pane:nth-child("+b+")"),g.length<1&&(g=null),c=0,d=i.length;d>c;c++)h=a('<li data-step="'+b+'"><span class="badge badge-info"></span></li>'),h.append(i[c].label||"").append('<span class="chevron"></span>'),h.find(".badge").append(i[c].badge||b),e=a('<div class="step-pane" data-step="'+b+'"></div>'),e.append(i[c].pane||""),g?(g.before(h),f.before(e)):(j.append(h),k.append(e)),b++;this.syncSteps(),this.numSteps=j.find("li").length,this.setState()},removeSteps:function(b,c){var d,e="nextAll",f=0,g=this.$element.find(".steps"),h=this.$element.find(".step-content");c=void 0!==c?c:1,b>g.find("li").length?d=g.find("li:last"):(d=g.find("li:nth-child("+b+")").prev(),d.length<1&&(e="children",d=g)),d[e]().each(function(){var b=a(this),d=b.attr("data-step");return c>f?(b.remove(),h.find('.step-pane[data-step="'+d+'"]:first').remove(),void f++):!1}),this.syncSteps(),this.numSteps=g.find("li").length,this.setState()},setState:function(){var b=this.currentStep>1,c=1===this.currentStep,d=this.currentStep===this.numSteps;this.options.disablePreviousStep||this.$prevBtn.attr("disabled",c===!0||b===!1);var e=this.$nextBtn.attr("data-last");if(e){this.lastText=e;var f=this.nextText;d===!0?(f=this.lastText,this.$element.addClass("complete")):this.$element.removeClass("complete");var g=this.$nextBtn.children().detach();this.$nextBtn.text(f).append(g)}var h=this.$element.find(".steps li");h.removeClass("active").removeClass("complete"),h.find("span.badge").removeClass("badge-info").removeClass("badge-success");var i=".steps li:lt("+(this.currentStep-1)+")",j=this.$element.find(i);j.addClass("complete"),j.find("span.badge").addClass("badge-success");var k=".steps li:eq("+(this.currentStep-1)+")",l=this.$element.find(k);l.addClass("active"),l.find("span.badge").addClass("badge-info");var m=this.$element.find(".step-content"),n=l.attr("data-step");m.find(".step-pane").removeClass("active"),m.find('.step-pane[data-step="'+n+'"]:first').addClass("active"),this.$element.find(".steps").first().attr("style","margin-left: 0");var o=0;this.$element.find(".steps > li").each(function(){o+=a(this).outerWidth()});var p=0;if(p=this.$element.find(".actions").length?this.$element.width()-this.$element.find(".actions").first().outerWidth():this.$element.width(),o>p){var q=o-p;this.$element.find(".steps").first().attr("style","margin-left: -"+q+"px"),this.$element.find("li.active").first().position().left<200&&(q+=this.$element.find("li.active").first().position().left-200,1>q?this.$element.find(".steps").first().attr("style","margin-left: 0"):this.$element.find(".steps").first().attr("style","margin-left: -"+q+"px"))}if("undefined"!=typeof this.initialized){var r=a.Event("changed.fu.wizard");this.$element.trigger(r,{step:this.currentStep})}this.initialized=!0},stepclicked:function(b){var c=a(b.currentTarget),d=this.$element.find(".steps li").index(c);if(!(d<this.currentStep&&this.options.disablePreviousStep)){var e=a.Event("stepclicked.fu.wizard");this.$element.trigger(e,{step:d+1}),e.isDefaultPrevented()||(this.currentStep=d+1,this.setState())}},syncSteps:function(){var b=1,c=this.$element.find(".steps"),d=this.$element.find(".step-content");c.children().each(function(){var c=a(this),e=c.find(".badge"),f=c.attr("data-step");isNaN(parseInt(e.html(),10))||e.html(b),c.attr("data-step",b),d.find('.step-pane[data-step="'+f+'"]:last').attr("data-step",b),b++})},previous:function(){if(!this.options.disablePreviousStep&&1!==this.currentStep){var b=a.Event("actionclicked.fu.wizard");if(this.$element.trigger(b,{step:this.currentStep,direction:"previous"}),!b.isDefaultPrevented()&&(this.currentStep-=1,this.setState(),this.$prevBtn.is(":focus"))){var c=this.$element.find(".active").find("input, select, textarea")[0];"undefined"!=typeof c?a(c).focus():0===this.$element.find(".active input:first").length&&this.$prevBtn.is(":disabled")&&this.$nextBtn.focus()}}},next:function(){var b=a.Event("actionclicked.fu.wizard");if(this.$element.trigger(b,{step:this.currentStep,direction:"next"}),!b.isDefaultPrevented()&&(this.currentStep<this.numSteps?(this.currentStep+=1,this.setState()):this.$element.trigger("finished.fu.wizard"),this.$nextBtn.is(":focus"))){var c=this.$element.find(".active").find("input, select, textarea")[0];"undefined"!=typeof c?a(c).focus():0===this.$element.find(".active input:first").length&&this.$nextBtn.is(":disabled")&&this.$prevBtn.focus()}},selectedItem:function(a){var b,c;return a?(c=a.step||-1,c=Number(this.$element.find('.steps li[data-name="'+c+'"]').first().attr("data-step"))||Number(c),c>=1&&c<=this.numSteps?(this.currentStep=c,this.setState()):(c=this.$element.find(".steps li.active:first").attr("data-step"),isNaN(c)||(this.currentStep=parseInt(c,10),this.setState())),b=this):(b={step:this.currentStep},this.$element.find(".steps li.active:first[data-name]").length&&(b.stepname=this.$element.find(".steps li.active:first").attr("data-name"))),b}},a.fn.wizard=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.wizard"),h="object"==typeof b&&b;g||f.data("fu.wizard",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.wizard.defaults={disablePreviousStep:!1,selectedItem:{step:-1}},a.fn.wizard.Constructor=c,a.fn.wizard.noConflict=function(){return a.fn.wizard=b,this},a(document).on("mouseover.fu.wizard.data-api","[data-initialize=wizard]",function(b){var c=a(b.target).closest(".wizard");c.data("fu.wizard")||c.wizard(c.data())}),a(function(){a("[data-initialize=wizard]").each(function(){var b=a(this);b.data("fu.wizard")||b.wizard(b.data())})})}(a),function(a){var b=a.fn.infinitescroll,c=function(b,c){this.$element=a(b),this.$element.addClass("infinitescroll"),this.options=a.extend({},a.fn.infinitescroll.defaults,c),this.curScrollTop=this.$element.scrollTop(),this.curPercentage=this.getPercentage(),this.fetchingData=!1,this.$element.on("scroll.fu.infinitescroll",a.proxy(this.onScroll,this)),this.onScroll()};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element.empty(),this.$element[0].outerHTML},disable:function(){this.$element.off("scroll.fu.infinitescroll")},enable:function(){this.$element.on("scroll.fu.infinitescroll",a.proxy(this.onScroll,this))},end:function(b){var c=a('<div class="infinitescroll-end"></div>');c.append(b?b:"---------"),this.$element.append(c),this.disable()},getPercentage:function(){var a="border-box"===this.$element.css("box-sizing")?this.$element.outerHeight():this.$element.height(),b=this.$element.get(0).scrollHeight;return b>a?a/(b-this.curScrollTop)*100:0},fetchData:function(b){var c,d=a('<div class="infinitescroll-load"></div>'),e=this,f=function(){var b={percentage:e.curPercentage,scrollTop:e.curScrollTop},c=a('<div class="loader"></div>');d.append(c),c.loader(),e.options.dataSource&&e.options.dataSource(b,function(a){var b;d.remove(),a.content&&e.$element.append(a.content),a.end&&(b=a.end!==!0?a.end:void 0,e.end(b)),e.fetchingData=!1})};this.fetchingData=!0,this.$element.append(d),this.options.hybrid&&b!==!0?(c=a('<button type="button" class="btn btn-primary"></button>'),c.append("object"==typeof this.options.hybrid?this.options.hybrid.label:'<span class="glyphicon glyphicon-repeat"></span>'),c.on("click.fu.infinitescroll",function(){c.remove(),f()}),d.append(c)):f()},onScroll:function(){this.curScrollTop=this.$element.scrollTop(),this.curPercentage=this.getPercentage(),!this.fetchingData&&this.curPercentage>=this.options.percentage&&this.fetchData()}},a.fn.infinitescroll=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.infinitescroll"),h="object"==typeof b&&b;g||f.data("fu.infinitescroll",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.infinitescroll.defaults={dataSource:null,hybrid:!1,percentage:95},a.fn.infinitescroll.Constructor=c,a.fn.infinitescroll.noConflict=function(){return a.fn.infinitescroll=b,this}}(a),function(a){var b=a.fn.pillbox,c=function(b,c){this.$element=a(b),this.$moreCount=this.$element.find(".pillbox-more-count"),this.$pillGroup=this.$element.find(".pill-group"),this.$addItem=this.$element.find(".pillbox-add-item"),this.$addItemWrap=this.$addItem.parent(),this.$suggest=this.$element.find(".suggest"),this.$pillHTML='<li class="btn btn-default pill"> <span></span> <span class="glyphicon glyphicon-close"> <span class="sr-only">Remove</span> </span></li>',this.options=a.extend({},a.fn.pillbox.defaults,c),-1===this.options.readonly?void 0!==this.$element.attr("data-readonly")&&this.readonly(!0):this.options.readonly&&this.readonly(!0),this.acceptKeyCodes=this._generateObject(this.options.acceptKeyCodes),this.$element.on("click.fu.pillbox",".pill-group > .pill",a.proxy(this.itemClicked,this)),this.$element.on("click.fu.pillbox",a.proxy(this.inputFocus,this)),this.$element.on("keydown.fu.pillbox",".pillbox-add-item",a.proxy(this.inputEvent,this)),this.options.onKeyDown&&this.$element.on("mousedown.fu.pillbox",".suggest > li",a.proxy(this.suggestionClick,this)),this.options.edit&&(this.$element.addClass("pills-editable"),this.$element.on("blur.fu.pillbox",".pillbox-add-item",a.proxy(this.cancelEdit,this)))};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element[0].outerHTML},items:function(){var b=this;return this.$pillGroup.children(".pill").map(function(){return b.getItemData(a(this))}).get()},itemClicked:function(b){var c,d=a(b.target);if(b.preventDefault(),b.stopPropagation(),this._closeSuggestions(),d.hasClass("pill"))c=d;else if(c=d.parent(),void 0===this.$element.attr("data-readonly")){if(d.hasClass("glyphicon-close"))return this.options.onRemove?this.options.onRemove(this.getItemData(c,{el:c}),a.proxy(this._removeElement,this)):this._removeElement(this.getItemData(c,{el:c})),!1;if(this.options.edit){if(c.find(".pillbox-list-edit").length)return!1;this.openEdit(c)}}this.$element.trigger("clicked.fu.pillbox",this.getItemData(c))},readonly:function(a){a?this.$element.attr("data-readonly","readonly"):this.$element.removeAttr("data-readonly"),this.options.truncate&&this.truncate(a)},suggestionClick:function(b){var c=a(b.currentTarget),d={text:c.html(),value:c.data("value")};b.preventDefault(),this.$addItem.val(""),c.data("attr")&&(d.attr=JSON.parse(c.data("attr"))),d.data=c.data("data"),this.addItems(d,!0),this._closeSuggestions()},itemCount:function(){return this.$pillGroup.children(".pill").length},addItems:function(){var b,c,d,e=this;!isFinite(String(arguments[0]))||arguments[0]instanceof Array?(b=[].slice.call(arguments).slice(0),d=b[1]&&!b[1].text):(b=[].slice.call(arguments).slice(1),c=arguments[0]),b[0]instanceof Array&&(b=b[0]),b.length&&(a.each(b,function(a,c){var d={text:c.text,value:c.value?c.value:c.text,el:e.$pillHTML};c.attr&&(d.attr=c.attr),c.data&&(d.data=c.data),b[a]=d}),this.options.edit&&this.currentEdit&&(b[0].el=this.currentEdit.wrap("<div></div>").parent().html()),d&&b.pop(1),e.options.onAdd&&d?this.options.edit&&this.currentEdit?e.options.onAdd(b[0],a.proxy(e.saveEdit,this)):e.options.onAdd(b[0],a.proxy(e.placeItems,this)):this.options.edit&&this.currentEdit?e.saveEdit(b):c?e.placeItems(c,b):e.placeItems(b,d))},removeItems:function(a,b){var c,d,e=this;if(a)for(b=b?b:1,c=0;b>c&&(d=e.$pillGroup.find("> .pill:nth-child("+a+")"),d);c++)d.remove();else this.$pillGroup.find(".pill").remove(),this._removePillTrigger({method:"removeAll"})},placeItems:function(){var b,c,d,e,f=[];!isFinite(String(arguments[0]))||arguments[0]instanceof Array?(b=[].slice.call(arguments).slice(0),e=b[1]&&!b[1].text):(b=[].slice.call(arguments).slice(1),c=arguments[0]),b[0]instanceof Array&&(b=b[0]),b.length&&(a.each(b,function(b,c){var d=a(c.el);d.attr("data-value",c.value),d.find("span:first").html(c.text),c.attr&&a.each(c.attr,function(a,b){"cssClass"===a||"class"===a?d.addClass(b):d.attr(a,b)}),c.data&&d.data("data",c.data),f.push(d)}),this.$pillGroup.children(".pill").length>0?c?(d=this.$pillGroup.find(".pill:nth-child("+c+")"),d.length?d.before(f):this.$pillGroup.children(".pill:last").after(f)):this.$pillGroup.children(".pill:last").after(f):this.$pillGroup.prepend(f),e&&this.$element.trigger("added.fu.pillbox",{text:b[0].text,value:b[0].value}))},inputEvent:function(a){var b,c,d,e,f=this,g=this.$addItem.val();if(this.acceptKeyCodes[a.keyCode])return this.options.onKeyDown&&this._isSuggestionsOpen()&&(e=this.$suggest.find(".pillbox-suggest-sel"),e.length&&(g=e.html(),b=e.data("value"),c=e.data("attr"))),(g.replace(/[ ]*\,[ ]*/,"").match(/\S/)||this.options.allowEmptyPills&&g.length)&&(this._closeSuggestions(),this.$addItem.hide(),c?this.addItems({text:g,value:b,attr:JSON.parse(c)},!0):this.addItems({text:g,value:b},!0),setTimeout(function(){f.$addItem.show().val("").attr({size:10}) -},0)),a.preventDefault(),!0;if(8===a.keyCode||46===a.keyCode){if(!g.length)return a.preventDefault(),this.options.edit&&this.currentEdit?(this.cancelEdit(),!0):(this._closeSuggestions(),d=this.$pillGroup.children(".pill:last"),d.hasClass("pillbox-highlight")?this._removeElement(this.getItemData(d,{el:d})):d.addClass("pillbox-highlight"),!0)}else g.length>10&&this.$addItem.width()<this.$pillGroup.width()-6&&this.$addItem.attr({size:g.length+3});if(this.$pillGroup.find(".pill").removeClass("pillbox-highlight"),this.options.onKeyDown){if(9===a.keyCode||38===a.keyCode||40===a.keyCode)return this._isSuggestionsOpen()&&this._keySuggestions(a),!0;this.callbackId=a.timeStamp,this.options.onKeyDown({event:a,value:g},function(b){f._openSuggestions(a,b)})}},openEdit:function(a){var b=a.index()+1,c=this.$addItemWrap.detach().hide();this.$pillGroup.find(".pill:nth-child("+b+")").before(c),this.currentEdit=a.detach(),c.addClass("editing"),this.$addItem.val(a.find("span:first").html()),c.show(),this.$addItem.focus().select()},cancelEdit:function(a){var b;return this.currentEdit?(this._closeSuggestions(),a&&this.$addItemWrap.before(this.currentEdit),this.currentEdit=!1,b=this.$addItemWrap.detach(),b.removeClass("editing"),this.$addItem.val(""),void this.$pillGroup.append(b)):!1},saveEdit:function(){var b=arguments[0][0]?arguments[0][0]:arguments[0];this.currentEdit=a(b.el),this.currentEdit.data("value",b.value),this.currentEdit.find("span:first").html(b.text),this.$addItemWrap.hide(),this.$addItemWrap.before(this.currentEdit),this.currentEdit=!1,this.$addItem.val(""),this.$addItemWrap.removeClass("editing"),this.$pillGroup.append(this.$addItemWrap.detach().show()),this.$element.trigger("edited.fu.pillbox",{value:b.value,text:b.text})},removeBySelector:function(){var b=[].slice.call(arguments).slice(0),c=this;a.each(b,function(a,b){c.$pillGroup.find(b).remove()}),this._removePillTrigger({method:"removeBySelector",removedSelectors:b})},removeByValue:function(){var b=[].slice.call(arguments).slice(0),c=this;a.each(b,function(a,b){c.$pillGroup.find('> .pill[data-value="'+b+'"]').remove()}),this._removePillTrigger({method:"removeByValue",removedValues:b})},removeByText:function(){var b=[].slice.call(arguments).slice(0),c=this;a.each(b,function(a,b){c.$pillGroup.find('> .pill:contains("'+b+'")').remove()}),this._removePillTrigger({method:"removeByText",removedText:b})},truncate:function(b){var c,d,e,f,g,h=this;this.$element.removeClass("truncate"),this.$addItemWrap.removeClass("truncated"),this.$pillGroup.find(".pill").removeClass("truncated"),b&&(this.$element.addClass("truncate"),c=this.$element.width(),d=!1,e=0,f=this.$pillGroup.find(".pill").length,g=0,this.$pillGroup.find(".pill").each(function(){var b=a(this);d?b.addClass("truncated"):(e++,h.$moreCount.text(f-e),g+b.outerWidth(!0)+h.$addItemWrap.outerWidth(!0)<=c?g+=b.outerWidth(!0):(h.$moreCount.text(f-e+1),b.addClass("truncated"),d=!0))}),e===f&&this.$addItemWrap.addClass("truncated"))},inputFocus:function(){this.$element.find(".pillbox-add-item").focus()},getItemData:function(b,c){return a.extend({text:b.find("span:first").html()},b.data(),c)},_removeElement:function(a){a.el.remove(),delete a.el,this.$element.trigger("removed.fu.pillbox",a)},_removePillTrigger:function(a){this.$element.trigger("removed.fu.pillbox",a)},_generateObject:function(b){var c={};return a.each(b,function(a,b){c[b]=!0}),c},_openSuggestions:function(b,c){var d=a("<ul>");return this.callbackId!==b.timeStamp?!1:void(c.data&&c.data.length&&(a.each(c.data,function(b,c){var e=c.value?c.value:c.text,f=a('<li data-value="'+e+'">'+c.text+"</li>");c.attr&&f.data("attr",JSON.stringify(c.attr)),c.data&&f.data("data",c.data),d.append(f)}),this.$suggest.html("").append(d.children()),a(document.body).trigger("suggested.fu.pillbox",this.$suggest)))},_closeSuggestions:function(){this.$suggest.html("").parent().removeClass("open")},_isSuggestionsOpen:function(){return this.$suggest.parent().hasClass("open")},_keySuggestions:function(a){var b,c=this.$suggest.find("li.pillbox-suggest-sel"),d=38===a.keyCode;a.preventDefault(),c.length?(b=d?c.prev():c.next(),b.length||(b=this.$suggest.find(d?"li:last":"li:first")),b&&(b.addClass("pillbox-suggest-sel"),c.removeClass("pillbox-suggest-sel"))):(c=this.$suggest.find("li:first"),c.addClass("pillbox-suggest-sel"))}},c.prototype.getValue=c.prototype.items,a.fn.pillbox=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.pillbox"),h="object"==typeof b&&b;g||f.data("fu.pillbox",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.pillbox.defaults={onAdd:void 0,onRemove:void 0,onKeyDown:void 0,edit:!1,readonly:-1,truncate:!1,acceptKeyCodes:[13,188],allowEmptyPills:!1},a.fn.pillbox.Constructor=c,a.fn.pillbox.noConflict=function(){return a.fn.pillbox=b,this},a(document).on("mousedown.fu.pillbox.data-api","[data-initialize=pillbox]",function(b){var c=a(b.target).closest(".pillbox");c.data("fu.pillbox")||c.pillbox(c.data())}),a(function(){a("[data-initialize=pillbox]").each(function(){var b=a(this);b.data("fu.pillbox")||b.pillbox(b.data())})})}(a),function(a){var b=a.fn.repeater,c=function(b,c){var d,e,f=this;this.$element=a(b),this.$canvas=this.$element.find(".repeater-canvas"),this.$count=this.$element.find(".repeater-count"),this.$end=this.$element.find(".repeater-end"),this.$filters=this.$element.find(".repeater-filters"),this.$loader=this.$element.find(".repeater-loader"),this.$pageSize=this.$element.find(".repeater-itemization .selectlist"),this.$nextBtn=this.$element.find(".repeater-next"),this.$pages=this.$element.find(".repeater-pages"),this.$prevBtn=this.$element.find(".repeater-prev"),this.$primaryPaging=this.$element.find(".repeater-primaryPaging"),this.$search=this.$element.find(".repeater-search").find(".search"),this.$secondaryPaging=this.$element.find(".repeater-secondaryPaging"),this.$start=this.$element.find(".repeater-start"),this.$viewport=this.$element.find(".repeater-viewport"),this.$views=this.$element.find(".repeater-views"),this.currentPage=0,this.currentView=null,this.infiniteScrollingCallback=function(){},this.infiniteScrollingCont=null,this.infiniteScrollingEnabled=!1,this.infiniteScrollingEnd=null,this.infiniteScrollingOptions={},this.lastPageInput=0,this.options=a.extend({},a.fn.repeater.defaults,c),this.pageIncrement=0,this.resizeTimeout={},this.stamp=(new Date).getTime()+(Math.floor(100*Math.random())+1),this.storedDataSourceOpts=null,this.viewOptions={},this.viewType=null,this.$filters.selectlist(),this.$pageSize.selectlist(),this.$primaryPaging.find(".combobox").combobox(),this.$search.search(),this.$filters.on("changed.fu.selectlist",function(a,b){f.$element.trigger("filtered.fu.repeater",b),f.render({clearInfinite:!0,pageIncrement:null})}),this.$nextBtn.on("click.fu.repeater",a.proxy(this.next,this)),this.$pageSize.on("changed.fu.selectlist",function(a,b){f.$element.trigger("pageSizeChanged.fu.repeater",b),f.render({pageIncrement:null})}),this.$prevBtn.on("click.fu.repeater",a.proxy(this.previous,this)),this.$primaryPaging.find(".combobox").on("changed.fu.combobox",function(a,b){f.$element.trigger("pageChanged.fu.repeater",[b.text,b]),f.pageInputChange(b.text)}),this.$search.on("searched.fu.search cleared.fu.search",function(a,b){f.$element.trigger("searchChanged.fu.repeater",b),f.render({clearInfinite:!0,pageIncrement:null})}),this.$secondaryPaging.on("blur.fu.repeater",function(){f.pageInputChange(f.$secondaryPaging.val())}),this.$secondaryPaging.on("keyup",function(a){13===a.keyCode&&f.pageInputChange(f.$secondaryPaging.val())}),this.$views.find("input").on("change.fu.repeater",a.proxy(this.viewChanged,this)),a(window).on("resize.fu.repeater."+this.stamp,function(){clearTimeout(f.resizeTimeout),f.resizeTimeout=setTimeout(function(){f.resize(),f.$element.trigger("resized.fu.repeater")},75)}),this.$loader.loader(),this.$loader.loader("pause"),-1!==this.options.defaultView?e=this.options.defaultView:(d=this.$views.find("label.active input"),e=d.length>0?d.val():"list"),this.setViewOptions(e),this.initViewTypes(function(){f.resize(),f.$element.trigger("resized.fu.repeater"),f.render({changeView:e})})};c.prototype={constructor:c,clear:function(b){function c(b){var d=[];b.children().each(function(){var b=a(this),e=b.attr("data-preserve");"deep"===e?(b.detach(),d.push(b)):"shallow"===e&&(c(b),b.detach(),d.push(b))}),b.empty(),b.append(d)}var d,e;b=b||{},b.preserve?(!this.infiniteScrollingEnabled||b.clearInfinite)&&c(this.$canvas):this.$canvas.empty(),d=void 0!==b.viewChanged?b.viewChanged:!1,e=a.fn.repeater.viewTypes[this.viewType]||{},!d&&e.cleared&&e.cleared.call(this,{options:b})},clearPreservedDataSourceOptions:function(){this.storedDataSourceOpts=null},destroy:function(){var b;return this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$canvas.empty(),b=this.$element[0].outerHTML,this.$element.find(".combobox").combobox("destroy"),this.$element.find(".selectlist").selectlist("destroy"),this.$element.find(".search").search("destroy"),this.infiniteScrollingEnabled&&a(this.infiniteScrollingCont).infinitescroll("destroy"),this.$element.remove(),a(window).off("resize.fu.repeater."+this.stamp),b},disable:function(){var a="disable",b="disabled";this.$search.search(a),this.$filters.selectlist(a),this.$views.find("label").attr(b,b),this.$pageSize.selectlist(a),this.$primaryPaging.find(".combobox").combobox(a),this.$secondaryPaging.attr(b,b),this.$prevBtn.attr(b,b),this.$nextBtn.attr(b,b),this.$element.addClass("disabled"),this.$element.trigger("disabled.fu.repeater")},enable:function(){var a="disabled",b="enable",c="page-end";this.$search.search(b),this.$filters.selectlist(b),this.$views.find("label").removeAttr(a),this.$pageSize.selectlist("enable"),this.$primaryPaging.find(".combobox").combobox(b),this.$secondaryPaging.removeAttr(a),this.$prevBtn.hasClass(c)||this.$prevBtn.removeAttr(a),this.$nextBtn.hasClass(c)||this.$nextBtn.removeAttr(a),this.$prevBtn.hasClass(c)&&this.$nextBtn.hasClass(c)&&this.$primaryPaging.combobox("disable"),this.$pageSize.selectlist(0!==parseInt(this.$count.html())?"enable":"disable"),this.$element.removeClass("disabled"),this.$element.trigger("enabled.fu.repeater")},getDataOptions:function(b){var c,d,e={},f={};return b=b||{},f.filter=this.$filters.length>0?this.$filters.selectlist("selectedItem"):{text:"All",value:"all"},f.view=this.currentView,this.infiniteScrollingEnabled||(f.pageSize=this.$pageSize.length>0?parseInt(this.$pageSize.selectlist("selectedItem").value,10):25),void 0!==b.pageIncrement&&(null===b.pageIncrement?this.currentPage=0:this.currentPage+=b.pageIncrement),f.pageIndex=this.currentPage,c=this.$search.length>0?this.$search.find("input").val():"",""!==c&&(f.search=c),b.dataSourceOptions&&(e=b.dataSourceOptions,b.preserveDataSourceOptions&&(this.storedDataSourceOpts=this.storedDataSourceOpts?a.extend(this.storedDataSourceOpts,e):e)),this.storedDataSourceOpts&&(e=a.extend(this.storedDataSourceOpts,e)),d=a.fn.repeater.viewTypes[this.viewType]||{},d=d.dataOptions,d?(d=d.call(this,f),f=a.extend(d,e)):f=a.extend(f,e),f},infiniteScrolling:function(a,b){var c,d,e=this.$element.find(".repeater-footer"),f=this.$element.find(".repeater-viewport");b=b||{},a?(this.infiniteScrollingEnabled=!0,this.infiniteScrollingEnd=b.end,delete b.dataSource,delete b.end,this.infiniteScrollingOptions=b,f.css({height:f.height()+e.outerHeight()}),e.hide()):(c=this.infiniteScrollingCont,d=c.data(),delete d.infinitescroll,c.off("scroll"),c.removeClass("infinitescroll"),this.infiniteScrollingCont=null,this.infiniteScrollingEnabled=!1,this.infiniteScrollingEnd=null,this.infiniteScrollingOptions={},f.css({height:f.height()-e.outerHeight()}),e.show())},infiniteScrollPaging:function(a){var b=this.infiniteScrollingEnd!==!0?this.infiniteScrollingEnd:void 0,c=a.page,d=a.pages;this.currentPage=void 0!==c?c:0/0,this.currentPage+1>=d&&this.infiniteScrollingCont.infinitescroll("end",b)},initInfiniteScrolling:function(){var b,c,d=this.$canvas.find('[data-infinite="true"]:first');d=d.length<1?this.$canvas:d,d.data("fu.infinitescroll")?d.infinitescroll("enable"):(c=this,b=a.extend({},this.infiniteScrollingOptions),b.dataSource=function(a,b){c.infiniteScrollingCallback=b,c.render({pageIncrement:1})},d.infinitescroll(b),this.infiniteScrollingCont=d)},initViewTypes:function(b){function c(a){function d(){a++,e>a?c(a):b()}g[a].initialize?g[a].initialize.call(f,{},function(){d()}):d()}var d,e,f=this,g=[];for(d in a.fn.repeater.viewTypes)g.push(a.fn.repeater.viewTypes[d]);e=g.length,e>0?c(0):b()},itemization:function(a){this.$count.html(void 0!==a.count?a.count:"?"),this.$end.html(void 0!==a.end?a.end:"?"),this.$start.html(void 0!==a.start?a.start:"?")},next:function(){var a="disabled";this.$nextBtn.attr(a,a),this.$prevBtn.attr(a,a),this.pageIncrement=1,this.$element.trigger("nextClicked.fu.repeater"),this.render({pageIncrement:this.pageIncrement})},pageInputChange:function(a){var b;a!==this.lastPageInput&&(this.lastPageInput=a,a=parseInt(a,10)-1,b=a-this.currentPage,this.$element.trigger("pageChanged.fu.repeater",a),this.render({pageIncrement:b}))},pagination:function(a){var b,c,d,e,f="active",g="disabled",h=a.page,i="page-end",j=a.pages;if(this.currentPage=void 0!==h?h:0/0,this.$primaryPaging.removeClass(f),this.$secondaryPaging.removeClass(f),e=0===j?0:this.currentPage+1,j<=this.viewOptions.dropPagingCap){for(this.$primaryPaging.addClass(f),b=this.$primaryPaging.find(".dropdown-menu"),b.empty(),c=0;j>c;c++)d=c+1,b.append('<li data-value="'+d+'"><a href="#">'+d+"</a></li>");this.$primaryPaging.find("input.form-control").val(e)}else this.$secondaryPaging.addClass(f),this.$secondaryPaging.val(e);this.lastPageInput=this.currentPage+1+"",this.$pages.html(""+j),this.currentPage+1<j?(this.$nextBtn.removeAttr(g),this.$nextBtn.removeClass(i)):(this.$nextBtn.attr(g,g),this.$nextBtn.addClass(i)),this.currentPage-1>=0?(this.$prevBtn.removeAttr(g),this.$prevBtn.removeClass(i)):(this.$prevBtn.attr(g,g),this.$prevBtn.addClass(i)),0!==this.pageIncrement&&(this.pageIncrement>0?this.$nextBtn.is(":disabled")?this.$prevBtn.focus():this.$nextBtn.focus():this.$prevBtn.is(":disabled")?this.$nextBtn.focus():this.$prevBtn.focus())},previous:function(){var a="disabled";this.$nextBtn.attr(a,a),this.$prevBtn.attr(a,a),this.pageIncrement=-1,this.$element.trigger("previousClicked.fu.repeater"),this.render({pageIncrement:this.pageIncrement})},render:function(b){var c,d,e=this,f=!1,g=a.fn.repeater.viewTypes[this.viewType]||{};b=b||{},this.disable(),b.changeView&&this.currentView!==b.changeView&&(d=this.currentView,this.currentView=b.changeView,this.viewType=this.currentView.split(".")[0],this.setViewOptions(this.currentView),this.$element.attr("data-currentview",this.currentView),this.$element.attr("data-viewtype",this.viewType),f=!0,b.viewChanged=f,this.$element.trigger("viewChanged.fu.repeater",this.currentView),this.infiniteScrollingEnabled&&e.infiniteScrolling(!1),g=a.fn.repeater.viewTypes[this.viewType]||{},g.selected&&g.selected.call(this,{prevView:d})),b.preserve=void 0!==b.preserve?b.preserve:!f,this.clear(b),(!this.infiniteScrollingEnabled||this.infiniteScrollingEnabled&&f)&&this.$loader.show().loader("play"),c=this.getDataOptions(b),this.viewOptions.dataSource(c,function(a){a=a||{},e.infiniteScrollingEnabled?e.infiniteScrollingCallback({}):(e.itemization(a),e.pagination(a)),e.runRenderer(g,a,function(){e.infiniteScrollingEnabled&&((f||b.clearInfinite)&&e.initInfiniteScrolling(),e.infiniteScrollPaging(a,b)),e.$loader.hide().loader("pause"),e.$element.trigger("rendered.fu.repeater",{data:a,options:c,renderOptions:b}),e.$element.trigger("loaded.fu.repeater",c),e.enable()})})},resize:function(){var b,c,d=-1===this.viewOptions.staticHeight?this.$element.attr("data-staticheight"):this.viewOptions.staticHeight,e={};this.viewType&&(e=a.fn.repeater.viewTypes[this.viewType]||{}),void 0!==d&&d!==!1&&"false"!==d?(this.$canvas.addClass("scrolling"),c={bottom:this.$viewport.css("margin-bottom"),top:this.$viewport.css("margin-top")},b=("true"===d||d===!0?this.$element.height():parseInt(d,10))-this.$element.find(".repeater-header").outerHeight()-this.$element.find(".repeater-footer").outerHeight()-("auto"===c.bottom?0:parseInt(c.bottom,10))-("auto"===c.top?0:parseInt(c.top,10)),this.$viewport.outerHeight(b)):this.$canvas.removeClass("scrolling"),e.resize&&e.resize.call(this,{height:this.$element.outerHeight(),width:this.$element.outerWidth()})},runRenderer:function(b,c,d){function e(b,c){var d;c&&(d=c.action?c.action:"append","none"!==d&&void 0!==c.item&&(b=void 0!==c.container?a(c.container):b,b[d](c.item)))}var f,g,h,i,j,k;if(b.render)b.render.call(this,{container:this.$canvas,data:c},function(){d()});else{if(b.before&&(i=b.before.call(this,{container:this.$canvas,data:c}),e(this.$canvas,i)),f=this.$canvas.find('[data-container="true"]:last'),f=f.length>0?f:this.$canvas,b.renderItem){for(j=b.repeat||"data.items",j=j.split("."),"data"===j[0]||"this"===j[0]?(k="this"===j[0]?this:c,j.shift()):(j=[],k=[],window.console&&window.console.warn&&window.console.warn('WARNING: Repeater plugin "repeat" value must start with either "data" or "this"')),g=0,h=j.length;h>g;g++){if(void 0===k[j[g]]){k=[],window.console&&window.console.warn&&window.console.warn("WARNING: Repeater unable to find property to iterate renderItem on.");break}k=k[j[g]]}for(g=0,h=k.length;h>g;g++)i=b.renderItem.call(this,{container:f,data:c,index:g,subset:k}),e(f,i)}b.after&&(i=b.after.call(this,{container:this.$canvas,data:c}),e(this.$canvas,i)),d()}},setViewOptions:function(b){var c={},d=b.split(".")[1];c=this.options.views?this.options.views[d]||this.options.views[b]||{}:{},this.viewOptions=a.extend({},this.options,c)},viewChanged:function(b){var c=a(b.target),d=c.val();this.render({changeView:d,pageIncrement:null})}},a.fn.repeater=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.repeater"),h="object"==typeof b&&b;g||f.data("fu.repeater",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.repeater.defaults={dataSource:function(a,b){b({count:0,end:0,items:[],page:0,pages:1,start:0})},defaultView:-1,dropPagingCap:10,staticHeight:-1,views:null},a.fn.repeater.viewTypes={},a.fn.repeater.Constructor=c,a.fn.repeater.noConflict=function(){return a.fn.repeater=b,this}}(a),function(a){function b(b,c,d,e,f){var g=e[f].className,h=c[d][e[f].property],i=a("<td></td>"),j=e[f]._auto_width,k=e[f].property;if(this.viewOptions.list_actions!==!1&&"@_ACTIONS_@"===k&&(h='<div class="repeater-list-actions-placeholder" style="width: '+this.list_actions_width+'px"></div>'),h=void 0!==h?h:"",i.addClass(void 0!==g?g:"").append(h),void 0!==j&&i.outerWidth(j),b.append(i),"multi"===this.viewOptions.list_selectable&&"@_CHECKBOX_@"===e[f].property){var l='<label data-row="'+d+'" class="checkbox-custom checkbox-inline body-checkbox"><input class="sr-only" type="checkbox"></label>';i.html(l)}"@_CHECKBOX_@"!==e[f].property&&"@_ACTIONS_@"!==e[f].property&&this.viewOptions.list_columnRendered&&this.viewOptions.list_columnRendered({container:b,columnAttr:e[f].property,item:i,rowData:c[d]},function(){})}function c(b,c,d){var e,f,g,h,i,j="glyphicon-chevron-down",k=".glyphicon.rlc:first",l="glyphicon-chevron-up",m=a('<div class="repeater-list-heading"><span class="glyphicon rlc"></span></div>'),n='<div class="repeater-list-heading header-checkbox"><label class="checkbox-custom checkbox-inline"><input class="sr-only" type="checkbox"></label><div class="clearfix"></div></div>',o=a("<th></th>"),p=this;if(m.data("fu_item_index",d),m.prepend(c[d].label),o.html(m.html()).find("[id]").removeAttr("id"),o.append("@_CHECKBOX_@"!==c[d].property?m:n),e=o.add(m),h=m.find(k),i=h.add(o.find(k)),this.viewOptions.list_actions&&"@_ACTIONS_@"===c[d].property){var q=this.list_actions_width;o.css("width",q),m.css("width",q)}f=c[d].className,void 0!==f&&e.addClass(f),g=c[d].sortable,g&&(e.addClass("sortable"),m.on("click.fu.repeaterList",function(){p.list_sortProperty="string"==typeof g?g:c[d].property,m.hasClass("sorted")?h.hasClass(l)?(i.removeClass(l).addClass(j),p.list_sortDirection="desc"):p.viewOptions.list_sortClearing?(e.removeClass("sorted"),i.removeClass(j),p.list_sortDirection=null,p.list_sortProperty=null):(i.removeClass(j).addClass(l),p.list_sortDirection="asc"):(b.find("th, .repeater-list-heading").removeClass("sorted"),i.removeClass(j).addClass(l),p.list_sortDirection="asc",e.addClass("sorted")),p.render({clearInfinite:!0,pageIncrement:null})})),("asc"===c[d].sortDirection||"desc"===c[d].sortDirection)&&(b.find("th, .repeater-list-heading").removeClass("sorted"),e.addClass("sortable sorted"),"asc"===c[d].sortDirection?(i.addClass(l),this.list_sortDirection="asc"):(i.addClass(j),this.list_sortDirection="desc"),this.list_sortProperty="string"==typeof g?g:c[d].property),b.append(o)}function d(c,d,e){var f,g,h=a("<tr></tr>"),i=this,j="multi"===this.viewOptions.list_selectable,k=this.viewOptions.list_actions;for(this.viewOptions.list_selectable&&(h.addClass("selectable"),h.attr("tabindex",0),h.data("item_data",d[e]),h.on("click.fu.repeaterList",function(){var b=a(this),c=a(this).index();c+=1;var d=i.$element.find(".frozen-column-wrapper tr:nth-child("+c+")"),e=i.$element.find(".actions-column-wrapper tr:nth-child("+c+")"),f=i.$element.find(".frozen-column-wrapper tr:nth-child("+c+") .checkbox-inline");b.is(".selected")?(b.removeClass("selected"),j?(f.checkbox("uncheck"),d.removeClass("selected"),k&&e.removeClass("selected")):b.find(".repeater-list-check").remove(),i.$element.trigger("deselected.fu.repeaterList",b)):(j?(f.checkbox("check"),b.addClass("selected"),d.addClass("selected"),k&&e.addClass("selected")):(i.$canvas.find(".repeater-list-check").remove(),i.$canvas.find(".repeater-list tbody tr.selected").each(function(){a(this).removeClass("selected"),i.$element.trigger("deselected.fu.repeaterList",a(this))}),b.find("td:first").prepend('<div class="repeater-list-check"><span class="glyphicon glyphicon-ok"></span></div>'),b.addClass("selected"),d.addClass("selected")),i.$element.trigger("selected.fu.repeaterList",b));var g=i.$canvas.find(".repeater-list-wrapper > table .selected"),h=i.$element.find(".table-actions");g.length>0?h.find("thead .btn").removeAttr("disabled"):h.find("thead .btn").attr("disabled","disabled")}),h.keyup(function(a){13===a.keyCode&&h.trigger("click.fu.repeaterList")})),this.viewOptions.list_actions&&!this.viewOptions.list_selectable&&h.data("item_data",d[e]),c.append(h),f=0,g=this.list_columns.length;g>f;f++)b.call(this,h,d,e,this.list_columns,f);this.viewOptions.list_rowRendered&&this.viewOptions.list_rowRendered({container:c,item:h,rowData:d[e]},function(){})}function e(b,c){var d,e=b.find("tbody");e.length<1&&(e=a('<tbody data-container="true"></tbody>'),b.append(e)),"string"==typeof c.error&&c.error.length>0?(d=a('<tr class="empty text-danger"><td colspan="'+this.list_columns.length+'"></td></tr>'),d.find("td").append(c.error),e.append(d)):c.items&&c.items.length<1&&(d=a('<tr class="empty"><td colspan="'+this.list_columns.length+'"></td></tr>'),d.find("td").append(this.viewOptions.list_noItemsHTML),e.append(d))}function f(b,d){function e(a,b){if(!b)return!1;if(!a||b.length!==a.length)return!0;for(f=0,i=b.length;i>f;f++){if(!a[f])return!0;for(h in b[f])if(a[f][h]!==b[f][h])return!0}return!1}var f,h,i,j,k=d.columns||[],l=b.find("thead");if(this.list_firstRender||e(this.list_columns,k)||0===l.length){if(l.remove(),d.count<1&&(this.list_noItems=!0),"multi"===this.viewOptions.list_selectable&&!this.list_noItems){var m={label:"c",property:"@_CHECKBOX_@",sortable:!1};k.splice(0,0,m)}if(this.list_columns=k,this.list_firstRender=!1,this.$loader.removeClass("noHeader"),this.viewOptions.list_actions&&!this.list_noItems){var n={label:this.viewOptions.list_actions.label||'<span class="actions-hidden">a</span>',property:"@_ACTIONS_@",sortable:!1,width:this.list_actions_width};k.push(n)}for(l=a('<thead data-preserve="deep"><tr></tr></thead>'),j=l.find("tr"),f=0,i=k.length;i>f;f++)c.call(this,j,k,f);if(b.prepend(l),"multi"===this.viewOptions.list_selectable&&!this.list_noItems){var o=this.$element.find(".repeater-list-wrapper .header-checkbox").outerWidth(),p=a.grep(k,function(a){return"@_CHECKBOX_@"===a.property})[0];p.width=o}g.call(this,j)}}function g(b){var c,d,e,f,g,h=[],i=this;if(this.viewOptions.list_columnSizing&&(c=0,f=0,g=0,b.find("th").each(function(){var b,d=a(this),e=0===d.next("th").length;if(void 0!==i.list_columns[c].width)b=i.list_columns[c].width,d.outerWidth(b),f+=d.outerWidth(),g+=d.outerWidth(),e?d.outerWidth(""):i.list_columns[c]._auto_width=b;else{var j=d.find(".repeater-list-heading").outerWidth();g+=d.outerWidth(),h.push({col:d,index:c,last:e,minWidth:j})}c++}),d=h.length,d>0)){var j=this.$canvas.find(".repeater-list-wrapper").outerWidth();for(e=Math.floor((j-f)/d),c=0;d>c;c++)h[c].minWidth>e&&(e=h[c].minWidth),(!h[c].last||g>j)&&(h[c].col.outerWidth(e),this.list_columns[h[c].index]._auto_width=e)}}function h(){var a=window.navigator.userAgent,b=a.indexOf("MSIE "),c=a.indexOf("Firefox");return b>0?"ie-"+parseInt(a.substring(b+5,a.indexOf(".",b))):c>0?"firefox":""}a.fn.repeater&&(a.fn.repeater.Constructor.prototype.list_clearSelectedItems=function(){this.$canvas.find(".repeater-list-check").remove(),this.$canvas.find(".repeater-list table tbody tr.selected").removeClass("selected")},a.fn.repeater.Constructor.prototype.list_highlightColumn=function(b,c){var d=this.$canvas.find(".repeater-list-wrapper > table tbody");(this.viewOptions.list_highlightSortedColumn||c)&&(d.find("td.sorted").removeClass("sorted"),d.find("tr").each(function(){var c=a(this).find("td:nth-child("+(b+1)+")").filter(function(){return!a(this).parent().hasClass("empty")});c.addClass("sorted")}))},a.fn.repeater.Constructor.prototype.list_getSelectedItems=function(){var b=[];return this.$canvas.find(".repeater-list .repeater-list-wrapper > table tbody tr.selected").each(function(){var c=a(this);b.push({data:c.data("item_data"),element:c})}),b},a.fn.repeater.Constructor.prototype.getValue=a.fn.repeater.Constructor.prototype.list_getSelectedItems,a.fn.repeater.Constructor.prototype.list_positionHeadings=function(){var b=this.$element.find(".repeater-list-wrapper"),c=b.offset().left,d=b.scrollLeft();b.find(".repeater-list-heading").each(d>0?function(){var b=a(this),d=b.parents("th:first").offset().left-c+"px";b.addClass("shifted").css("left",d)}:function(){a(this).removeClass("shifted").css("left","")})},a.fn.repeater.Constructor.prototype.list_setSelectedItems=function(b,c){function d(){h=a(this),f=h.data("item_data")||{},f[b[g].property]===b[g].value&&e(h,b[g].selected)}function e(a,b){b=void 0!==b?b:!0,b?(c||"multi"===j||k.list_clearSelectedItems(),a.hasClass("selected")||(a.addClass("selected"),a.find("td:first").prepend('<div class="repeater-list-check"><span class="glyphicon glyphicon-ok"></span></div>'))):(a.find(".repeater-list-check").remove(),a.removeClass("selected"))}var f,g,h,i,j=this.viewOptions.list_selectable,k=this;for(a.isArray(b)||(b=[b]),i=c===!0||"multi"===j?b.length:j&&b.length>0?1:0,g=0;i>g;g++)void 0!==b[g].index?(h=this.$canvas.find(".repeater-list table tbody tr:nth-child("+(b[g].index+1)+")"),h.length>0&&e(h,b[g].selected)):void 0!==b[g].property&&void 0!==b[g].value&&this.$canvas.find(".repeater-list table tbody tr").each(d)},a.fn.repeater.Constructor.prototype.list_sizeHeadings=function(){var b=this.$element.find(".repeater-list table");b.find("thead th").each(function(){var b=a(this),c=b.find(".repeater-list-heading");c.outerHeight(b.outerHeight()),c.outerWidth(b.outerWidth())})},a.fn.repeater.Constructor.prototype.list_setFrozenColumns=function(){var b=this.$canvas.find(".table-frozen"),c=this.$element.find(".repeater-canvas"),d=this.$element.find(".repeater-list .repeater-list-wrapper > table"),e=this.$element.find(".repeater-list"),f=this.viewOptions.list_frozenColumns,g=this;if("multi"===this.viewOptions.list_selectable&&(f+=1,c.addClass("multi-select-enabled")),b.length<1){var h=a('<div class="frozen-column-wrapper"></div>').insertBefore(d),i=d.clone().addClass("table-frozen");i.find("th:not(:lt("+f+"))").remove(),i.find("td:not(:nth-child(n+0):nth-child(-n+"+f+"))").remove();var j=i.clone().removeClass("table-frozen");j.find("tbody").remove();var k=a('<div class="frozen-thead-wrapper"></div>').append(j);h.append(i),e.append(k),this.$canvas.addClass("frozen-enabled")}this.$element.find(".repeater-list table.table-frozen tr").each(function(b){a(this).height(d.find("tr:eq("+b+")").height())});var l=d.find("td:eq(0)").outerWidth();this.$element.find(".frozen-column-wrapper, .frozen-thead-wrapper").width(l),a(".frozen-thead-wrapper .repeater-list-heading").on("click",function(){var b=a(this).parent("th").index();b+=1,g.$element.find(".repeater-list-wrapper > table thead th:nth-child("+b+") .repeater-list-heading")[0].click()})},a.fn.repeater.Constructor.prototype.list_positionColumns=function(){var a=this.$element.find(".repeater-canvas"),b=a.scrollTop(),c=a.scrollLeft(),d=this.viewOptions.list_frozenColumns||"multi"===this.viewOptions.list_selectable,e=this.viewOptions.list_actions,f=this.$element.find(".repeater-canvas").outerWidth(),g=this.$element.find(".repeater-list .repeater-list-wrapper > table").outerWidth(),h=this.$element.find(".table-actions")?this.$element.find(".table-actions").outerWidth():0,i=g-(f-h)>=c;b>0?a.find(".repeater-list-heading").css("top",b):a.find(".repeater-list-heading").css("top","0"),c>0?(d&&(a.find(".frozen-thead-wrapper").css("left",c),a.find(".frozen-column-wrapper").css("left",c)),e&&i&&(a.find(".actions-thead-wrapper").css("right",-c),a.find(".actions-column-wrapper").css("right",-c))):(d&&(a.find(".frozen-thead-wrapper").css("left","0"),a.find(".frozen-column-wrapper").css("left","0")),e&&(a.find(".actions-thead-wrapper").css("right","0"),a.find(".actions-column-wrapper").css("right","0")))},a.fn.repeater.Constructor.prototype.list_createItemActions=function(){var b,c,d="",e=this,f=this.$element.find(".repeater-list .repeater-list-wrapper > table"),g=this.$canvas.find(".table-actions");for(b=0,c=this.viewOptions.list_actions.items.length;c>b;b++){var h=this.viewOptions.list_actions.items[b],i=h.html;d+='<li><a href="#" data-action="'+h.name+'" class="action-item"> '+i+"</a></li>"}var j='<div class="btn-group"><button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" data-flip="auto" aria-expanded="false"><span class="caret"></span></button><ul class="dropdown-menu dropdown-menu-right" role="menu">'+d+"</ul></div>";if(g.length<1){var k=a('<div class="actions-column-wrapper" style="width: '+this.list_actions_width+'px"></div>').insertBefore(f),l=f.clone().addClass("table-actions");if(l.find("th:not(:last-child)").remove(),l.find("tr td:not(:last-child)").remove(),"multi"===this.viewOptions.list_selectable)l.find("thead tr").html('<th><div class="repeater-list-heading">'+j+"</div></th>"),l.find("thead .btn").attr("disabled","disabled");else{var m=this.viewOptions.list_actions.label||'<span class="actions-hidden">a</span>';l.find("thead tr").addClass("empty-heading").html("<th>"+m+'<div class="repeater-list-heading">'+m+"</div></th>")}var n=l.find("td");n.each(function(b){a(this).html(j),a(this).find("a").attr("data-row",parseInt([b])+1)}),k.append(l),this.$canvas.addClass("actions-enabled")}this.$element.find(".repeater-list table.table-actions thead tr th").outerHeight(f.find("thead tr th").outerHeight()),this.$element.find(".repeater-list table.table-actions tbody tr td:first-child").each(function(b){a(this).outerHeight(f.find("tbody tr:eq("+b+") td").outerHeight())}),this.$element.find(".table-actions tbody .action-item").on("click",function(){var b=a(this).data("action"),c=a(this).data("row"),d={actionName:b,rows:[c]};e.list_getActionItems(d)}),this.$element.find(".table-actions thead .action-item").on("click",function(){var b=a(this).data("action"),c={actionName:b,rows:[]}; -e.$element.find(".repeater-list-wrapper > table .selected").each(function(){var b=a(this).index();b+=1,c.rows.push(b)}),e.list_getActionItems(c)})},a.fn.repeater.Constructor.prototype.list_getActionItems=function(b){var c,d=[],e=a.grep(this.viewOptions.list_actions.items,function(a){return a.name===b.actionName})[0];for(c=0;c<b.rows.length;c++){var f=this.$canvas.find(".repeater-list-wrapper > table tbody tr:nth-child("+b.rows[c]+")");d.push({item:f,rowData:f.data("item_data")})}1===d.length&&(d=d[0]),e.clickAction&&e.clickAction(d,function(){})},a.fn.repeater.Constructor.prototype.list_sizeActionsTable=function(){var a=this.$element.find(".repeater-list-wrapper > table"),b=this.$element.find(".repeater-list-wrapper .actions-column-wrapper thead th .repeater-list-heading");b.outerHeight(a.find("thead th .repeater-list-heading").outerHeight())},a.fn.repeater.Constructor.prototype.list_frozenOptionsInitialize=function(){var b=this,c=(this.viewOptions.list_frozenColumns,this.viewOptions.list_actions,"multi"===this.viewOptions.list_selectable,this.$element.find(".frozen-column-wrapper .checkbox-inline")),d=this.$element.find(".repeater-list table");this.$element.find("tr.selectable").on("mouseover mouseleave",function(b){var c=a(this).index();c+=1,"mouseover"===b.type?d.find("tbody tr:nth-child("+c+")").addClass("hovered"):d.find("tbody tr:nth-child("+c+")").removeClass("hovered")}),c.checkbox(),this.$element.find(".table-frozen tbody .checkbox-inline").on("change",function(c){c.preventDefault();var d=a(this).attr("data-row");d=parseInt(d)+1,b.$element.find(".repeater-list-wrapper > table tbody tr:nth-child("+d+")").click()}),this.$element.find(".frozen-thead-wrapper thead .checkbox-inline").on("change",function(){a(this).checkbox("isChecked")?(b.$element.find(".repeater-list-wrapper > table tbody tr:not(.selected)").click(),b.$element.trigger("selected.fu.repeaterList",c)):(b.$element.find(".repeater-list-wrapper > table tbody tr.selected").click(),b.$element.trigger("deselected.fu.repeaterList",c))})},a.fn.repeater.defaults=a.extend({},a.fn.repeater.defaults,{list_columnRendered:null,list_columnSizing:!0,list_columnSyncing:!0,list_highlightSortedColumn:!0,list_infiniteScroll:!1,list_noItemsHTML:"no items found",list_selectable:!1,list_sortClearing:!1,list_rowRendered:null,list_frozenColumns:0,list_actions:!1}),a.fn.repeater.viewTypes.list={cleared:function(){this.viewOptions.list_columnSyncing&&this.list_sizeHeadings()},dataOptions:function(a){return this.list_sortDirection&&(a.sortDirection=this.list_sortDirection),this.list_sortProperty&&(a.sortProperty=this.list_sortProperty),a},initialize:function(a,b){this.list_sortDirection=null,this.list_sortProperty=null,this.list_actions_width=void 0!==this.viewOptions.list_actions.width?this.viewOptions.list_actions.width:37,this.list_noItems=!1,b()},resize:function(){this.viewOptions.list_columnSyncing&&this.list_sizeHeadings()},selected:function(){var a,b=this.viewOptions.list_infiniteScroll;this.list_firstRender=!0,this.$loader.addClass("noHeader"),b&&(a="object"==typeof b?b:{},this.infiniteScrolling(!0,a))},before:function(b){var c,d=b.container.find(".repeater-list"),g=this;return d.length<1&&(d=a('<div class="repeater-list '+h()+'" data-preserve="shallow"><div class="repeater-list-wrapper" data-infinite="true" data-preserve="shallow"><table aria-readonly="true" class="table" data-preserve="shallow" role="grid"></table></div></div>'),d.find(".repeater-list-wrapper").on("scroll.fu.repeaterList",function(){g.viewOptions.list_columnSyncing&&g.list_positionHeadings()}),(g.viewOptions.list_frozenColumns||g.viewOptions.list_actions||"multi"===g.viewOptions.list_selectable)&&b.container.on("scroll.fu.repeaterList",function(){g.list_positionColumns()}),b.container.append(d)),b.container.removeClass("actions-enabled actions-enabled multi-select-enabled"),c=d.find("table"),f.call(this,c,b.data),e.call(this,c,b.data),!1},renderItem:function(a){return d.call(this,a.container,a.subset,a.index),!1},after:function(){var a;return!this.viewOptions.list_frozenColumns&&"multi"!==this.viewOptions.list_selectable||this.list_noItems||this.list_setFrozenColumns(),this.viewOptions.list_actions&&!this.list_noItems&&(this.list_createItemActions(),this.list_sizeActionsTable()),!this.viewOptions.list_frozenColumns&&!this.viewOptions.list_actions&&"multi"!==this.viewOptions.list_selectable||this.list_noItems||(this.list_positionColumns(),this.list_frozenOptionsInitialize()),this.viewOptions.list_columnSyncing&&(this.list_sizeHeadings(),this.list_positionHeadings()),a=this.$canvas.find(".repeater-list-wrapper > table .repeater-list-heading.sorted"),a.length>0&&this.list_highlightColumn(a.data("fu_item_index")),!1}})}(a),function(a){function b(b,c){function d(){var d,f,g;f=c.indexOf("{{"),d=c.indexOf("}}",f+2),f>-1&&d>-1?(g=a.trim(c.substring(f+2,d)),g=void 0!==b[g]?b[g]:"",c=c.substring(0,f)+g+c.substring(d+2)):e=!0}for(var e=!1;!e&&c.search("{{")>=0;)d(c);return c}a.fn.repeater&&(a.fn.repeater.Constructor.prototype.thumbnail_clearSelectedItems=function(){this.$canvas.find(".repeater-thumbnail-cont .selectable.selected").removeClass("selected")},a.fn.repeater.Constructor.prototype.thumbnail_getSelectedItems=function(){var b=[];return this.$canvas.find(".repeater-thumbnail-cont .selectable.selected").each(function(){b.push(a(this))}),b},a.fn.repeater.Constructor.prototype.thumbnail_setSelectedItems=function(b,c){function d(){return j===b[g].index?(h=a(this),!1):void j++}function e(){h=a(this),h.is(b[g].selector)&&f(h,b[g].selected)}function f(a,b){b=void 0!==b?b:!0,b?(c||"multi"===k||l.thumbnail_clearSelectedItems(),a.addClass("selected")):a.removeClass("selected")}var g,h,i,j,k=this.viewOptions.thumbnail_selectable,l=this;for(a.isArray(b)||(b=[b]),i=c===!0||"multi"===k?b.length:k&&b.length>0?1:0,g=0;i>g;g++)void 0!==b[g].index?(h=a(),j=0,this.$canvas.find(".repeater-thumbnail-cont .selectable").each(d),h.length>0&&f(h,b[g].selected)):b[g].selector&&this.$canvas.find(".repeater-thumbnail-cont .selectable").each(e)},a.fn.repeater.defaults=a.extend({},a.fn.repeater.defaults,{thumbnail_alignment:"left",thumbnail_infiniteScroll:!1,thumbnail_itemRendered:null,thumbnail_noItemsHTML:"no items found",thumbnail_selectable:!1,thumbnail_template:'<div class="thumbnail repeater-thumbnail"><img height="75" src="{{src}}" width="65"><span>{{name}}</span></div>'}),a.fn.repeater.viewTypes.thumbnail={selected:function(){var a,b=this.viewOptions.thumbnail_infiniteScroll;b&&(a="object"==typeof b?b:{},this.infiniteScrolling(!0,a))},before:function(b){var c,d,e=this.viewOptions.thumbnail_alignment,f=this.$canvas.find(".repeater-thumbnail-cont"),g=b.data,h={};return f.length<1?(f=a('<div class="clearfix repeater-thumbnail-cont" data-container="true" data-infinite="true" data-preserve="shallow"></div>'),e&&"none"!==e?(d={center:1,justify:1,left:1,right:1},e=d[e]?e:"justify",f.addClass("align-"+e),this.thumbnail_injectSpacers=!0):this.thumbnail_injectSpacers=!1,h.item=f):h.action="none",g.items&&g.items.length<1?(c=a('<div class="empty"></div>'),c.append(this.viewOptions.thumbnail_noItemsHTML),f.append(c)):f.find(".empty:first").remove(),h},renderItem:function(c){var d=this.viewOptions.thumbnail_selectable,e="selected",f=this,g=a(b(c.subset[c.index],this.viewOptions.thumbnail_template));return d&&(g.addClass("selectable"),g.on("click",function(){g.hasClass(e)?(g.removeClass(e),f.$element.trigger("deselected.fu.repeaterThumbnail",g)):("multi"!==d&&f.$canvas.find(".repeater-thumbnail-cont .selectable.selected").each(function(){var b=a(this);b.removeClass(e),f.$element.trigger("deselected.fu.repeaterThumbnail",b)}),g.addClass(e),f.$element.trigger("selected.fu.repeaterThumbnail",g))})),c.container.append(g),this.thumbnail_injectSpacers&&g.after('<span class="spacer"> </span>'),this.viewOptions.thumbnail_itemRendered&&this.viewOptions.thumbnail_itemRendered({container:c.container,item:g,itemData:c.subset[c.index]},function(){}),!1}})}(a),function(a){var b=a.fn.scheduler,c=function(b,c){var d=this;this.$element=a(b),this.options=a.extend({},a.fn.scheduler.defaults,c),this.$startDate=this.$element.find(".start-datetime .start-date"),this.$startTime=this.$element.find(".start-datetime .start-time"),this.$timeZone=this.$element.find(".timezone-container .timezone"),this.$repeatIntervalPanel=this.$element.find(".repeat-every-panel"),this.$repeatIntervalSelect=this.$element.find(".repeat-options"),this.$repeatIntervalSpinbox=this.$element.find(".repeat-every"),this.$repeatIntervalTxt=this.$element.find(".repeat-every-text"),this.$end=this.$element.find(".repeat-end"),this.$endSelect=this.$end.find(".end-options"),this.$endAfter=this.$end.find(".end-after"),this.$endDate=this.$end.find(".end-on-date"),this.$recurrencePanels=this.$element.find(".repeat-panel"),this.$repeatIntervalSelect.selectlist(),this.$element.find(".selectlist").selectlist(),this.$startDate.datepicker(this.options.startDateOptions),this.$startTime.combobox(),""===this.$startTime.find("input").val()&&this.$startTime.combobox("selectByIndex",0),this.$repeatIntervalSpinbox.spinbox("0"===this.$repeatIntervalSpinbox.find("input").val()?{value:1,min:1,limitToStep:!0}:{min:1,limitToStep:!0}),this.$endAfter.spinbox({value:1,min:1,limitToStep:!0}),this.$endDate.datepicker(this.options.endDateOptions),this.$element.find(".radio-custom").radio(),this.$repeatIntervalSelect.on("changed.fu.selectlist",a.proxy(this.repeatIntervalSelectChanged,this)),this.$endSelect.on("changed.fu.selectlist",a.proxy(this.endSelectChanged,this)),this.$element.find(".repeat-days-of-the-week .btn-group .btn").on("change.fu.scheduler",function(a,b){d.changed(a,b,!0)}),this.$element.find(".combobox").on("changed.fu.combobox",a.proxy(this.changed,this)),this.$element.find(".datepicker").on("changed.fu.datepicker",a.proxy(this.changed,this)),this.$element.find(".datepicker").on("dateClicked.fu.datepicker",a.proxy(this.changed,this)),this.$element.find(".selectlist").on("changed.fu.selectlist",a.proxy(this.changed,this)),this.$element.find(".spinbox").on("changed.fu.spinbox",a.proxy(this.changed,this)),this.$element.find(".repeat-monthly .radio-custom, .repeat-yearly .radio-custom").on("change.fu.scheduler",a.proxy(this.changed,this))};c.prototype={constructor:c,destroy:function(){var b;return this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$element.find(".datepicker .calendar").empty(),b=this.$element[0].outerHTML,this.$element.find(".combobox").combobox("destroy"),this.$element.find(".datepicker").datepicker("destroy"),this.$element.find(".selectlist").selectlist("destroy"),this.$element.find(".spinbox").spinbox("destroy"),this.$element.find(".radio-custom").radio("destroy"),this.$element.remove(),b},changed:function(b,c,d){d||b.stopPropagation(),this.$element.trigger("changed.fu.scheduler",{data:void 0!==c?c:a(b.currentTarget).data(),originalEvent:b,value:this.getValue()})},disable:function(){this.toggleState("disable")},enable:function(){this.toggleState("enable")},setUtcTime:function(a,b,c){var d=a.split("-"),e=b.split(":"),f=new Date(Date.UTC(d[0],d[1]-1,d[2],e[0],e[1],e[2]?e[2]:0));if("Z"===c)f.setUTCHours(f.getUTCHours()+0);else{var g="(.)",h=".*?",i="\\d",j=".*?",k="(\\d)",l=new RegExp(g+h+i+j+k,["i"]),m=l.exec(c);if(null!==m){var n=m[1],o=m[2],p="+"===n?1:-1;f.setUTCHours(f.getUTCHours()+p*parseInt(o,10))}}var q=f.getTimezoneOffset();return f.setMinutes(q),f},endSelectChanged:function(a,b){var c,d;b?d=b.value:(c=this.$endSelect.selectlist("selectedItem"),d=c.value),this.$endAfter.parent().addClass("hidden"),this.$endAfter.parent().attr("aria-hidden","true"),this.$endDate.parent().addClass("hidden"),this.$endDate.parent().attr("aria-hidden","true"),"after"===d?(this.$endAfter.parent().removeClass("hide hidden"),this.$endAfter.parent().attr("aria-hidden","false")):"date"===d&&(this.$endDate.parent().removeClass("hide hidden"),this.$endDate.parent().attr("aria-hidden","false"))},getValue:function(){var b,c=this.$repeatIntervalSpinbox.spinbox("value"),d="",e=this.$repeatIntervalSelect.selectlist("selectedItem").value;this.$startTime.combobox("selectedItem").value?(b=this.$startTime.combobox("selectedItem").value,b=b.toLowerCase()):b=this.$startTime.combobox("selectedItem").text.toLowerCase();var f,g=this.$timeZone.selectlist("selectedItem");f=function(a,b){var c,d="";return d+=a.getFullYear(),d+=b,c=a.getMonth()+1,d+=10>c?"0"+c:c,d+=b,c=a.getDate(),d+=10>c?"0"+c:c};var h,i,j,k,l,m,n,o;n=""+f(this.$startDate.datepicker("getDate"),"-"),n+="T",j=b.search("am")>=0,k=b.search("pm")>=0,b=a.trim(b.replace(/am/g,"").replace(/pm/g,"")).split(":"),b[0]=parseInt(b[0],10),b[1]=parseInt(b[1],10),j&&b[0]>11?b[0]=0:k&&b[0]<12&&(b[0]+=12),n+=b[0]<10?"0"+b[0]:b[0],n+=":",n+=b[1]<10?"0"+b[1]:b[1],n+="+00:00"===g.offset?"Z":g.offset,"none"===e?d="FREQ=DAILY;INTERVAL=1;COUNT=1;":"secondly"===e?(d="FREQ=SECONDLY;",d+="INTERVAL="+c+";"):"minutely"===e?(d="FREQ=MINUTELY;",d+="INTERVAL="+c+";"):"hourly"===e?(d="FREQ=HOURLY;",d+="INTERVAL="+c+";"):"daily"===e?(d+="FREQ=DAILY;",d+="INTERVAL="+c+";"):"weekdays"===e?(d+="FREQ=DAILY;",d+="BYDAY=MO,TU,WE,TH,FR;",d+="INTERVAL=1;"):"weekly"===e?(i=[],this.$element.find(".repeat-days-of-the-week .btn-group input:checked").each(function(){i.push(a(this).data().value)}),d+="FREQ=WEEKLY;",d+="BYDAY="+i.join(",")+";",d+="INTERVAL="+c+";"):"monthly"===e?(d+="FREQ=MONTHLY;",d+="INTERVAL="+c+";",o=this.$element.find("input[name=repeat-monthly]:checked").val(),"bymonthday"===o?(h=parseInt(this.$element.find(".repeat-monthly-date .selectlist").selectlist("selectedItem").text,10),d+="BYMONTHDAY="+h+";"):"bysetpos"===o&&(i=this.$element.find(".repeat-monthly-day .month-days").selectlist("selectedItem").value,m=this.$element.find(".repeat-monthly-day .month-day-pos").selectlist("selectedItem").value,d+="BYDAY="+i+";",d+="BYSETPOS="+m+";")):"yearly"===e&&(d+="FREQ=YEARLY;",o=this.$element.find("input[name=repeat-yearly]:checked").val(),"bymonthday"===o?(l=this.$element.find(".repeat-yearly-date .year-month").selectlist("selectedItem").value,h=this.$element.find(".repeat-yearly-date .year-month-day").selectlist("selectedItem").text,d+="BYMONTH="+l+";",d+="BYMONTHDAY="+h+";"):"bysetpos"===o&&(i=this.$element.find(".repeat-yearly-day .year-month-days").selectlist("selectedItem").value,m=this.$element.find(".repeat-yearly-day .year-month-day-pos").selectlist("selectedItem").value,l=this.$element.find(".repeat-yearly-day .year-month").selectlist("selectedItem").value,d+="BYDAY="+i+";",d+="BYSETPOS="+m+";",d+="BYMONTH="+l+";"));var p=this.$endSelect.selectlist("selectedItem").value,q="";"none"!==e&&("after"===p?q="COUNT="+this.$endAfter.spinbox("value")+";":"date"===p&&(q="UNTIL="+f(this.$endDate.datepicker("getDate"),"")+";")),d+=q,d=";"===d.substring(d.length-1)?d.substring(0,d.length-1):d;var r={startDateTime:n,timeZone:g,recurrencePattern:d};return r},repeatIntervalSelectChanged:function(a,b){var c,d,e;switch(b?(d=b.value,e=b.text):(c=this.$repeatIntervalSelect.selectlist("selectedItem"),d=c.value||"",e=c.text||""),this.$repeatIntervalTxt.text(e),d.toLowerCase()){case"hourly":case"daily":case"weekly":case"monthly":this.$repeatIntervalPanel.removeClass("hide hidden"),this.$repeatIntervalPanel.attr("aria-hidden","false");break;default:this.$repeatIntervalPanel.addClass("hidden"),this.$repeatIntervalPanel.attr("aria-hidden","true")}this.$recurrencePanels.addClass("hidden"),this.$recurrencePanels.attr("aria-hidden","true"),this.$element.find(".repeat-"+d).removeClass("hide hidden"),this.$element.find(".repeat-"+d).attr("aria-hidden","false"),"none"===d?(this.$end.addClass("hidden"),this.$end.attr("aria-hidden","true")):(this.$end.removeClass("hide hidden"),this.$end.attr("aria-hidden","false"))},setValue:function(b){var c,d,e,f,g,h,i,j,k,l,m;if(b.startDateTime)j=b.startDateTime.split("T"),k=j[0],j[1]?(j[1]=j[1].split(":"),c=parseInt(j[1][0],10),g=j[1][1]?parseInt(j[1][1].split("+")[0].split("-")[0].split("Z")[0],10):0,h=12>c?"AM":"PM",0===c?c=12:c>12&&(c-=12),g=10>g?"0"+g:g,l=c+":"+g,j=c+":"+g+" "+h,this.$startTime.find("input").val(j),this.$startTime.combobox("selectByText",j)):l="00:00";else{l="00:00";var n=this.$startDate.datepicker("getDate");k=n.getFullYear()+"-"+n.getMonth()+"-"+n.getDate()}if(e="li",b.timeZone?("string"==typeof b.timeZone?e+='[data-name="'+b.timeZone+'"]':a.each(b.timeZone,function(a,b){e+="[data-"+a+'="'+b+'"]'}),m=b.timeZone.offset,this.$timeZone.selectlist("selectBySelector",e)):b.startDateTime?(j=b.startDateTime.split("T")[1],j=j?j.search(/\+/)>-1?"+"+a.trim(j.split("+")[1]):j.search(/\-/)>-1?"-"+a.trim(j.split("-")[1]):"+00:00":"+00:00",m="+00:00"===j?"Z":j,e+='[data-offset="'+j+'"]',this.$timeZone.selectlist("selectBySelector",e)):m="Z",b.recurrencePattern){for(i={},j=b.recurrencePattern.toUpperCase().split(";"),d=0,f=j.length;f>d;d++)""!==j[d]&&(e=j[d].split("="),i[e[0]]=e[1]);if("DAILY"===i.FREQ)e="MO,TU,WE,TH,FR"===i.BYDAY?"weekdays":"1"===i.INTERVAL&&"1"===i.COUNT?"none":"daily";else if("SECONDLY"===i.FREQ)e="secondly";else if("MINUTELY"===i.FREQ)e="minutely";else if("HOURLY"===i.FREQ)e="hourly";else if("WEEKLY"===i.FREQ){if(i.BYDAY)for(e=this.$element.find(".repeat-days-of-the-week .btn-group"),e.find("label").removeClass("active"),j=i.BYDAY.split(","),d=0,f=j.length;f>d;d++)e.find('input[data-value="'+j[d]+'"]').prop("checked",!0).parent().addClass("active");e="weekly"}else"MONTHLY"===i.FREQ?(this.$element.find(".repeat-monthly input").removeAttr("checked").removeClass("checked"),this.$element.find(".repeat-monthly label.radio-custom").removeClass("checked"),i.BYMONTHDAY?(j=this.$element.find(".repeat-monthly-date"),j.find("input").addClass("checked").prop("checked",!0),j.find("label.radio-custom").addClass("checked"),j.find(".selectlist").selectlist("selectByValue",i.BYMONTHDAY)):i.BYDAY&&(j=this.$element.find(".repeat-monthly-day"),j.find("input").addClass("checked").prop("checked",!0),j.find("label.radio-custom").addClass("checked"),i.BYSETPOS&&j.find(".month-day-pos").selectlist("selectByValue",i.BYSETPOS),j.find(".month-days").selectlist("selectByValue",i.BYDAY)),e="monthly"):"YEARLY"===i.FREQ?(this.$element.find(".repeat-yearly input").removeAttr("checked").removeClass("checked"),this.$element.find(".repeat-yearly label.radio-custom").removeClass("checked"),i.BYMONTHDAY?(j=this.$element.find(".repeat-yearly-date"),j.find("input").addClass("checked").prop("checked",!0),j.find("label.radio-custom").addClass("checked"),i.BYMONTH&&j.find(".year-month").selectlist("selectByValue",i.BYMONTH),j.find(".year-month-day").selectlist("selectByValue",i.BYMONTHDAY)):i.BYSETPOS&&(j=this.$element.find(".repeat-yearly-day"),j.find("input").addClass("checked").prop("checked",!0),j.find("label.radio-custom").addClass("checked"),j.find(".year-month-day-pos").selectlist("selectByValue",i.BYSETPOS),i.BYDAY&&j.find(".year-month-days").selectlist("selectByValue",i.BYDAY),i.BYMONTH&&j.find(".year-month").selectlist("selectByValue",i.BYMONTH)),e="yearly"):e="none";if(i.COUNT)this.$endAfter.spinbox("value",parseInt(i.COUNT,10)),this.$endSelect.selectlist("selectByValue","after");else if(i.UNTIL){j=i.UNTIL,8===j.length&&(j=j.split(""),j.splice(4,0,"-"),j.splice(7,0,"-"),j=j.join(""));var o=this.$timeZone.selectlist("selectedItem"),p="+00:00"===o.offset?"Z":o.offset,q=this.setUtcTime(j,l,p);this.$endDate.datepicker("setDate",q),this.$endSelect.selectlist("selectByValue","date")}else this.$endSelect.selectlist("selectByValue","never");this.endSelectChanged(),i.INTERVAL&&this.$repeatIntervalSpinbox.spinbox("value",parseInt(i.INTERVAL,10)),this.$repeatIntervalSelect.selectlist("selectByValue",e),this.repeatIntervalSelectChanged()}var r=this.setUtcTime(k,l,m);this.$startDate.datepicker("setDate",r)},toggleState:function(a){this.$element.find(".combobox").combobox(a),this.$element.find(".datepicker").datepicker(a),this.$element.find(".selectlist").selectlist(a),this.$element.find(".spinbox").spinbox(a),this.$element.find(".radio-custom").radio(a),a="disable"===a?"addClass":"removeClass",this.$element.find(".repeat-days-of-the-week .btn-group")[a]("disabled")},value:function(a){return a?this.setValue(a):this.getValue()}},a.fn.scheduler=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.scheduler"),h="object"==typeof b&&b;g||f.data("fu.scheduler",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.scheduler.defaults={},a.fn.scheduler.Constructor=c,a.fn.scheduler.noConflict=function(){return a.fn.scheduler=b,this},a(document).on("mousedown.fu.scheduler.data-api","[data-initialize=scheduler]",function(b){var c=a(b.target).closest(".scheduler");c.data("fu.scheduler")||c.scheduler(c.data())}),a(function(){a("[data-initialize=scheduler]").each(function(){var b=a(this);b.data("scheduler")||b.scheduler(b.data())})})}(a),function(a){var b=a.fn.picker,c=function(b,c){var d=this;this.$element=a(b),this.options=a.extend({},a.fn.picker.defaults,c),this.$accept=this.$element.find(".picker-accept"),this.$cancel=this.$element.find(".picker-cancel"),this.$trigger=this.$element.find(".picker-trigger"),this.$footer=this.$element.find(".picker-footer"),this.$header=this.$element.find(".picker-header"),this.$popup=this.$element.find(".picker-popup"),this.$body=this.$element.find(".picker-body"),this.clickStamp="_",this.isInput=this.$trigger.is("input"),this.$trigger.on("keydown.fu.picker",a.proxy(this.keyComplete,this)),this.$trigger.on("focus.fu.picker",a.proxy(function(b){("undefined"==typeof b||a(b.target).is("input[type=text]"))&&a.proxy(this.show(),this)},this)),this.$trigger.on("click.fu.picker",a.proxy(function(b){a(b.target).is("input[type=text]")?a.proxy(this.show(),this):a.proxy(this.toggle(),this)},this)),this.$accept.on("click.fu.picker",a.proxy(this.complete,this,"accepted")),this.$cancel.on("click.fu.picker",function(a){a.preventDefault(),d.complete("cancelled")})},d=function(b){var c=Math.max(document.documentElement.clientHeight,window.innerHeight||0),d=a(document).scrollTop(),e=b.$popup.offset(),f=e.top+b.$popup.outerHeight(!0);return f>c+d||e.top<d?!0:!1},e=function(a){a.$popup.css("visibility","hidden"),g(a),d(a)&&(f(a),d(a)&&g(a)),a.$popup.css("visibility","visible")},f=function(a){a.$popup.css("top",-a.$popup.outerHeight(!0)+"px")},g=function(a){a.$popup.css("top",a.$trigger.outerHeight(!0)+"px")};c.prototype={constructor:c,complete:function(a){var b={accepted:"onAccept",cancelled:"onCancel",exited:"onExit"},c=this.options[b[a]],d={contents:this.$body};c?(c(d),this.$element.trigger(a+".fu.picker",d)):(this.$element.trigger(a+".fu.picker",d),this.hide())},keyComplete:function(a){this.isInput&&13===a.keyCode?(this.complete("accepted"),this.$trigger.blur()):27===a.keyCode&&(this.complete("exited"),this.$trigger.blur())},destroy:function(){return this.$element.remove(),a(document).off("click.fu.picker.externalClick."+this.clickStamp),this.$element[0].outerHTML},disable:function(){this.$element.addClass("disabled"),this.$trigger.attr("disabled","disabled")},enable:function(){this.$element.removeClass("disabled"),this.$trigger.removeAttr("disabled")},toggle:function(){this.$element.hasClass("showing")?this.hide():this.show()},hide:function(){this.$element.hasClass("showing")&&(this.$element.removeClass("showing"),a(document).off("click.fu.picker.externalClick."+this.clickStamp),this.$element.trigger("hidden.fu.picker"))},externalClickListener:function(a,b){(b===!0||this.isExternalClick(a))&&this.complete("exited")},isExternalClick:function(b){var c,d,e=this.$element.get(0),f=this.options.externalClickExceptions||[],g=a(b.target);if(b.target===e||g.parents(".picker:first").get(0)===e)return!1;for(c=0,d=f.length;d>c;c++)if(g.is(f[c])||g.parents(f[c]).length>0)return!1;return!0},show:function(){var b;if(b=a(document).find(".picker.showing"),b.length>0){if(b.data("fu.picker")&&b.data("fu.picker").options.explicit)return;b.picker("externalClickListener",{},!0)}this.$element.addClass("showing"),e(this),this.$element.trigger("shown.fu.picker"),this.clickStamp=(new Date).getTime()+(Math.floor(100*Math.random())+1),this.options.explicit||a(document).on("click.fu.picker.externalClick."+this.clickStamp,a.proxy(this.externalClickListener,this))}},a.fn.picker=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.picker"),h="object"==typeof b&&b;g||f.data("fu.picker",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.picker.defaults={onAccept:void 0,onCancel:void 0,onExit:void 0,externalClickExceptions:[],explicit:!1},a.fn.picker.Constructor=c,a.fn.picker.noConflict=function(){return a.fn.picker=b,this},a(document).on("focus.fu.picker.data-api","[data-initialize=picker]",function(b){var c=a(b.target).closest(".picker");c.data("fu.picker")||c.picker(c.data())}),a(function(){a("[data-initialize=picker]").each(function(){var b=a(this);b.data("fu.picker")||b.picker(b.data())})})}(a)}); \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/dist/js/npm.js b/elgg_clean/bower_components/fuelux/dist/js/npm.js deleted file mode 100644 index 31839f11..00000000 --- a/elgg_clean/bower_components/fuelux/dist/js/npm.js +++ /dev/null @@ -1,23 +0,0 @@ -// This file has been created by the `commonjs` Grunt task. You can require() this file in a CommonJS environment. -require('jquery'); -require('bootstrap'); - -require('../../js/checkbox'); -require('../../js/combobox'); -require('../../js/datepicker'); -require('../../js/dropdown-autoflip'); -require('../../js/loader'); -require('../../js/placard'); -require('../../js/radio'); -require('../../js/search'); -require('../../js/selectlist'); -require('../../js/spinbox'); -require('../../js/tree'); -require('../../js/wizard'); -require('../../js/infinite-scroll'); -require('../../js/pillbox'); -require('../../js/repeater'); -require('../../js/repeater-list'); -require('../../js/repeater-thumbnail'); -require('../../js/scheduler'); -require('../../js/picker'); \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/fonts/fuelux.eot b/elgg_clean/bower_components/fuelux/fonts/fuelux.eot deleted file mode 100644 index 36f005ee9819158bf4dbb3e0cf3b94949c755d26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmZSJU|>jKXJBAtU}69PCI(hc5DgNUzzAab1b|2e1_l8r%>Wi=U|_g9EqW153_<fS zq%o8-q%!0%lrmH>Ffi~j1TmyCq%)K<<S-;M6frO`h%tmQq%ssS6f<Np<TK<kC@>f@ z=rI^DFfgF&WdJ#Yfq|Eyfq|JJz|AehH(%(^Lk0$R7X}6f8Fv>~HwG&PHU<WE6$S<d z1^-}uBmL<<-V6+k5ey6rVad6P1qY;*_c1UqUSVKh^h!@GF8KeSfti7UU50^yfg?Sq zGVOoedp`ySW*Y_u#yc6Qi75=1!X7g)Fx+8aU@*(bNKItXWMXAtU=(3sU{J}(Evev~ z#q@)LfpG%^1A|gdesUtyKjshy24)42dvX&i3K+r}j2RdhEkN$cOUzB3EG0IRfq_+m zfq}8SAiubTd6~H{0|VOx1_p*6a6mFLFf59mb~T>g<|_j?Bo5Bs;`$5<PcY5Qz|8oU z@h`}|&?o|j30OoAqMq?D*d&k^7-j*B@G=;H;+KH|tdkKe<^WZ~$i%=nfq|8QgVBdE zje&u|9ZG*?kYs29X@I2zka~F3GcYg&q`9UrI6Po@z{&XF{{sd+#=rkTu7f5Dh>Jk_ z!I+s*l(C($nUS9%f`OTVnIVQ@ImkRv9DuP5*i8%!E)2|ImJ9<6g9ZZw0~-U#2TTkM z4><q-2kCgg0HPHjsz3q^jBMb5fUrT<f-sl|C7>>X@`gJV#*o2K#n8nti(wVRE{0PK zw;0|raDc)boO)OpxETZ)#2I86lo>P`^cfh0&CE^N_!*7O%+=Y1&DGSE#l+Rr*~P@o z+1N$R>=~8W*u~A5#l+3k)WzAw#EsRaYZ(MPMTW2`SXmfb%d-TtJTcU;vJI<42tNP| ztOZLlwu6+IuLTMH`)I9Y5bO@p$x((7W)uO7M1mwial^<c%Gk`fg7Gf{D8GSiW)ubK z4`W;jRtYK#7~2{78UHda0jmMKi}4V|!X*fEni(P(|1!J=sZj;{gYhre-LFBWF)%Xn zGcYqQVW<SlgM4ewm<jSlCD?5YjNp{|nxPgXZw?L<u*R@(h$|SuskoBiBS_w!5fpNE zU?;>tT)@b{%qYrG%eVq0FANS}X0Y`T-!L#T#4xrqe1!ND91HB=u!RO010%z7hE~P^ zMm<o@RS{uRQZqF%Ghz%dax*k^`|D<8q^x8F3NKJ$ISrg=K-qwefe*@NVqj-bg|e9$ z6d4MkY!(JKhJ{czC^Z~_ve_8e7;b@b9}6b~BLfcu1C-6gz{em8WivB4G3Y|sEDSsh zlc8)@1~G;eP&OL_55pPMqCc%PHK(+K0loYWN=+}#Ni1Sua08eAC1ARUA)O(WL4m;t zToWiTSTQJ|7zPnBV$fwUXV7IZVlZGZWH4c1aLdmtamz1CPgO9|Gf=QnfLN(urC_9M zu4`mqXu^PE3Ijx*0apbSmReMtnV+X%sAqsfBe*1mgg=PHEMs^<>6C$qk%^I+k%f_! zk&Tg^k%N(wk&BU=y)-Y=)xf|2N*h9HBPeYQrA?r;DU>#Y(&kXw0!mwgZ2JG7fe9Rw qd<+Z>5+Emm`OFMF42%pc(2^gNLKqkr&c_}51yTX7S3vw*T%Q5S8WRfu diff --git a/elgg_clean/bower_components/fuelux/fonts/fuelux.svg b/elgg_clean/bower_components/fuelux/fonts/fuelux.svg deleted file mode 100644 index 4f0eeb00..00000000 --- a/elgg_clean/bower_components/fuelux/fonts/fuelux.svg +++ /dev/null @@ -1,20 +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>Generated by Fontastic.me</metadata> -<defs> -<font id="fuelux" horiz-adv-x="512"> -<font-face font-family="fuelux" units-per-em="512" ascent="480" descent="-32"/> -<missing-glyph horiz-adv-x="512" /> - -<glyph unicode="" d="M151 391c26 19 56 32 90 35l0 83c-56-3-108-25-149-59z m-148-114l84 0c4 34 18 64 38 89l-58 58c-36-39-59-91-64-147z m59-185l59 59c-19 26-32 56-35 90l-83 0c3-56 25-108 59-149z m173-5c-34 4-64 18-89 38l-58-58c39-36 91-59 147-64z m126 34c-26-19-56-32-90-35l0-83c56 3 108 25 149 59z m148 114l-84 0c-4-34-18-64-38-89l58-58c36 39 59 91 64 147z m-232 190c34-4 64-18 89-38l58 58c-39 36-91 59-147 64z m173-5l-59-59c19-26 32-56 35-90l83 0c-3 56-25 108-59 149z"/> -<glyph unicode="" d="M277 425c34-4 64-18 89-38l58 58c-39 36-91 59-147 64z"/> -<glyph unicode="" d="M450 420l-59-59c19-26 32-56 35-90l83 0c-3 56-25 108-59 149z"/> -<glyph unicode="" d="M509 235l-84 0c-4-34-18-64-38-89l58-58c36 39 59 91 64 147z"/> -<glyph unicode="" d="M361 121c-26-19-56-32-90-35l0-83c56 3 108 25 149 59z"/> -<glyph unicode="" d="M235 87c-34 4-64 18-89 38l-58-58c39-36 91-59 147-64z"/> -<glyph unicode="" d="M62 92l59 59c-19 26-32 56-35 90l-83 0c3-56 25-108 59-149z"/> -<glyph unicode="" d="M3 277l84 0c4 34 18 64 38 89l-58 58c-36-39-59-91-64-147z"/> -<glyph unicode="" d="M151 391c26 19 56 32 90 35l0 83c-56-3-108-25-149-59z"/> -<glyph unicode="" d="M336 218c0-47-38-85-85-85-46 0-84 38-84 85 0 46 38 84 84 84 47 0 85-38 85-84z"/> -</font></defs></svg> diff --git a/elgg_clean/bower_components/fuelux/fonts/fuelux.ttf b/elgg_clean/bower_components/fuelux/fonts/fuelux.ttf deleted file mode 100644 index 100a104bf190eaae589165a04a19db27beef7d2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 zcmZQzWME+6WoTevW(aU|3-Qety7Q2Mf!&3HfkDRI#np|$ih+%Rfn9}xfkDAPSl>v0 zx{o&l17idO14CGHZeqa!Ddl|(42)M87#O|M6N?M}|7T!kU|^SFU|`@#rNU-#aR zfq~hEfr0T(MrvXT!=<pt3=9l+7#JALGBQ#VSu~kg85kHv7#J8-GIC2QIA<~aU|?X} zz`($ul#`#F$n=jngn@xs0py<C#EJrja0X)r21W~zd-4)<QzuJ_&17I;m0)0CEHB6} zE@56~?#sZyHi3bGp$F_YMh1pO(bKNR^V@u7;AUa~f%CVxKEr8d24=>;jDJDyWq?RC zfb@Yy^dJI^e?cN39dOJ77U5+uVBi3YffO==#T>wV1_nkZ2F3{ttPC8CK8$G$3=Hm2 z`YVGZLkj}~69X$JR3!rgg8+ib5Rm4Y!r<_L;Q=S(gZ~d0^cesC2e}RuPYfV^5Tzgs znHU(D8ATb}8JijT86p^%8JHPj7?y+OnHd;B@xUMhb`t}G3j;HlCBwkNpuxbvz{UXb z0TTnm1J3{dK{_5VfM^AXDv$sJBO5p%AZ)00U=ECcx(LP{=5!cC216A?7sD)uRSdfr zPBGkKc*np23UhGkVP)WE5M&T%kY!M2&}7hOU=TJlH)Z2zG&VC=XA?G8Q&$!fS5s#f z6E|mL7d5kIRAyrrH)9qPH&;^^XBQJUR-3M65bP8g!lqzlVQekW63p_%P{YbLtPUak z04%T;EXmjoQewUqB=qm2wU$A!J4h!-8A6y*1S}E>k_1H!Bcmu|Gvf-zzYL)K2DX_| z6r?|laV1zK0|NsiV>=^1<6p)lU^QTOF&=_gxCCKNGeZR9UxwEpHL75LF#ZL*`!&ck z21Z7H24==343%JckZ;WyGeN$n1iOua5u8$AGt`3Q&B0*;))*EJaRnnd6<0ER1j*Yo zf<n#??1UJI3m8FZo}rd;1xQ{P9KOt8>mj~jU}T74Y-jig@h3PI*uh~74KfBshUE;c zi~)>#pq#5B!ltBVYGP)@7+~aPXz2FW&B#bu$p{o)3=BLB)4+KKlnvMz_@Hbi26hHj zD4Ur<k)aUEW?^7sSO{f<Qo{i#n~i~u;T9<Ov2ZdlGVp-&B_j(b0}}%ugD6y-nZb!c z7s_T~;9-~yWwSDfF|2^H*%){j&M>4glrp3;<S>*nR4_24m8RyDRxmIGF{Co2Gn6vq zFeEY*F)#$BrkCa<7BMimG2}DkF_eJmB8GH^R0ahGBL+PN0|o^KD+UD=!yqC?47v>F z47v<P3<eB_3?>W=Zuxm7Zuv#&sR~AV1`1XR5Gxg|6pVDub&U)RO&Cy2fjcRTA(f$s zp_m~P>;we{L$I|BVW~yMnfZANhI$4#G{VbZNE~36F}$F3%D}|P#K_FZ!pO?V#>mdd z!N|$T#mLQGnwRNnU|;~H4WYCVls1OaCQ#ZGN}EAxb0}>Ar7b}={r}Iv1dd5Q1_lNR du%keHW(FPxMg|smfed!%`M6`hKq`>y7XSpx0}TKG diff --git a/elgg_clean/bower_components/fuelux/fonts/fuelux.woff b/elgg_clean/bower_components/fuelux/fonts/fuelux.woff deleted file mode 100644 index 4c2cd2d62cb06f7ffd09ae877a475c3887d9dc04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1300 zcmXT-cXRU(3GruOU=?BDW?*1oV0*y82%<5uvzwa&0|O%m0|Vm=1_majjVasQ+}uKZ z85o#8FfcGkGB7a6<O|(-=<ed`#=yYL!@$5G%fP^(z+l0^;vcMU#K6F;!@$7c#lXOj zpuf{6CpkB<fPsOzf`Ng-hJk_6>wuKf_KeiT6b1(7Ees3{`V0&VW(=3Y9%p2vCNeNE zKLMG~z`&rwqRGUZky}#1z`z1>q!a@KgB1HLrXRV96$K0oEHWTZfH8LfLtbKTDgy(H z3IhYfT?Pim^2t(SGYj&IOBfhfL7D}??qg<Pte9ha;e58RqX_$l@0Z@Z+ps&&)M}AL zxBV~fs?M+O+t@G4En(L+)0^R~y;NnIYjDPyOEI_ZO}epmHVeybZ*TAF8;65}sxtL0 zTSETGFKH6_Bb=ttkvH?z%g=J3pIP@icDOMLPTlVJZErA355pmi_uU`<>DB4(TD5p} z`Oc~>?yaxG-t@ozr(bgPbH&{2OD$^N_A$rw9RBWIc;RtGM`N9s^8)F0hkReODoV5o zR&XU7@J%yLxA#^NYN~EZJXm{>`JnSbWyhcdF1I85o<}n$NNWEO48L$R^iPXi*hV&~ zB$b~jZ&H8xKD*m4+RXb=`pdLil5b9Y**5Ea&t+?^$@4Go*6L>65}w-Zv#j=^Wwq<? zP_w8-%&QL8{Iht&^KaJdbldftpB9`**nhM2L*Kz^^=*vDw#O&VcxY(v^Y8nFgMK$< zY|ogfE#Gu=<w>`1A68tncxCwGxwc+usp+3JryT@dHvCMoivML)s3XgAcI`BGpQG!Z zOncVtvU=;b+10<7%$+3mse9)pUz6VlGQ*;txO{uF_0BPyi<7!Sz4Oz*dF<AGtMjAV zac0JG;Y&Sp%hqsN1~Q$GzkOFB>ZI0^bYqpP)6B}R{mpXNBJZ{Oiq4z!lR~^s<v+Xj zR_kKZ%(Yw61%ubIc-Iw9&!}fSAF;WkVoq{GLP82d)91qDb&W5hW9BECFhp$Tux4Oj z0Li5!Bs^eF;$#y@NJ?OF(o;xd{4Bx1vV*}EDxa2=Fz3L5QwI*dI6ULnfddctmhLz5 zFxp~ZU|_hR$ml>LL(@rt3D0I7dhns)A*1@^=KuT>UnKtj`_C<s)}kH2;N-@j*U38_ zVpl>!T0?>)n;V-z0pll$gEeAoyb5R8mPks@kdTlo`1hYb=tBdei?)H&Rc1zIY33$l zCq{<UHEbK8?qql*pDupu_~+X-sSnbU7#crs-(hz+GmS0n*#4gS#uz@f4JHgBo4D7& z{PpMbfddPUA7Nl}FjHpMN?>9zXJayCVqjokVqjoq6lH8@Y-Z$Vh+tr5U}lJ6SPsfs z0Surrp<+&MpKaD*2Z2`mo11(#cuv1ETWM*_78V}8;2#W{cXmf`H&6I*tLe_+33jo4 z6Pcf|So+R;q8U^%{pQbaAD^*Dd~!TgAY}BeSN%+-*}P9jE?P`|e!1dUQ~qP0@8RcE z_D<d;vzl$*ipR|#r-T<h4w={evB!O1kMT?UH!nF&s_rM=Z(kN(H#x*R>xST0-qQPT zSfs6@&L#I1vB=D83aVWD<Nljf6>B#JRa9!lU0IZUezxAVgFhFQWS7foe)y^NJyrGe w*{RzmDXH^4=JGq+wlT-qMt0Y=P}j=cANWJwo0-Al)q$;tCxd~3p^t$T0OF4bMgRZ+ diff --git a/elgg_clean/bower_components/fuelux/fonts/src/bullet.svg b/elgg_clean/bower_components/fuelux/fonts/src/bullet.svg deleted file mode 100755 index 052084aa..00000000 --- a/elgg_clean/bower_components/fuelux/fonts/src/bullet.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="600px" height="600px" viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve"> -<circle cx="294.5" cy="345" r="99"/> -</svg> diff --git a/elgg_clean/bower_components/fuelux/fonts/src/loader_1.svg b/elgg_clean/bower_components/fuelux/fonts/src/loader_1.svg deleted file mode 100755 index 84038931..00000000 --- a/elgg_clean/bower_components/fuelux/fonts/src/loader_1.svg +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="600px" - height="600px" viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve"> -<g id="Layer_1" display="none"> - <path display="inline" fill="#010101" d="M177.304,142.23c29.54-23.006,65.708-37.889,105.16-41.319V3.483 - c-66.241,3.858-126.647,29.418-174.226,69.681L177.304,142.23z"/> - <path display="inline" fill="#010101" d="M3.993,275.2h97.674c4.848-39.166,21.03-74.814,45.158-103.573l-68.89-68.891 - C36.444,149.411,9.445,209.244,3.993,275.2z"/> - <path display="inline" fill="#010101" d="M73.165,491.764l69.066-69.066c-23.006-29.541-37.889-65.709-41.319-105.161H3.483 - C7.341,383.778,32.902,444.186,73.165,491.764z"/> - <path display="inline" fill="#010101" d="M275.2,498.333c-39.166-4.849-74.813-21.029-103.573-45.158l-68.891,68.89 - c46.674,41.492,106.508,68.49,172.463,73.943V498.333z"/> - <path display="inline" fill="#010101" d="M422.695,457.771c-29.539,23.005-65.707,37.888-105.159,41.317v97.429 - c66.242-3.856,126.648-29.418,174.226-69.68L422.695,457.771z"/> - <path display="inline" fill="#010101" d="M596.007,324.801h-97.675c-4.849,39.165-21.029,74.812-45.158,103.574l68.89,68.888 - C563.556,450.59,590.554,390.755,596.007,324.801z"/> - <path display="inline" fill="#010101" d="M324.801,101.667c39.165,4.848,74.813,21.03,103.573,45.159l68.889-68.891 - C450.589,36.444,390.755,9.446,324.801,3.993V101.667z"/> - <path display="inline" fill="#010101" d="M526.836,108.238l-69.066,69.066c23.006,29.54,37.889,65.708,41.318,105.159h97.429 - C592.659,216.222,567.098,155.816,526.836,108.238z"/> -</g> -<g id="Layer_2"> - <path fill="#010101" d="M324.801,101.667c39.165,4.848,74.813,21.03,103.573,45.159l68.889-68.891 - C450.589,36.444,390.755,9.446,324.801,3.993V101.667z"/> -</g> -</svg> diff --git a/elgg_clean/bower_components/fuelux/fonts/src/loader_2.svg b/elgg_clean/bower_components/fuelux/fonts/src/loader_2.svg deleted file mode 100755 index 5e04bbe6..00000000 --- a/elgg_clean/bower_components/fuelux/fonts/src/loader_2.svg +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="600px" - height="600px" viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve"> -<g id="Layer_1" display="none"> - <path display="inline" fill="#010101" d="M177.304,142.23c29.54-23.006,65.708-37.889,105.16-41.319V3.483 - c-66.241,3.858-126.647,29.418-174.226,69.681L177.304,142.23z"/> - <path display="inline" fill="#010101" d="M3.993,275.2h97.674c4.848-39.166,21.03-74.814,45.158-103.573l-68.89-68.891 - C36.444,149.411,9.445,209.244,3.993,275.2z"/> - <path display="inline" fill="#010101" d="M73.165,491.764l69.066-69.066c-23.006-29.541-37.889-65.709-41.319-105.161H3.483 - C7.341,383.778,32.902,444.186,73.165,491.764z"/> - <path display="inline" fill="#010101" d="M275.2,498.333c-39.166-4.849-74.813-21.029-103.573-45.158l-68.891,68.89 - c46.674,41.492,106.508,68.49,172.463,73.943V498.333z"/> - <path display="inline" fill="#010101" d="M422.695,457.771c-29.539,23.005-65.707,37.888-105.159,41.317v97.429 - c66.242-3.856,126.648-29.418,174.226-69.68L422.695,457.771z"/> - <path display="inline" fill="#010101" d="M596.007,324.801h-97.675c-4.849,39.165-21.029,74.812-45.158,103.574l68.89,68.888 - C563.556,450.59,590.554,390.755,596.007,324.801z"/> - <path display="inline" fill="#010101" d="M324.801,101.667c39.165,4.848,74.813,21.03,103.573,45.159l68.889-68.891 - C450.589,36.444,390.755,9.446,324.801,3.993V101.667z"/> - <path display="inline" fill="#010101" d="M526.836,108.238l-69.066,69.066c23.006,29.54,37.889,65.708,41.318,105.159h97.429 - C592.659,216.222,567.098,155.816,526.836,108.238z"/> -</g> -<g id="Layer_2"> - <path fill="#010101" d="M526.836,108.238l-69.066,69.066c23.006,29.54,37.889,65.708,41.318,105.159h97.429 - C592.659,216.222,567.098,155.816,526.836,108.238z"/> -</g> -</svg> diff --git a/elgg_clean/bower_components/fuelux/fonts/src/loader_3.svg b/elgg_clean/bower_components/fuelux/fonts/src/loader_3.svg deleted file mode 100755 index 0a2a5640..00000000 --- a/elgg_clean/bower_components/fuelux/fonts/src/loader_3.svg +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="600px" - height="600px" viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve"> -<g id="Layer_1" display="none"> - <path display="inline" fill="#010101" d="M177.304,142.23c29.54-23.006,65.708-37.889,105.16-41.319V3.483 - c-66.241,3.858-126.647,29.418-174.226,69.681L177.304,142.23z"/> - <path display="inline" fill="#010101" d="M3.993,275.2h97.674c4.848-39.166,21.03-74.814,45.158-103.573l-68.89-68.891 - C36.444,149.411,9.445,209.244,3.993,275.2z"/> - <path display="inline" fill="#010101" d="M73.165,491.764l69.066-69.066c-23.006-29.541-37.889-65.709-41.319-105.161H3.483 - C7.341,383.778,32.902,444.186,73.165,491.764z"/> - <path display="inline" fill="#010101" d="M275.2,498.333c-39.166-4.849-74.813-21.029-103.573-45.158l-68.891,68.89 - c46.674,41.492,106.508,68.49,172.463,73.943V498.333z"/> - <path display="inline" fill="#010101" d="M422.695,457.771c-29.539,23.005-65.707,37.888-105.159,41.317v97.429 - c66.242-3.856,126.648-29.418,174.226-69.68L422.695,457.771z"/> - <path display="inline" fill="#010101" d="M596.007,324.801h-97.675c-4.849,39.165-21.029,74.812-45.158,103.574l68.89,68.888 - C563.556,450.59,590.554,390.755,596.007,324.801z"/> - <path display="inline" fill="#010101" d="M324.801,101.667c39.165,4.848,74.813,21.03,103.573,45.159l68.889-68.891 - C450.589,36.444,390.755,9.446,324.801,3.993V101.667z"/> - <path display="inline" fill="#010101" d="M526.836,108.238l-69.066,69.066c23.006,29.54,37.889,65.708,41.318,105.159h97.429 - C592.659,216.222,567.098,155.816,526.836,108.238z"/> -</g> -<g id="Layer_2"> - <path fill="#010101" d="M596.007,324.801h-97.675c-4.849,39.165-21.029,74.812-45.158,103.574l68.89,68.888 - C563.556,450.59,590.554,390.755,596.007,324.801z"/> -</g> -</svg> diff --git a/elgg_clean/bower_components/fuelux/fonts/src/loader_4.svg b/elgg_clean/bower_components/fuelux/fonts/src/loader_4.svg deleted file mode 100755 index a3b4dfd8..00000000 --- a/elgg_clean/bower_components/fuelux/fonts/src/loader_4.svg +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="600px" - height="600px" viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve"> -<g id="Layer_1" display="none"> - <path display="inline" fill="#010101" d="M177.304,142.23c29.54-23.006,65.708-37.889,105.16-41.319V3.483 - c-66.241,3.858-126.647,29.418-174.226,69.681L177.304,142.23z"/> - <path display="inline" fill="#010101" d="M3.993,275.2h97.674c4.848-39.166,21.03-74.814,45.158-103.573l-68.89-68.891 - C36.444,149.411,9.445,209.244,3.993,275.2z"/> - <path display="inline" fill="#010101" d="M73.165,491.764l69.066-69.066c-23.006-29.541-37.889-65.709-41.319-105.161H3.483 - C7.341,383.778,32.902,444.186,73.165,491.764z"/> - <path display="inline" fill="#010101" d="M275.2,498.333c-39.166-4.849-74.813-21.029-103.573-45.158l-68.891,68.89 - c46.674,41.492,106.508,68.49,172.463,73.943V498.333z"/> - <path display="inline" fill="#010101" d="M422.695,457.771c-29.539,23.005-65.707,37.888-105.159,41.317v97.429 - c66.242-3.856,126.648-29.418,174.226-69.68L422.695,457.771z"/> - <path display="inline" fill="#010101" d="M596.007,324.801h-97.675c-4.849,39.165-21.029,74.812-45.158,103.574l68.89,68.888 - C563.556,450.59,590.554,390.755,596.007,324.801z"/> - <path display="inline" fill="#010101" d="M324.801,101.667c39.165,4.848,74.813,21.03,103.573,45.159l68.889-68.891 - C450.589,36.444,390.755,9.446,324.801,3.993V101.667z"/> - <path display="inline" fill="#010101" d="M526.836,108.238l-69.066,69.066c23.006,29.54,37.889,65.708,41.318,105.159h97.429 - C592.659,216.222,567.098,155.816,526.836,108.238z"/> -</g> -<g id="Layer_2"> - <path fill="#010101" d="M422.695,457.771c-29.539,23.005-65.707,37.888-105.159,41.317v97.429 - c66.242-3.856,126.648-29.418,174.226-69.68L422.695,457.771z"/> -</g> -</svg> diff --git a/elgg_clean/bower_components/fuelux/fonts/src/loader_5.svg b/elgg_clean/bower_components/fuelux/fonts/src/loader_5.svg deleted file mode 100755 index f801765b..00000000 --- a/elgg_clean/bower_components/fuelux/fonts/src/loader_5.svg +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="600px" - height="600px" viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve"> -<g id="Layer_1" display="none"> - <path display="inline" fill="#010101" d="M177.304,142.23c29.54-23.006,65.708-37.889,105.16-41.319V3.483 - c-66.241,3.858-126.647,29.418-174.226,69.681L177.304,142.23z"/> - <path display="inline" fill="#010101" d="M3.993,275.2h97.674c4.848-39.166,21.03-74.814,45.158-103.573l-68.89-68.891 - C36.444,149.411,9.445,209.244,3.993,275.2z"/> - <path display="inline" fill="#010101" d="M73.165,491.764l69.066-69.066c-23.006-29.541-37.889-65.709-41.319-105.161H3.483 - C7.341,383.778,32.902,444.186,73.165,491.764z"/> - <path display="inline" fill="#010101" d="M275.2,498.333c-39.166-4.849-74.813-21.029-103.573-45.158l-68.891,68.89 - c46.674,41.492,106.508,68.49,172.463,73.943V498.333z"/> - <path display="inline" fill="#010101" d="M422.695,457.771c-29.539,23.005-65.707,37.888-105.159,41.317v97.429 - c66.242-3.856,126.648-29.418,174.226-69.68L422.695,457.771z"/> - <path display="inline" fill="#010101" d="M596.007,324.801h-97.675c-4.849,39.165-21.029,74.812-45.158,103.574l68.89,68.888 - C563.556,450.59,590.554,390.755,596.007,324.801z"/> - <path display="inline" fill="#010101" d="M324.801,101.667c39.165,4.848,74.813,21.03,103.573,45.159l68.889-68.891 - C450.589,36.444,390.755,9.446,324.801,3.993V101.667z"/> - <path display="inline" fill="#010101" d="M526.836,108.238l-69.066,69.066c23.006,29.54,37.889,65.708,41.318,105.159h97.429 - C592.659,216.222,567.098,155.816,526.836,108.238z"/> -</g> -<g id="Layer_2"> - <path fill="#010101" d="M275.2,498.333c-39.166-4.849-74.813-21.029-103.573-45.158l-68.891,68.89 - c46.674,41.492,106.508,68.49,172.463,73.943V498.333z"/> -</g> -</svg> diff --git a/elgg_clean/bower_components/fuelux/fonts/src/loader_6.svg b/elgg_clean/bower_components/fuelux/fonts/src/loader_6.svg deleted file mode 100755 index 6f48c6d1..00000000 --- a/elgg_clean/bower_components/fuelux/fonts/src/loader_6.svg +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="600px" - height="600px" viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve"> -<g id="Layer_1" display="none"> - <path display="inline" fill="#010101" d="M177.304,142.23c29.54-23.006,65.708-37.889,105.16-41.319V3.483 - c-66.241,3.858-126.647,29.418-174.226,69.681L177.304,142.23z"/> - <path display="inline" fill="#010101" d="M3.993,275.2h97.674c4.848-39.166,21.03-74.814,45.158-103.573l-68.89-68.891 - C36.444,149.411,9.445,209.244,3.993,275.2z"/> - <path display="inline" fill="#010101" d="M73.165,491.764l69.066-69.066c-23.006-29.541-37.889-65.709-41.319-105.161H3.483 - C7.341,383.778,32.902,444.186,73.165,491.764z"/> - <path display="inline" fill="#010101" d="M275.2,498.333c-39.166-4.849-74.813-21.029-103.573-45.158l-68.891,68.89 - c46.674,41.492,106.508,68.49,172.463,73.943V498.333z"/> - <path display="inline" fill="#010101" d="M422.695,457.771c-29.539,23.005-65.707,37.888-105.159,41.317v97.429 - c66.242-3.856,126.648-29.418,174.226-69.68L422.695,457.771z"/> - <path display="inline" fill="#010101" d="M596.007,324.801h-97.675c-4.849,39.165-21.029,74.812-45.158,103.574l68.89,68.888 - C563.556,450.59,590.554,390.755,596.007,324.801z"/> - <path display="inline" fill="#010101" d="M324.801,101.667c39.165,4.848,74.813,21.03,103.573,45.159l68.889-68.891 - C450.589,36.444,390.755,9.446,324.801,3.993V101.667z"/> - <path display="inline" fill="#010101" d="M526.836,108.238l-69.066,69.066c23.006,29.54,37.889,65.708,41.318,105.159h97.429 - C592.659,216.222,567.098,155.816,526.836,108.238z"/> -</g> -<g id="Layer_2"> - <path fill="#010101" d="M73.165,491.764l69.066-69.066c-23.006-29.541-37.889-65.709-41.319-105.161H3.483 - C7.341,383.778,32.902,444.186,73.165,491.764z"/> -</g> -</svg> diff --git a/elgg_clean/bower_components/fuelux/fonts/src/loader_7.svg b/elgg_clean/bower_components/fuelux/fonts/src/loader_7.svg deleted file mode 100755 index 00edc63c..00000000 --- a/elgg_clean/bower_components/fuelux/fonts/src/loader_7.svg +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="600px" - height="600px" viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve"> -<g id="Layer_1" display="none"> - <path display="inline" fill="#010101" d="M177.304,142.23c29.54-23.006,65.708-37.889,105.16-41.319V3.483 - c-66.241,3.858-126.647,29.418-174.226,69.681L177.304,142.23z"/> - <path display="inline" fill="#010101" d="M3.993,275.2h97.674c4.848-39.166,21.03-74.814,45.158-103.573l-68.89-68.891 - C36.444,149.411,9.445,209.244,3.993,275.2z"/> - <path display="inline" fill="#010101" d="M73.165,491.764l69.066-69.066c-23.006-29.541-37.889-65.709-41.319-105.161H3.483 - C7.341,383.778,32.902,444.186,73.165,491.764z"/> - <path display="inline" fill="#010101" d="M275.2,498.333c-39.166-4.849-74.813-21.029-103.573-45.158l-68.891,68.89 - c46.674,41.492,106.508,68.49,172.463,73.943V498.333z"/> - <path display="inline" fill="#010101" d="M422.695,457.771c-29.539,23.005-65.707,37.888-105.159,41.317v97.429 - c66.242-3.856,126.648-29.418,174.226-69.68L422.695,457.771z"/> - <path display="inline" fill="#010101" d="M596.007,324.801h-97.675c-4.849,39.165-21.029,74.812-45.158,103.574l68.89,68.888 - C563.556,450.59,590.554,390.755,596.007,324.801z"/> - <path display="inline" fill="#010101" d="M324.801,101.667c39.165,4.848,74.813,21.03,103.573,45.159l68.889-68.891 - C450.589,36.444,390.755,9.446,324.801,3.993V101.667z"/> - <path display="inline" fill="#010101" d="M526.836,108.238l-69.066,69.066c23.006,29.54,37.889,65.708,41.318,105.159h97.429 - C592.659,216.222,567.098,155.816,526.836,108.238z"/> -</g> -<g id="Layer_2"> - <path fill="#010101" d="M3.993,275.2h97.674c4.848-39.166,21.03-74.814,45.158-103.573l-68.89-68.891 - C36.444,149.411,9.445,209.244,3.993,275.2z"/> -</g> -</svg> diff --git a/elgg_clean/bower_components/fuelux/fonts/src/loader_8.svg b/elgg_clean/bower_components/fuelux/fonts/src/loader_8.svg deleted file mode 100755 index 7f2cd646..00000000 --- a/elgg_clean/bower_components/fuelux/fonts/src/loader_8.svg +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="600px" - height="600px" viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve"> -<g id="Layer_1" display="none"> - <path display="inline" fill="#010101" d="M177.304,142.23c29.54-23.006,65.708-37.889,105.16-41.319V3.483 - c-66.241,3.858-126.647,29.418-174.226,69.681L177.304,142.23z"/> - <path display="inline" fill="#010101" d="M3.993,275.2h97.674c4.848-39.166,21.03-74.814,45.158-103.573l-68.89-68.891 - C36.444,149.411,9.445,209.244,3.993,275.2z"/> - <path display="inline" fill="#010101" d="M73.165,491.764l69.066-69.066c-23.006-29.541-37.889-65.709-41.319-105.161H3.483 - C7.341,383.778,32.902,444.186,73.165,491.764z"/> - <path display="inline" fill="#010101" d="M275.2,498.333c-39.166-4.849-74.813-21.029-103.573-45.158l-68.891,68.89 - c46.674,41.492,106.508,68.49,172.463,73.943V498.333z"/> - <path display="inline" fill="#010101" d="M422.695,457.771c-29.539,23.005-65.707,37.888-105.159,41.317v97.429 - c66.242-3.856,126.648-29.418,174.226-69.68L422.695,457.771z"/> - <path display="inline" fill="#010101" d="M596.007,324.801h-97.675c-4.849,39.165-21.029,74.812-45.158,103.574l68.89,68.888 - C563.556,450.59,590.554,390.755,596.007,324.801z"/> - <path display="inline" fill="#010101" d="M324.801,101.667c39.165,4.848,74.813,21.03,103.573,45.159l68.889-68.891 - C450.589,36.444,390.755,9.446,324.801,3.993V101.667z"/> - <path display="inline" fill="#010101" d="M526.836,108.238l-69.066,69.066c23.006,29.54,37.889,65.708,41.318,105.159h97.429 - C592.659,216.222,567.098,155.816,526.836,108.238z"/> -</g> -<g id="Layer_2"> - <path fill="#010101" d="M177.304,142.23c29.54-23.006,65.708-37.889,105.16-41.319V3.483 - c-66.241,3.858-126.647,29.418-174.226,69.681L177.304,142.23z"/> -</g> -</svg> diff --git a/elgg_clean/bower_components/fuelux/fonts/src/loader_full.svg b/elgg_clean/bower_components/fuelux/fonts/src/loader_full.svg deleted file mode 100755 index 17504314..00000000 --- a/elgg_clean/bower_components/fuelux/fonts/src/loader_full.svg +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="600px" height="600px" viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve"> -<g> - <path fill="#010101" d="M177.304,142.23c29.54-23.006,65.708-37.889,105.16-41.319V3.483 - c-66.241,3.858-126.647,29.418-174.226,69.681L177.304,142.23z"/> - <path fill="#010101" d="M3.993,275.2h97.674c4.848-39.166,21.03-74.814,45.158-103.573l-68.89-68.891 - C36.444,149.411,9.445,209.244,3.993,275.2z"/> - <path fill="#010101" d="M73.165,491.764l69.066-69.066c-23.006-29.541-37.889-65.709-41.319-105.161H3.483 - C7.341,383.778,32.902,444.186,73.165,491.764z"/> - <path fill="#010101" d="M275.2,498.333c-39.166-4.849-74.813-21.029-103.573-45.158l-68.891,68.89 - c46.674,41.492,106.508,68.49,172.463,73.943V498.333z"/> - <path fill="#010101" d="M422.695,457.771c-29.539,23.005-65.707,37.888-105.159,41.317v97.429 - c66.242-3.856,126.648-29.418,174.226-69.68L422.695,457.771z"/> - <path fill="#010101" d="M596.007,324.801h-97.675c-4.849,39.165-21.029,74.812-45.158,103.574l68.89,68.888 - C563.556,450.59,590.554,390.755,596.007,324.801z"/> - <path fill="#010101" d="M324.801,101.667c39.165,4.848,74.813,21.03,103.573,45.159l68.889-68.891 - C450.589,36.444,390.755,9.446,324.801,3.993V101.667z"/> - <path fill="#010101" d="M526.836,108.238l-69.066,69.066c23.006,29.54,37.889,65.708,41.318,105.159h97.429 - C592.659,216.222,567.098,155.816,526.836,108.238z"/> -</g> -</svg> diff --git a/elgg_clean/bower_components/fuelux/grunt/config/blanket_qunit.js b/elgg_clean/bower_components/fuelux/grunt/config/blanket_qunit.js deleted file mode 100644 index 7013bcc2..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/blanket_qunit.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = function (grunt) { - - return { - source: { - options: { - urls: ['http://localhost:' + '<%= connectTestServerOptionsPort %>' + '/test/?coverage=true&gruntReport'], - threshold: 1, - globalThreshold: 1 - } - } - } - -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/browserify.js b/elgg_clean/bower_components/fuelux/grunt/config/browserify.js deleted file mode 100644 index a512e27e..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/browserify.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - commonjs: { - files: { - 'test/commonjs-bundle.js': ['test/commonjs-test.js'] - } - } -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/bump.js b/elgg_clean/bower_components/fuelux/grunt/config/bump.js deleted file mode 100644 index c36def93..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/bump.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - options: { - files: ['package.json'], - updateConfigs: ['pkg'], - commit: false, - createTag: false, - tagName: '%VERSION%', - tagMessage: '%VERSION%', - push: false, - gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d' - } -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/clean.js b/elgg_clean/bower_components/fuelux/grunt/config/clean.js deleted file mode 100644 index f572a4fa..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/clean.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - dist: ['dist'], - zipsrc: ['dist/fuelux'], - screenshots: ['page-at-timeout-*.jpg'] -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/compress.js b/elgg_clean/bower_components/fuelux/grunt/config/compress.js deleted file mode 100644 index 95ba8988..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/compress.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - zip: { - files: [{ - cwd: 'dist/', - expand: true, - src: ['fuelux/**'] - }], - options: { - archive: 'dist/fuelux.zip', - mode: 'zip' - } - } -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/concat.js b/elgg_clean/bower_components/fuelux/grunt/config/concat.js deleted file mode 100644 index 868ced44..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/concat.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = function (grunt) { - - return { - fuelux: { - src: ['js/checkbox.js', - 'js/combobox.js', - 'js/datepicker.js', - 'js/dropdown-autoflip.js', - 'js/loader.js', - 'js/placard.js', - 'js/radio.js', - 'js/search.js', - 'js/selectlist.js', - 'js/spinbox.js', - 'js/tree.js', - 'js/wizard.js', - 'js/infinite-scroll.js', - 'js/pillbox.js', - 'js/repeater.js', - 'js/repeater-list.js', - 'js/repeater-thumbnail.js', - 'js/scheduler.js', - 'js/picker.js' - ], - dest: 'dist/js/' + '<%= pkg.name %>' + '.js' - }, - options: { - banner: '<%= banner %>' + '\n\n// For more information on UMD visit: https://github.com/umdjs/umd/\n(function (factory) {\n\tif (typeof define === \'function\' && define.amd) {\n\t\tdefine([\'jquery\', \'bootstrap\'], factory);\n\t} else {\n\t\tfactory(jQuery);\n\t}\n}(function (jQuery) {\n\n<%= jqueryCheck %><%= bootstrapCheck %>', - footer: '\n}));', - process: function (source) { - source = '(function ($) {\n\n' + - source.replace(/\/\/ -- BEGIN UMD WRAPPER PREFACE --(\n|.)*\/\/ -- END UMD WRAPPER PREFACE --/g, ''); - source = source.replace(/\/\/ -- BEGIN UMD WRAPPER AFTERWORD --(\n|.)*\/\/ -- END UMD WRAPPER AFTERWORD --/g, '') + '\n})(jQuery);\n\n'; - return source; - } - } - } - -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/connect.js b/elgg_clean/bower_components/fuelux/grunt/config/connect.js deleted file mode 100644 index f13fd0ec..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/connect.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = function (grunt) { - - return { - server: { - options: { - hostname: '*', - base: { - path: '.', - options: { - index: ['index.html', 'tests.html'] - } - }, - port: 8000, - useAvailablePort: true - } - }, - testServer: { - options: { - base: { - path: '.', - options: { - index: ['index.html', 'tests.html'] - } - }, - hostname: '*', - port: '<%= connectTestServerOptionsPort %>', - useAvailablePort: true - } - } - } - -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/copy.js b/elgg_clean/bower_components/fuelux/grunt/config/copy.js deleted file mode 100644 index 8c1d7afd..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/copy.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - fonts: { - cwd: 'fonts/', - dest: 'dist/fonts/', - expand: true, - filter: 'isFile', - src: ['*'] - }, - zipsrc: { - cwd: 'dist/', - dest: 'dist/fuelux/', - expand: true, - src: ['**'] - } -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/htmllint.js b/elgg_clean/bower_components/fuelux/grunt/config/htmllint.js deleted file mode 100644 index 9ffb0d0a..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/htmllint.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - options: { - ignore:[ - 'Section lacks heading. Consider using “h2”-“h6” elements to add identifying headings to all sections.', - 'Bad value X-UA-Compatible for attribute http-equiv on element meta.', - 'Element head is missing a required instance of child element title.' - ], - force: true - }, - src: ['index.html', 'markup/*.html', 'test/markup/*.html'] -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/jsbeautifier.js b/elgg_clean/bower_components/fuelux/grunt/config/jsbeautifier.js deleted file mode 100644 index 0c9ee066..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/jsbeautifier.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - files: ['dist/js/fuelux.js'], - options: { - js: { - braceStyle: 'collapse', - breakChainedMethods: false, - e4x: false, - evalCode: false, - indentLevel: 0, - indentSize: 4, - indentWithTabs: true, - jslintHappy: false, - keepArrayIndentation: false, - keepFunctionIndentation: false, - maxPreserveNewlines: 10, - preserveNewlines: true, - spaceBeforeConditional: true, - spaceInParen: true, - unescapeStrings: false, - wrapLineLength: 0 - } - } -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/jshint.js b/elgg_clean/bower_components/fuelux/grunt/config/jshint.js deleted file mode 100644 index b99bb15f..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/jshint.js +++ /dev/null @@ -1,33 +0,0 @@ -module.exports = { - options: { - boss: true, - browser: true, - curly: false, - eqeqeq: true, - eqnull: true, - globals: { - jQuery: true, - define: true, - require: true, - module: true - }, - immed: true, - latedef: true, - newcap: true, - noarg: true, - sub: true, - undef: true, - unused: false - }, - sourceAndDist: ['Gruntfile.js', 'js/*.js', 'dist/fuelux.js'], - tests: { - options: { - latedef: false, - undef: false, - unused: false - }, - files: { - src: ['test/**/*.js', '!test/commonjs-bundle.js'] - } - } -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/less.js b/elgg_clean/bower_components/fuelux/grunt/config/less.js deleted file mode 100644 index 496215b6..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/less.js +++ /dev/null @@ -1,47 +0,0 @@ -module.exports = function (grunt) { - - var minifiedOutput = 'dist/css/' + '<%= pkg.name %>' + '.min.css'; - - var minifyFiles = function() { - var minifyFiles = {}; - var output = 'dist/css/' + '<%= pkg.name %>' + '.min.css' - minifyFiles[output] = 'dist/css/' + '<%= pkg.name %>' + '.css' - return minifyFiles - }; - - return { - dev: { - options: { - strictMath: true, - sourceMap: true, - outputSourceFiles: true, - sourceMapURL: grunt.config('pkg.name') + '-dev.css.map', - sourceMapFilename: 'dist/css/' + '<%= pkg.name %>' + '-dev.css.map' - }, - files: { - 'dist/css/fuelux-dev.css': 'less/fuelux.less' - } - }, - dist: { - options: { - strictMath: true, - sourceMap: true, - outputSourceFiles: true, - sourceMapURL: '<%= pkg.name %>' + '.css.map', - sourceMapFilename: 'dist/css/' + '<%= pkg.name %>' + '.css.map' - }, - files: { - 'dist/css/fuelux.css': 'less/fuelux.less' - } - }, - minify: { - options: { - cleancss: true, - compress: true, - report: 'min' - }, - files: minifyFiles() - } - } - -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/prompt.js b/elgg_clean/bower_components/fuelux/grunt/config/prompt.js deleted file mode 100644 index aed759fe..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/prompt.js +++ /dev/null @@ -1,302 +0,0 @@ -module.exports = function (grunt) { - var semver = require('semver'); - function getPackageVersion() { - return grunt.file.readJSON('./package.json').version; - } - - return { - // asks for what version you want to build - 'tempbranch': { - options: { - questions: [ - { - config: 'release.remoteRepository', - default : '<%= release.remoteRepository %>', - type: 'input', - message: function() { - return 'What repository would like to base your local release branch from?'; - } - }, - { - // Assumption is made that you are releasing the code within a "release branch" currently - // on the upstream remote repo. This branch will be tracked locally and be used to run - // the build process in. It will be named release_{BUILD_VERSION}_{MMSS} (that is, it will - // use the version specified earlier and a "mini-timestamp" of the current hour and minute). - config: 'release.remoteBaseBranch', - type: 'input', - default : '<%= release.remoteBaseBranch %>', - message: function() { - return 'What remote branch from ' + grunt.config('release.remoteRepository') + - ' would like to build your release based on?'; - } - } - ] - } - }, - // asks for what version you want to build - 'build': { - options: { - questions: [ - { - config: 'release.buildSemVerType', - type: 'list', - message: 'What would you like to do?', - choices: [ - { - value: 'patch', - name: 'Patch: ' + semver.inc(getPackageVersion(), 'patch') + ' Backwards-compatible bug fixes.' - }, - { - value: 'minor', - name: 'Minor: ' + semver.inc(getPackageVersion(), 'minor') + ' Add functionality in a backwards-compatible manner.' - }, - { - value: 'major', - name: 'Major: ' + semver.inc(getPackageVersion(), 'major') + ' Incompatible API changes.' - }, - { - value: 'custom', - name: 'Custom: ?.?.? Specify version...' - } - ] - }, - { - // if custom bump is used with a specific version, see dorelease task - config: 'release.buildSemVerType', - type: 'input', - message: 'What specific version would you like', - when: function (answers) { - return answers['release.buildSemVerType'] === 'custom'; - }, - validate: function (value) { - var valid = semver.valid(value); - return valid || 'Must be a valid semver, such as 1.2.3-rc1. See http://semver.org/ for more details.'; - } - } - ] - } - }, - 'commit': { - options: { - questions: [ - { - config: 'release.commit', - type: 'confirm', - message: 'Please review your files.\n Check dist files visually to make sure comment banners have correct release version listed, and that *.min files are minified as expected.\n Also confirm that version number is updated in package.json.\n\n Would you like to commit?' - } - ], - then: function (answers, done) { - if (answers['release.commit'] === true) { - grunt.task.run(['shell:commit']); - } - return false; - } - } - }, - 'tag': { - options: { - questions: [ - { - config: 'release.tag', - type: 'confirm', - message: 'Would you like to tag as ' + getPackageVersion() + '?' - } - ], - then: function (answers, done) { - if (answers['release.tag'] === true) { - grunt.task.run(['shell:tag']); - } - return false; - } - } - }, - 'pushLocalBranchToUpstream': { - options: { - questions: [ - { - config: 'release.remoteDestinationBranch', - type: 'input', - message: function() { - return 'What upstream branch would you like to push ' + grunt.config('release.localBranch') + - ' to (probably ' + grunt.config('release.remoteDestinationBranch') + ')? (leave blank to skip)'; - } - } - ], - then: function (answers, done) { - if (answers['release.remoteDestinationBranch'] !== '' && answers['release.remoteDestinationBranch'] !== 'n' ) { - grunt.task.run(['shell:pushLocalBranchToUpstream']); - } - return false; - } - } - }, - 'pushTagToUpstream': { - options: { - questions: [ - { - config: 'release.upstreamTag', - type: 'confirm', - message: 'Would you like to push tag ' + getPackageVersion() + ' to upstream?' - } - ], - then: function (answers, done) { - if (answers['release.upstreamTag'] === true) { - grunt.task.run(['shell:pushTagToUpstream']); - } - return false; - } - } - }, - 'uploadToCDN': { - options: { - questions: [ - { - config: 'release.uploadToCDN', - type: 'confirm', - message: 'Would you like to upload the `dist folder to fuelcdn.com?' - } - ], - then: function (answers, done) { - if (answers['release.uploadToCDN'] === true) { - grunt.task.run(['shell:uploadToCDN']); - } - return false; - } - } - }, - 'pushLocalBranchToUpstreamMaster': { - options: { - questions: [ - { - config: 'release.pushToUpstreamMaster', - type: 'confirm', - message: 'Would you like to push your local release branch to upstream\'s master branch?' - } - ], - then: function (answers, done) { - if (answers['release.pushToUpstreamMaster'] === true) { - grunt.task.run(['shell:pushLocalBranchToUpstreamMaster']); - } - return false; - } - } - }, - 'deleteLocalReleaseBranch': { - options: { - questions: [ - { - config: 'release.deleteLocalReleaseBranch', - type: 'confirm', - message: function() { - return 'Would you like to delete your local release branch' + '?'; - } - } - ], - then: function (answers, done) { - if (answers['release.deleteLocalReleaseBranch'] === true) { - grunt.task.run(['shell:deleteLocalReleaseBranch']); - } - return false; - } - } - }, - 'publishToNPM': { - options: { - questions: [ - { - config: 'release.publishToNPM', - type: 'confirm', - message: 'Would you like to publish to NPM?' - } - ], - then: function (answers, done) { - if (answers['release.publishToNPM'] === true) { - grunt.task.run(['shell:publishToNPM']); - } - return false; - } - } - }, - 'createmilestone': { - options: { - questions: [ - { - config: 'release.createmilestone', - type: 'confirm', - message: 'Have you created a milestone in GitHub for the next version?' - } - ], - then: function (answers, done) { - if (answers['release.createmilestone'] === false) { - grunt.fail.fatal("Please follow the wiki https://github.com/ExactTarget/fuelux/wiki/How-to-release-a-new-version#how-to-release", 1); - } - } - } - }, - 'bumpmilestones': { - options: { - questions: [ - { - config: 'release.bumpmilestones', - type: 'confirm', - message: 'Have you bumped all open tickets to the next version?' - } - ], - then: function (answers, done) { - if (answers['release.bumpmilestones'] === false) { - grunt.fail.fatal("Please follow the wiki https://github.com/ExactTarget/fuelux/wiki/How-to-release-a-new-version#how-to-release", 1); - } - } - } - }, - 'closemilestone': { - options: { - questions: [ - { - config: 'release.closemilestone', - type: 'confirm', - message: 'Have you marked the current release milestone as closed?' - } - ], - then: function (answers, done) { - if (answers['release.closemilestone'] === false) { - grunt.fail.fatal("Please follow the wiki https://github.com/ExactTarget/fuelux/wiki/How-to-release-a-new-version#how-to-release", 1); - } - } - } - }, - 'startrelease': { - options: { - questions: [ - { - config: 'release.startrelease', - type: 'confirm', - message: 'Would you like to start the release?' - } - ], - then: function (answers, done) { - if (answers['release.startrelease'] === false) { - grunt.fail.fatal("Please follow the wiki https://github.com/ExactTarget/fuelux/wiki/How-to-release-a-new-version#how-to-release", 1); - } - } - } - }, - 'generatelogs': { - options: { - questions: [ - { - config: 'release.generatelogs', - type: 'confirm', - message: 'Would you like to generate change logs?' - } - ], - then: function (answers, done) { - if (answers['release.startrelease'] === true) { - grunt.task.run(['shell:notes']); - } - return false; - } - } - } - } -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/qunit.js b/elgg_clean/bower_components/fuelux/grunt/config/qunit.js deleted file mode 100644 index 4127907e..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/qunit.js +++ /dev/null @@ -1,40 +0,0 @@ -module.exports = function (grunt) { - - return { - release: { - options: { - urls: grunt.config('allTestUrls'), - screenshot: true, - page: { - viewportSize: { - width: 1280, - height: 1024 - } - } - } - }, - globals: { - options: { - urls: ['http://localhost:' + '<%= connectTestServerOptionsPort %>' + '/test/browser-globals.html'] - } - }, - noMoment: { - options: { - urls: ['http://localhost:' + '<%= connectTestServerOptionsPort %>' + '/test/?no-moment=true'] - } - }, - source: { - options: { - urls: ['http://localhost:' + '<%= connectTestServerOptionsPort %>' + '/test/'] - } - }, - dist: { - options: { - urls: ['http://localhost:' + '<%= connectTestServerOptionsPort %>' + '/test/?testdist=true', - 'http://localhost:' + '<%= connectTestServerOptionsPort %>' + '/test/commonjs.html' - ] - } - } - } - -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/replace.js b/elgg_clean/bower_components/fuelux/grunt/config/replace.js deleted file mode 100644 index 665e1db2..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/replace.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = function (grunt) { - - function getPackage() { - return grunt.file.readJSON('./package.json'); - } - - return { - readme: { - src: ['DETAILS.md', 'README.md'], - overwrite: true, - replacements: [{ - from: /fuelux\/\d{1,2}\.\d{1,2}\.\d{1,2}/g, - to: 'fuelux/' + getPackage().version - }] - }, - packageJs: { - src: ['package.js'], - overwrite: true, - replacements: [{ - from: /version\:\ \'\d{1,2}\.\d{1,2}\.\d{1,2}\'/g, - to: "version: '" + getPackage().version + "'" - }] - } - } - -}; diff --git a/elgg_clean/bower_components/fuelux/grunt/config/saucelabs-qunit.js b/elgg_clean/bower_components/fuelux/grunt/config/saucelabs-qunit.js deleted file mode 100644 index fa290995..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/saucelabs-qunit.js +++ /dev/null @@ -1,48 +0,0 @@ -module.exports = function (grunt) { - function getPackage() { - return grunt.file.readJSON('./package.json'); - } - - return { - trickyBrowsers: { - options: { - username: '<%= sauceUser %>', - key: '<%= sauceKey %>', - tunnelTimeout: 45, - testInterval: 3000, - tags: ['<%= sauceUser %>' + '@' + process.env.TRAVIS_BRANCH || '<%= sauceUser %>' + '@local'], - browsers: grunt.file.readYAML('sauce_browsers_tricky.yml'), - build: process.env.TRAVIS_BUILD_NUMBER || getPackage().version, - testname: process.env.TRAVIS_JOB_ID || Math.floor((new Date()).getTime() / 1000 - 1230768000).toString(), - urls: ['http://localhost:<%= connect.testServer.options.port %>/test/?testdist=true'] - } - }, - defaultBrowsers: { - options: { - username: '<%= sauceUser %>', - key: '<%= sauceKey %>', - tunnelTimeout: 45, - testInterval: 3000, - tags: [getPackage().version, '<%= sauceUser %>' + '@' + process.env.TRAVIS_BRANCH || '<%= sauceUser %>@local'], - browsers: grunt.file.readYAML('sauce_browsers.yml'), - build: process.env.TRAVIS_BUILD_NUMBER || getPackage().version, - testname: process.env.TRAVIS_JOB_ID || getPackage().version + '-<%= grunt.template.today("dddd, mmmm dS, yyyy, h:MM:ss TT") %>', - urls: ['http://localhost:<%= connect.testServer.options.port %>/test/?testdist=true'], - maxPollRetries: 4, - throttled: 3, - maxRetries: 3 - } - }, - all: { - options: { - username: '<%= sauceUser %>', - key: '<%= sauceKey %>', - browsers: grunt.file.readYAML('sauce_browsers.yml'), - build: process.env.TRAVIS_BUILD_NUMBER || '<%= pkg.version %>', - testname: 'grunt-<%= grunt.template.today("dddd, mmmm dS, yyyy, h:MM:ss TT") %>', - urls: '<%= allTestUrls %>' - } - } - } - -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/shell.js b/elgg_clean/bower_components/fuelux/grunt/config/shell.js deleted file mode 100644 index 1622d28a..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/shell.js +++ /dev/null @@ -1,106 +0,0 @@ -module.exports = function (grunt) { - var semver = require('semver'); - var originalVersion = grunt.file.readJSON('./package.json').version; - - function getPackage() { - return grunt.file.readJSON('./package.json'); - } - - function getGithubToken() { - return grunt.file.exists('./GITHUB_TOKEN.json') ? grunt.file.readJSON('./GITHUB_TOKEN.json').token : ''; - } - - return { - // Install with: gem install github_changelog_generator - notes: { - command: 'github_changelog_generator --no-author --between-tags ' + originalVersion + ',' + getPackage().version + ' --compare-link -t ' + getGithubToken() - }, - checkoutRemoteReleaseBranch: { - // this makes a local branch based on the prior prompt, such as release_{TIMESTAMP} - // then update tags from remote in order to prevent duplicate tags - command: function() { - grunt.config('release.localBranch', 'release_' + new Date().getTime() ); - var command = [ - 'git fetch --tags ' + grunt.config('release.remoteRepository'), - 'git fetch ' + grunt.config('release.remoteRepository'), - 'git checkout -b ' + grunt.config('release.localBranch') + ' ' + - grunt.config('release.remoteRepository') + '/' + grunt.config('release.remoteBaseBranch') - ].join(' && '); - grunt.log.write('Checking out new local branch based on ' + grunt.config('release.remoteBaseBranch') + ': ' + command); - return command; - } - }, - addReleaseFiles: { - command: function() { - var command = 'git add ' + grunt.config('release.files').join(' '); - grunt.log.write('Staging: ' + command); - return command; - } - }, - commit: { - command: function() { - var command = 'git commit -m "release ' + getPackage().version + '"'; - grunt.log.write('Committing: ' + command); - return command; - } - }, - tag: { - command: function() { - var command = 'git tag -a "' + getPackage().version + '" -m "' + getPackage().version + '"'; - grunt.log.write('Tagging: ' + command); - return command; - } - }, - pushLocalBranchToUpstream: { - command: function() { - var command = 'git push ' + grunt.config('release.remoteRepository') + ' ' + - grunt.config('release.localBranch') + ':' + grunt.config('release.remoteDestinationBranch'); - grunt.log.write('Pushing: ' + command); - return command; - } - }, - pushTagToUpstream: { - command: function() { - var command = 'git push ' + grunt.config('release.remoteRepository') + ' ' + getPackage().version; - grunt.log.write('Publishing tag: ' + command); - return command; - } - }, - pushLocalBranchToUpstreamMaster: { - command: function() { - var command = 'git push ' + grunt.config('release.remoteRepository') + ' ' + - grunt.config('release.localBranch') + ':master'; - grunt.log.write(command); - return command; - } - }, - uploadToCDN: { - command: function() { - - function createUploadCommand(version) { - return ['mv dist ' + version, - 'scp -i ~/.ssh/fuelcdn -r "' + version + '"/ ' + - '<%= cdnLoginFile.user %>' + '@' + '<%= cdnLoginFile.server %>' + ':' + '<%= cdnLoginFile.folder %>', - 'mv "' + version + '" dist', - 'echo "Done uploading files."'].join(' && '); - } - var command = [ - getPackage().version, - semver.major(getPackage().version) + '.' + semver.minor(getPackage().version), - semver.major(getPackage().version) - ].map(createUploadCommand).join(' && '); - grunt.log.write('Uploading: ' + command); - grunt.log.writeln(''); - return command; - } - }, - publishToNPM: { - command: function() { - var command = 'npm publish'; - grunt.log.write(command); - return command; - } - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/uglify.js b/elgg_clean/bower_components/fuelux/grunt/config/uglify.js deleted file mode 100644 index d5d34832..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/uglify.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = function (grunt) { - - return { - options: { - report: 'min' - }, - fuelux: { - options: { - banner: '<%= banner %>' - }, - src: 'dist/js/<%= pkg.name %>.js', - dest: 'dist/js/<%= pkg.name %>.min.js' - } - } - -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/usebanner.js b/elgg_clean/bower_components/fuelux/grunt/config/usebanner.js deleted file mode 100644 index 7df1450e..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/usebanner.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - dist: { - options: { - position: 'top', - banner: '<%= banner %>' - }, - files: { - src: ['dist/css/<%= pkg.name %>.css', - 'dist/css/<%= pkg.name %>.min.css' - ] - } - } -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/config/watch.js b/elgg_clean/bower_components/fuelux/grunt/config/watch.js deleted file mode 100644 index fe6f1ff0..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/config/watch.js +++ /dev/null @@ -1,84 +0,0 @@ -module.exports = { - full: { - files: ['Gruntfile.js', - 'fonts/**', - 'grunt/**', - 'js/**', - 'less/**', - 'test/**', - 'index.html', - 'dev.html' - ], - options: { - livereload: true - }, - tasks: ['jshint', - 'blanket_qunit:source', - 'qunit:noMoment', - 'qunit:globals', - 'dist', - 'qunit:dist', - 'htmllint' - ] - }, - source: { - files: ['Gruntfile.js', - 'fonts/**', - 'grunt/**', - 'js/**', - 'less/**', - 'test/**', - 'index.html', - 'dev.html' - ], - options: { - livereload: true - }, - tasks: ['jshint', - 'connect:testServer', - 'blanket_qunit:source', - 'qunit:noMoment', - 'qunit:globals', - 'htmllint' - ] - }, - less: { - files: ['fonts/**', - 'less/**'], - options: { - livereload: true - }, - tasks: ['distcss'] - }, - cssdev: { - files: ['Gruntfile.js', - 'grunt/**', - 'less/**', - 'index.html', - 'index-dev.html', - 'dev.html', - '!less/fuelux-no-namespace.less' - ], - options: { - livereload: true - }, - tasks: ['distcssdev'] - }, - dist: { - files: ['fonts/**', - 'grunt/**', - 'js/**', - 'less/**'], - options: { - livereload: true - }, - tasks: ['dist'] - }, - lite: { - files: [], - options: { - livereload: true - }, - tasks: [] - } -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/other/commonjs-reference-module.js b/elgg_clean/bower_components/fuelux/grunt/other/commonjs-reference-module.js deleted file mode 100644 index 65d4666a..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/other/commonjs-reference-module.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! - * Bootstrap Grunt task for the CommonJS module generation - * http://getbootstrap.com - * Copyright 2014-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -'use strict'; - -var fs = require('fs'); -var path = require('path'); - -var banner = '// This file has been created by the `commonjs` Grunt task.' + - ' You can require() this file in a CommonJS environment.\n' + - 'require(\'jquery\');\n' + - 'require(\'bootstrap\');\n\n'; - 'require(\'moment\');\n\n'; - -module.exports = function createBundledReferenceModule(grunt, files, destFile) { - var destDir = path.dirname(destFile); - var files = files || []; - - function srcPathToDestRequire(files) { - var requirePath = path.relative(destDir, files).replace(/\\/g, '/').replace(/\.js$/g, ''); - return 'require(\'' + requirePath + '\');'; - } - - var moduleOutputJs = banner + String(files.map(srcPathToDestRequire).join('\n')); - try { - fs.writeFileSync(destFile, moduleOutputJs); - } catch (err) { - grunt.fail.warn(err); - } - grunt.log.writeln('CommonJS Bundled Reference file created: ' + destFile.cyan); -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/tasks/build.js b/elgg_clean/bower_components/fuelux/grunt/tasks/build.js deleted file mode 100644 index 9a0710e8..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/tasks/build.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = function(grunt) { - - var commonJSBundledReferenceModule = require('../other/commonjs-reference-module.js'); - - /* ------------- - BUILD - ------------- */ - // JS distribution task - grunt.registerTask('distjs', 'concat, uglify', ['concat', 'uglify', 'jsbeautifier']); - - // CSS distribution task - grunt.registerTask('distcss', 'Compile LESS into CSS', ['less:dist', 'less:minify', 'usebanner']); - - // CSS distribution task (dev) - grunt.registerTask('distcssdev', 'Compile LESS into the dev CSS', [ 'less:dev']); - - // ZIP distribution task - grunt.registerTask('distzip', 'Compress and zip "dist"', ['copy:zipsrc', 'compress', 'clean:zipsrc']); - - // create dist/js/npm.js - grunt.registerTask('commonjs', 'Create CommonJS "bundled reference" module in `dist`', function () { - var files = grunt.config.get('concat.fuelux.src'); - var bundledReferenceFile = 'dist/js/npm.js'; - - // console.log(grunt.config.get('concat.fuelux.src')); - commonJSBundledReferenceModule(grunt, files, bundledReferenceFile); - }); - - // Full distribution task - grunt.registerTask('dist', 'Build "dist." Contributors: do not commit "dist."', - ['clean:dist', 'distcss', 'copy:fonts', 'distjs', 'commonjs', 'distzip']); - - -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/tasks/release.js b/elgg_clean/bower_components/fuelux/grunt/tasks/release.js deleted file mode 100644 index 8f258e0e..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/tasks/release.js +++ /dev/null @@ -1,78 +0,0 @@ -module.exports = function(grunt) { - var packageVersion = require('../../package.json').version; - - /* ------------- - RELEASE - ------------- */ - grunt.registerTask('notes', 'Run a ruby gem that will request from Github unreleased pull requests', ['shell:notes']); - - grunt.registerTask('updateRelease', '', function () { - packageVersion = require('../../package.json').version; - }); - - // Maintainers: Run prior to a release. Includes SauceLabs VM tests. - grunt.registerTask('release', 'Release a new version, push it and publish it', function() { - - // default variables for release task - var releaseDefaults = { - release: { - files: ['dist', 'README.md', 'DETAILS.md', 'bower.json', 'package.json'], - localBranch: 'release', - remoteBaseBranch: 'master', - remoteDestinationBranch: '3.x', - remoteRepository: 'upstream' - } - }; - - // add releaseDefaults - grunt.config.merge(releaseDefaults); - - if ( typeof grunt.config('sauceLoginFile') === 'undefined' ) { - grunt.log.write('The file SAUCE_API_KEY.yml is needed in order to run tests in SauceLabs.'['red'].bold + - ' Please contact another maintainer to obtain this file.'); - } - - if ( typeof grunt.config('cdnLoginFile') === 'undefined' ) { - grunt.log.write('The file FUEL_CDN.yml is needed in order to upload the release files to the CDN.'['red'].bold + - ' Please contact another maintainer to obtain this file.'); - } - - // update local variable to make sure build prompt is using temp branch's package version - grunt.task.run( - [ - 'prompt:createmilestone', - 'prompt:bumpmilestones', - 'prompt:closemilestone', - 'prompt:startrelease', - 'prompt:tempbranch', - 'shell:checkoutRemoteReleaseBranch', - 'updateRelease', - 'prompt:build', - 'dorelease' - ] - ); - }); - - grunt.registerTask('dorelease', '', function () { - - grunt.log.writeln(''); - - if (!grunt.option('no-tests')) { - grunt.task.run(['releasetest']); //If phantom timeouts happening because of long-running qunit tests, look into setting `resourceTimeout` in phantom: http://phantomjs.org/api/webpage/property/settings.html - // Delete any screenshots that may have happened if it got this far. This isn't foolproof - // because it relies on the phantomjs server/page timeout, which can take longer than this - // grunt task depending on how long saucelabs takes to run... - grunt.task.run('clean:screenshots'); - } - - grunt.config('banner', '<%= bannerRelease %>'); - - // Run dist again to grab the latest version numbers. Yeah, we're running it twice... ¯\_(ツ)_/¯ - grunt.task.run(['bump-only:' + grunt.config('release.buildSemVerType'), 'replace:readme', 'replace:packageJs', 'dist', - 'shell:addReleaseFiles', 'prompt:commit', 'prompt:tag', 'prompt:pushLocalBranchToUpstream', - 'prompt:pushTagToUpstream', 'prompt:uploadToCDN', 'prompt:pushLocalBranchToUpstreamMaster', 'shell:publishToNPM', 'prompt:generatelogs']); - }); - - - -}; diff --git a/elgg_clean/bower_components/fuelux/grunt/tasks/serve.js b/elgg_clean/bower_components/fuelux/grunt/tasks/serve.js deleted file mode 100644 index 314e20e7..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/tasks/serve.js +++ /dev/null @@ -1,72 +0,0 @@ -module.exports = function(grunt) { - - /* ------------- - SERVE - ------------- */ - // default serve task that runs tests and builds and tests dist by default. - grunt.registerTask('serve', 'Test, build, serve files. (~20s)', function () { - var tasks = ['test', 'servedist']; - grunt.task.run(tasks); - }); - - // serve task that runs tests and builds and tests dist by default (~20s). - grunt.registerTask('serveslow', 'Serve files. Run all tests. Does not build. (~20s)', function () { - var tasks = ['connect:server', 'test', 'watch:source']; - grunt.task.run(tasks); - }); - - //Fastest serve command for freely slinging code (no tests will run by default). - grunt.registerTask('servefast', 'Serve the files (no watch), --test to run minimal tests. (~0s)', function () { - grunt.task.run(['connect:server']); - - if (grunt.option('test')) { - grunt.task.run(['connect:testServer', 'qunit:source', 'watch:source']); - } else { - grunt.task.run(['watch:lite']); - } - }); - - // Fastest serve command when you're working on LESS - grunt.registerTask('serveless', 'Compile LESS and serve the files. pass --tests to run test. (~3s)', function () { - grunt.task.run(['distcss']); - - if (grunt.option('test')) { - // add qunit:source as a watch task for watch:less since they want tests - grunt.config.merge({ - watch: { - less: { - tasks: ['qunit:source'] - } - } - }); - grunt.task.run(['qunit:source']); - } - - grunt.task.run(['connect:server', 'watch:less']); - }); - - // Complies the less files into the -dev versions, does not overwrite the main css files. - grunt.registerTask('servedev', 'Serve the files with no "dist" build or tests. Optional --no-less to also disable compiling less into css.', function() { - if (! grunt.option('no-less') ) { - grunt.task.run(['distcssdev']); - } - grunt.task.run(['connect:server', 'watch:cssdev']); - }); - - // same as `grunt serve` but tests default to being off - grunt.registerTask('servedist', 'Compile and serve everything, pass --test to run tests. (~7s)', function () { - grunt.task.run(['dist']); - - //start up the servers here so we can run tests if appropriate - grunt.task.run(['connect:server']); - grunt.task.run(['connect:testServer']); - - if (grunt.option('test')) { - grunt.task.run(['browserify:commonjs','qunit:dist', 'watch:full']); - } else { - grunt.task.run(['watch:dist']); - } - }); - - -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/grunt/tasks/test.js b/elgg_clean/bower_components/fuelux/grunt/tasks/test.js deleted file mode 100644 index 6f3508c1..00000000 --- a/elgg_clean/bower_components/fuelux/grunt/tasks/test.js +++ /dev/null @@ -1,41 +0,0 @@ -module.exports = function(grunt) { - - /* ------------- - TESTS - ------------- */ - - // to be run prior to submitting a PR - grunt.registerTask('test', 'run jshint, qunit source w/ coverage, and validate HTML', - ['jshint', 'connect:testServer', 'blanket_qunit:source', 'qunit:noMoment', 'qunit:globals', 'htmllint']); - - //If qunit:source is working but qunit:full is breaking, check to see if the dist broke the code. This would be especially useful if we start mangling our code, but, is 99.99% unlikely right now - grunt.registerTask('validate-dist', 'run qunit:source, dist, and then qunit:full', - ['connect:testServer', 'qunit:source', 'dist', 'browserify:commonjs', 'qunit:dist']); - - // multiple jQuery versions, then run SauceLabs VMs - grunt.registerTask('releasetest', 'run jshint, build dist, all source tests, validation, and qunit on SauceLabs', - ['test', 'dist', 'browserify:commonjs', 'qunit:dist', 'saucelabs-qunit:defaultBrowsers']); - - // can be run locally instead of through TravisCI, but requires the Fuel UX Saucelabs API key file which is not public at this time. - grunt.registerTask('saucelabs', 'run jshint, and qunit on saucelabs', - ['connect:testServer', 'jshint', 'saucelabs-qunit:defaultBrowsers']); - - // can be run locally instead of through TravisCI, but requires the FuelUX Saucelabs API key file which is not public at this time. - grunt.registerTask('trickysauce', 'run tests, jshint, and qunit for "tricky browsers" (IE8-11)', - ['connect:testServer', 'jshint', 'saucelabs-qunit:trickyBrowsers']); - - // Travis CI task. This task no longer uses SauceLabs. Please run 'grunt saucelabs' manually. - grunt.registerTask('travisci', 'Tests to run when in Travis CI environment', - ['test', 'dist', 'browserify:commonjs', 'qunit:dist']); - - // if you've already accidentally added your files for commit, this will at least unstage them. If you haven't, this will wipe them out. - grunt.registerTask('resetdist', 'resets changes to dist to keep them from being checked in', function () { - //default resetdist to true... basically. - if (typeof grunt.option('resetdist') === "undefined" || grunt.option('resetdist')) { - var exec = require('child_process').exec; - exec('git reset HEAD dist/*'); - exec('git checkout -- dist/*'); - } - }); - -}; \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/js/all.js b/elgg_clean/bower_components/fuelux/js/all.js deleted file mode 100644 index 665b9e6d..00000000 --- a/elgg_clean/bower_components/fuelux/js/all.js +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Fuel UX All - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - * - * NOTE: This file works with AMD only. - */ - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(factory); - } else { - // OR print to the console that this file is AMD only, if possible - if(window && window.console && window.console.log){ - window.console.log('WARNING: The all.js file in the Fuel UX src directory is for use with AMD only.'); - } - } -}(function (require) { - - require('jquery'); - require('bootstrap'); - - require('fuelux/checkbox'); - require('fuelux/combobox'); - require('fuelux/datepicker'); - require('fuelux/dropdown-autoflip'); - require('fuelux/infinite-scroll'); - require('fuelux/loader'); - require('fuelux/pillbox'); - require('fuelux/placard'); - require('fuelux/radio'); - require('fuelux/repeater'); - require('fuelux/repeater-list'); - require('fuelux/repeater-thumbnail'); - require('fuelux/scheduler'); - require('fuelux/search'); - require('fuelux/spinbox'); - require('fuelux/selectlist'); - require('fuelux/picker'); - require('fuelux/tree'); - require('fuelux/wizard'); - -})); diff --git a/elgg_clean/bower_components/fuelux/js/checkbox.js b/elgg_clean/bower_components/fuelux/js/checkbox.js deleted file mode 100644 index 9023bbb1..00000000 --- a/elgg_clean/bower_components/fuelux/js/checkbox.js +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Fuel UX Checkbox - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.checkbox; - - // CHECKBOX CONSTRUCTOR AND PROTOTYPE - - var Checkbox = function (element, options) { - this.options = $.extend({}, $.fn.checkbox.defaults, options); - - if(element.tagName.toLowerCase() !== 'label') { - //console.log('initialize checkbox on the label that wraps the checkbox'); - return; - } - - // cache elements - this.$label = $(element); - this.$chk = this.$label.find('input[type="checkbox"]'); - this.$container = $(element).parent('.checkbox'); // the container div - - // determine if a toggle container is specified - var containerSelector = this.$chk.attr('data-toggle'); - this.$toggleContainer = $(containerSelector); - - // handle internal events - this.$chk.on('change', $.proxy(this.itemchecked, this)); - - // set default state - this.setInitialState(); - }; - - Checkbox.prototype = { - - constructor: Checkbox, - - setInitialState: function() { - var $chk = this.$chk; - var $lbl = this.$label; - - // get current state of input - var checked = $chk.prop('checked'); - var disabled = $chk.prop('disabled'); - - // sync label class with input state - this.setCheckedState($chk, checked); - this.setDisabledState($chk, disabled); - }, - - setCheckedState: function(element, checked) { - var $chk = element; - var $lbl = this.$label; - var $container = this.$container; - var $containerToggle = this.$toggleContainer; - - // set class on outer container too...to support highlighting - // TODO: verify inline checkboxes, also test with MCTheme - - if(checked) { - $chk.prop('checked', true); - $lbl.addClass('checked'); - //$container.addClass('checked'); - $containerToggle.removeClass('hide hidden'); - $lbl.trigger('checked.fu.checkbox'); - } - else { - $chk.prop('checked', false); - $lbl.removeClass('checked'); - //$container.removeClass('checked'); - $containerToggle.addClass('hidden'); - $lbl.trigger('unchecked.fu.checkbox'); - } - - $lbl.trigger('changed.fu.checkbox', checked); - }, - - setDisabledState: function(element, disabled) { - var $chk = element; - var $lbl = this.$label; - - if(disabled) { - this.$chk.prop('disabled', true); - $lbl.addClass('disabled'); - $lbl.trigger('disabled.fu.checkbox'); - } - else { - this.$chk.prop('disabled', false); - $lbl.removeClass('disabled'); - $lbl.trigger('enabled.fu.checkbox'); - } - }, - - itemchecked: function (evt) { - var $chk = $(evt.target); - var checked = $chk.prop('checked'); - - this.setCheckedState($chk, checked); - }, - - toggle: function () { - var checked = this.isChecked(); - - if(checked) { - this.uncheck(); - } - else { - this.check(); - } - }, - - check: function () { - this.setCheckedState(this.$chk, true); - }, - - uncheck: function () { - this.setCheckedState(this.$chk, false); - }, - - isChecked: function () { - var checked = this.$chk.prop('checked'); - return checked; - }, - - enable: function () { - this.setDisabledState(this.$chk, false); - }, - - disable: function () { - this.setDisabledState(this.$chk, true); - }, - - destroy: function () { - this.$label.remove(); - // remove any external bindings - // [none] - // empty elements to return to original markup - // [none] - return this.$label[0].outerHTML; - } - }; - - Checkbox.prototype.getValue = Checkbox.prototype.isChecked; - - // CHECKBOX PLUGIN DEFINITION - - $.fn.checkbox = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.checkbox'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.checkbox', (data = new Checkbox(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.checkbox.defaults = {}; - - $.fn.checkbox.Constructor = Checkbox; - - $.fn.checkbox.noConflict = function () { - $.fn.checkbox = old; - return this; - }; - - // DATA-API - - $(document).on('mouseover.fu.checkbox.data-api', '[data-initialize=checkbox]', function (e) { - var $control = $(e.target); - if (!$control.data('fu.checkbox')) { - $control.checkbox($control.data()); - } - }); - - // Must be domReady for AMD compatibility - $(function () { - $('[data-initialize=checkbox]').each(function () { - var $this = $(this); - if (!$this.data('fu.checkbox')) { - $this.checkbox($this.data()); - } - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/combobox.js b/elgg_clean/bower_components/fuelux/js/combobox.js deleted file mode 100644 index d866d9b6..00000000 --- a/elgg_clean/bower_components/fuelux/js/combobox.js +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Fuel UX Combobox - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.combobox; - - - // COMBOBOX CONSTRUCTOR AND PROTOTYPE - - var Combobox = function (element, options) { - this.$element = $(element); - this.options = $.extend({}, $.fn.combobox.defaults, options); - - this.$dropMenu = this.$element.find('.dropdown-menu'); - this.$input = this.$element.find('input'); - this.$button = this.$element.find('.btn'); - - this.$element.on('click.fu.combobox', 'a', $.proxy(this.itemclicked, this)); - this.$element.on('change.fu.combobox', 'input', $.proxy(this.inputchanged, this)); - this.$element.on('shown.bs.dropdown', $.proxy(this.menuShown, this)); - - // set default selection - this.setDefaultSelection(); - - // if dropdown is empty, disable it - var items = this.$dropMenu.children('li'); - if( items.length === 0) { - this.$button.addClass('disabled'); - } - - }; - - Combobox.prototype = { - - constructor: Combobox, - - destroy: function () { - this.$element.remove(); - // remove any external bindings - // [none] - - // set input value attrbute in markup - this.$element.find('input').each(function () { - $(this).attr('value', $(this).val()); - }); - - // empty elements to return to original markup - // [none] - - return this.$element[0].outerHTML; - }, - - doSelect: function ($item) { - if (typeof $item[0] !== 'undefined') { - this.$selectedItem = $item; - this.$input.val(this.$selectedItem.text().trim()); - } else { - this.$selectedItem = null; - } - }, - - menuShown: function () { - if (this.options.autoResizeMenu) { - this.resizeMenu(); - } - }, - - resizeMenu: function () { - var width = this.$element.outerWidth(); - this.$dropMenu.outerWidth(width); - }, - - selectedItem: function () { - var item = this.$selectedItem; - var data = {}; - - if (item) { - var txt = this.$selectedItem.text().trim(); - data = $.extend({ - text: txt - }, this.$selectedItem.data()); - } else { - data = { - text: this.$input.val() - }; - } - - return data; - }, - - selectByText: function (text) { - var $item = $([]); - this.$element.find('li').each(function () { - if ((this.textContent || this.innerText || $(this).text() || '').toLowerCase() === (text || '').toLowerCase()) { - $item = $(this); - return false; - } - }); - this.doSelect($item); - }, - - selectByValue: function (value) { - var selector = 'li[data-value="' + value + '"]'; - this.selectBySelector(selector); - }, - - selectByIndex: function (index) { - // zero-based index - var selector = 'li:eq(' + index + ')'; - this.selectBySelector(selector); - }, - - selectBySelector: function (selector) { - var $item = this.$element.find(selector); - this.doSelect($item); - }, - - setDefaultSelection: function () { - var selector = 'li[data-selected=true]:first'; - var item = this.$element.find(selector); - - if (item.length > 0) { - // select by data-attribute - this.selectBySelector(selector); - item.removeData('selected'); - item.removeAttr('data-selected'); - } - }, - - enable: function () { - this.$element.removeClass('disabled'); - this.$input.removeAttr('disabled'); - this.$button.removeClass('disabled'); - }, - - disable: function () { - this.$element.addClass('disabled'); - this.$input.attr('disabled', true); - this.$button.addClass('disabled'); - }, - - itemclicked: function (e) { - this.$selectedItem = $(e.target).parent(); - - // set input text and trigger input change event marked as synthetic - this.$input.val(this.$selectedItem.text().trim()).trigger('change', { - synthetic: true - }); - - // pass object including text and any data-attributes - // to onchange event - var data = this.selectedItem(); - - // trigger changed event - this.$element.trigger('changed.fu.combobox', data); - - e.preventDefault(); - - // return focus to control after selecting an option - this.$element.find('.dropdown-toggle').focus(); - }, - - inputchanged: function (e, extra) { - // skip processing for internally-generated synthetic event - // to avoid double processing - if (extra && extra.synthetic) return; - var val = $(e.target).val(); - this.selectByText(val); - - // find match based on input - // if no match, pass the input value - var data = this.selectedItem(); - if (data.text.length === 0) { - data = { - text: val - }; - } - - // trigger changed event - this.$element.trigger('changed.fu.combobox', data); - } - }; - - Combobox.prototype.getValue = Combobox.prototype.selectedItem; - - // COMBOBOX PLUGIN DEFINITION - - $.fn.combobox = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.combobox'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.combobox', (data = new Combobox(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.combobox.defaults = { - autoResizeMenu: true - }; - - $.fn.combobox.Constructor = Combobox; - - $.fn.combobox.noConflict = function () { - $.fn.combobox = old; - return this; - }; - - // DATA-API - - $(document).on('mousedown.fu.combobox.data-api', '[data-initialize=combobox]', function (e) { - var $control = $(e.target).closest('.combobox'); - if (!$control.data('fu.combobox')) { - $control.combobox($control.data()); - } - }); - - // Must be domReady for AMD compatibility - $(function () { - $('[data-initialize=combobox]').each(function () { - var $this = $(this); - if (!$this.data('fu.combobox')) { - $this.combobox($this.data()); - } - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/datepicker.js b/elgg_clean/bower_components/fuelux/js/datepicker.js deleted file mode 100644 index 021fede2..00000000 --- a/elgg_clean/bower_components/fuelux/js/datepicker.js +++ /dev/null @@ -1,802 +0,0 @@ -/* - * Fuel UX Datepicker - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery'), require('moment')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var INVALID_DATE = 'Invalid Date'; - var MOMENT_NOT_AVAILABLE = 'moment.js is not available so you cannot use this function'; - - var datepickerStack = []; - var moment = false; - var old = $.fn.datepicker; - var requestedMoment = false; - - var runStack = function () { - var i, l; - requestedMoment = true; - for (i = 0, l = datepickerStack.length; i < l; i++) { - datepickerStack[i].init.call(datepickerStack[i].scope); - } - datepickerStack = []; - }; - - //only load moment if it's there. otherwise we'll look for it in window.moment - if (typeof define === 'function' && define.amd) {//check if AMD is available - require(['moment'], function (amdMoment) { - moment = amdMoment; - runStack(); - }, function (err) { - var failedId = err.requireModules && err.requireModules[0]; - if (failedId === 'moment') { - runStack(); - } - }); - } else { - runStack(); - } - - // DATEPICKER CONSTRUCTOR AND PROTOTYPE - - var Datepicker = function (element, options) { - this.$element = $(element); - this.options = $.extend(true, {}, $.fn.datepicker.defaults, options); - - this.$calendar = this.$element.find('.datepicker-calendar'); - this.$days = this.$calendar.find('.datepicker-calendar-days'); - this.$header = this.$calendar.find('.datepicker-calendar-header'); - this.$headerTitle = this.$header.find('.title'); - this.$input = this.$element.find('input'); - this.$wheels = this.$element.find('.datepicker-wheels'); - this.$wheelsMonth = this.$element.find('.datepicker-wheels-month'); - this.$wheelsYear = this.$element.find('.datepicker-wheels-year'); - - this.artificialScrolling = false; - this.formatDate = this.options.formatDate || this.formatDate; - this.inputValue = null; - this.moment = false; - this.momentFormat = null; - this.parseDate = this.options.parseDate || this.parseDate; - this.preventBlurHide = false; - this.restricted = this.options.restricted || []; - this.restrictedParsed = []; - this.restrictedText = this.options.restrictedText; - this.sameYearOnly = this.options.sameYearOnly; - this.selectedDate = null; - this.yearRestriction = null; - - this.$calendar.find('.datepicker-today').on('click.fu.datepicker', $.proxy(this.todayClicked, this)); - this.$days.on('click.fu.datepicker', 'tr td button', $.proxy(this.dateClicked, this)); - this.$header.find('.next').on('click.fu.datepicker', $.proxy(this.next, this)); - this.$header.find('.prev').on('click.fu.datepicker', $.proxy(this.prev, this)); - this.$headerTitle.on('click.fu.datepicker', $.proxy(this.titleClicked, this)); - this.$input.on('change.fu.datepicker', $.proxy(this.inputChanged, this)); - this.$input.on('mousedown.fu.datepicker', $.proxy(this.showDropdown, this)); - this.$wheels.find('.datepicker-wheels-back').on('click.fu.datepicker', $.proxy(this.backClicked, this)); - this.$wheels.find('.datepicker-wheels-select').on('click.fu.datepicker', $.proxy(this.selectClicked, this)); - this.$wheelsMonth.on('click.fu.datepicker', 'ul button', $.proxy(this.monthClicked, this)); - this.$wheelsYear.on('click.fu.datepicker', 'ul button', $.proxy(this.yearClicked, this)); - this.$wheelsYear.find('ul').on('scroll.fu.datepicker', $.proxy(this.onYearScroll, this)); - - var init = function () { - if (this.checkForMomentJS()) { - moment = moment || window.moment;// need to pull in the global moment if they didn't do it via require - this.moment = true; - this.momentFormat = this.options.momentConfig.format; - this.setCulture(this.options.momentConfig.culture); - - // support moment with lang (< v2.8) or locale - moment.locale = moment.locale || moment.lang; - } - - this.setRestrictedDates(this.restricted); - if (!this.setDate(this.options.date)) { - this.$input.val(''); - this.inputValue = this.$input.val(); - } - - if (this.sameYearOnly) { - this.yearRestriction = (this.selectedDate) ? this.selectedDate.getFullYear() : new Date().getFullYear(); - } - }; - - if (requestedMoment) { - init.call(this); - } else { - datepickerStack.push({ - init: init, - scope: this - }); - } - }; - - Datepicker.prototype = { - - constructor: Datepicker, - - backClicked: function () { - this.changeView('calendar'); - }, - - changeView: function (view, date) { - if (view === 'wheels') { - this.$calendar.hide().attr('aria-hidden', 'true'); - this.$wheels.show().removeAttr('aria-hidden', ''); - if (date) { - this.renderWheel(date); - } - - } else { - this.$wheels.hide().attr('aria-hidden', 'true'); - this.$calendar.show().removeAttr('aria-hidden', ''); - if (date) { - this.renderMonth(date); - } - - } - }, - - checkForMomentJS: function () { - if ( - ($.isFunction(window.moment) || (typeof moment !== 'undefined' && $.isFunction(moment))) && - $.isPlainObject(this.options.momentConfig) && - (typeof this.options.momentConfig.culture === 'string' && typeof this.options.momentConfig.format === 'string') - ) { - return true; - } else { - return false; - } - }, - - dateClicked: function (e) { - var $td = $(e.currentTarget).parents('td:first'); - var date; - - if ($td.hasClass('restricted')) { - return; - } - - this.$days.find('td.selected').removeClass('selected'); - $td.addClass('selected'); - - date = new Date($td.attr('data-year'), $td.attr('data-month'), $td.attr('data-date')); - this.selectedDate = date; - this.$input.val(this.formatDate(date)); - this.inputValue = this.$input.val(); - this.hideDropdown(); - this.$input.focus(); - this.$element.trigger('dateClicked.fu.datepicker', date); - }, - - destroy: function () { - this.$element.remove(); - // any external bindings - // [none] - - // empty elements to return to original markup - this.$days.find('tbody').empty(); - this.$wheelsYear.find('ul').empty(); - - return this.$element[0].outerHTML; - }, - - disable: function () { - this.$element.addClass('disabled'); - this.$element.find('input, button').attr('disabled', 'disabled'); - this.$element.find('.input-group-btn').removeClass('open'); - }, - - enable: function () { - this.$element.removeClass('disabled'); - this.$element.find('input, button').removeAttr('disabled'); - }, - - formatDate: function (date) { - var padTwo = function (value) { - var s = '0' + value; - return s.substr(s.length - 2); - }; - - if (this.moment) { - return moment(date).format(this.momentFormat); - } else { - return padTwo(date.getMonth() + 1) + '/' + padTwo(date.getDate()) + '/' + date.getFullYear(); - } - }, - - getCulture: function () { - if (this.moment) { - return moment.locale(); - } else { - throw MOMENT_NOT_AVAILABLE; - } - }, - - getDate: function () { - return (!this.selectedDate) ? new Date(NaN) : this.selectedDate; - }, - - getFormat: function () { - if (this.moment) { - return this.momentFormat; - } else { - throw MOMENT_NOT_AVAILABLE; - } - }, - - getFormattedDate: function () { - return (!this.selectedDate) ? INVALID_DATE : this.formatDate(this.selectedDate); - }, - - getRestrictedDates: function () { - return this.restricted; - }, - - inputChanged: function () { - var inputVal = this.$input.val(); - var date; - if (inputVal !== this.inputValue) { - date = this.setDate(inputVal); - if (date === null) { - this.$element.trigger('inputParsingFailed.fu.datepicker', inputVal); - } else if (date === false) { - this.$element.trigger('inputRestrictedDate.fu.datepicker', date); - } else { - this.$element.trigger('changed.fu.datepicker', date); - } - - } - }, - - showDropdown: function (e) { - if (!this.$input.is(':focus')){ - this.$element.find('.input-group-btn').addClass('open'); - } - }, - - hideDropdown: function () { - this.$element.find('.input-group-btn').removeClass('open'); - }, - - isInvalidDate: function (date) { - var dateString = date.toString(); - if (dateString === INVALID_DATE || dateString === 'NaN') { - return true; - } - - return false; - }, - - isRestricted: function (date, month, year) { - var restricted = this.restrictedParsed; - var i, from, l, to; - - if (this.sameYearOnly && this.yearRestriction !== null && year !== this.yearRestriction) { - return true; - } - - for (i = 0, l = restricted.length; i < l; i++) { - from = restricted[i].from; - to = restricted[i].to; - if ( - (year > from.year || (year === from.year && month > from.month) || (year === from.year && month === from.month && date >= from.date)) && - (year < to.year || (year === to.year && month < to.month) || (year === to.year && month === to.month && date <= to.date)) - ) { - return true; - } - - } - - return false; - }, - - monthClicked: function (e) { - this.$wheelsMonth.find('.selected').removeClass('selected'); - $(e.currentTarget).parent().addClass('selected'); - }, - - next: function () { - var month = this.$headerTitle.attr('data-month'); - var year = this.$headerTitle.attr('data-year'); - month++; - if (month > 11) { - if (this.sameYearOnly) { - return; - } - - month = 0; - year++; - } - - this.renderMonth(new Date(year, month, 1)); - }, - - onYearScroll: function (e) { - if (this.artificialScrolling) { - return; - } - - var $yearUl = $(e.currentTarget); - var height = ($yearUl.css('box-sizing') === 'border-box') ? $yearUl.outerHeight() : $yearUl.height(); - var scrollHeight = $yearUl.get(0).scrollHeight; - var scrollTop = $yearUl.scrollTop(); - var bottomPercentage = (height / (scrollHeight - scrollTop)) * 100; - var topPercentage = (scrollTop / scrollHeight) * 100; - var i, start; - - if (topPercentage < 5) { - start = parseInt($yearUl.find('li:first').attr('data-year'), 10); - for (i = (start - 1); i > (start - 11); i--) { - $yearUl.prepend('<li data-year="' + i + '"><button type="button">' + i + '</button></li>'); - } - this.artificialScrolling = true; - $yearUl.scrollTop(($yearUl.get(0).scrollHeight - scrollHeight) + scrollTop); - this.artificialScrolling = false; - } else if (bottomPercentage > 90) { - start = parseInt($yearUl.find('li:last').attr('data-year'), 10); - for (i = (start + 1); i < (start + 11); i++) { - $yearUl.append('<li data-year="' + i + '"><button type="button">' + i + '</button></li>'); - } - } - }, - - //some code ripped from http://stackoverflow.com/questions/2182246/javascript-dates-in-ie-nan-firefox-chrome-ok - parseDate: function (date) { - var self = this; - var BAD_DATE = new Date(NaN); - var dt, isoExp, momentParse, momentParseWithFormat, tryMomentParseAll, month, parts, use; - - if (date) { - if (this.moment) {//if we have moment, use that to parse the dates - momentParseWithFormat = function (d) { - var md = moment(d, self.momentFormat); - return (true === md.isValid()) ? md.toDate() : BAD_DATE; - }; - momentParse = function (d) { - var md = moment(new Date(d)); - return (true === md.isValid()) ? md.toDate() : BAD_DATE; - }; - - tryMomentParseAll = function (d, parseFunc1, parseFunc2) { - var pd = parseFunc1(d); - if (!self.isInvalidDate(pd)) { - return pd; - } - - pd = parseFunc2(pd); - if (!self.isInvalidDate(pd)) { - return pd; - } - - return BAD_DATE; - }; - - if ('string' === typeof (date)) { - // Attempts to parse date strings using this.momentFormat, falling back on newing a date - return tryMomentParseAll(date, momentParseWithFormat, momentParse); - } else { - // Attempts to parse date by newing a date object directly, falling back on parsing using this.momentFormat - return tryMomentParseAll(date, momentParse, momentParseWithFormat); - } - - } else {//if moment isn't present, use previous date parsing strategy - if (typeof (date) === 'string') { - dt = new Date(Date.parse(date)); - if (!this.isInvalidDate(dt)) { - return dt; - } else { - date = date.split('T')[0]; - isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/; - parts = isoExp.exec(date); - if (parts) { - month = parseInt(parts[2], 10); - dt = new Date(parts[1], month - 1, parts[3]); - if (month === (dt.getMonth() + 1)) { - return dt; - } - - } - - } - - } else { - dt = new Date(date); - if (!this.isInvalidDate(dt)) { - return dt; - } - - } - - } - - } - - return new Date(NaN); - }, - - prev: function () { - var month = this.$headerTitle.attr('data-month'); - var year = this.$headerTitle.attr('data-year'); - month--; - if (month < 0) { - if (this.sameYearOnly) { - return; - } - - month = 11; - year--; - } - - this.renderMonth(new Date(year, month, 1)); - }, - - renderMonth: function (date) { - date = date || new Date(); - - var firstDay = new Date(date.getFullYear(), date.getMonth(), 1).getDay(); - var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(); - var lastMonthDate = new Date(date.getFullYear(), date.getMonth(), 0).getDate(); - var $month = this.$headerTitle.find('.month'); - var month = date.getMonth(); - var now = new Date(); - var nowDate = now.getDate(); - var nowMonth = now.getMonth(); - var nowYear = now.getFullYear(); - var selected = this.selectedDate; - var $tbody = this.$days.find('tbody'); - var year = date.getFullYear(); - var curDate, curMonth, curYear, i, j, rows, stage, previousStage, lastStage, $td, $tr; - - if (selected) { - selected = { - date: selected.getDate(), - month: selected.getMonth(), - year: selected.getFullYear() - }; - } - - $month.find('.current').removeClass('current'); - $month.find('span[data-month="' + month + '"]').addClass('current'); - this.$headerTitle.find('.year').text(year); - this.$headerTitle.attr({ - 'data-month': month, - 'data-year': year - }); - - - $tbody.empty(); - if (firstDay !== 0) { - curDate = lastMonthDate - firstDay + 1; - stage = -1; - } else { - curDate = 1; - stage = 0; - } - - rows = (lastDate <= (35 - firstDay)) ? 5 : 6; - for (i = 0; i < rows; i++) { - $tr = $('<tr></tr>'); - for (j = 0; j < 7; j++) { - $td = $('<td></td>'); - if (stage === -1) { - $td.addClass('last-month'); - if (previousStage !== stage) { - $td.addClass('first'); - } - } else if (stage === 1) { - $td.addClass('next-month'); - if (previousStage !== stage) { - $td.addClass('first'); - } - } - - curMonth = month + stage; - curYear = year; - if (curMonth < 0) { - curMonth = 11; - curYear--; - } else if (curMonth > 11) { - curMonth = 0; - curYear++; - } - - $td.attr({ - 'data-date': curDate, - 'data-month': curMonth, - 'data-year': curYear - }); - if (curYear === nowYear && curMonth === nowMonth && curDate === nowDate) { - $td.addClass('current-day'); - } else if (curYear < nowYear || (curYear === nowYear && curMonth < nowMonth) || - (curYear === nowYear && curMonth === nowMonth && curDate < nowDate)) { - $td.addClass('past'); - if (!this.options.allowPastDates) { - $td.addClass('restricted').attr('title', this.restrictedText); - } - - } - - if (this.isRestricted(curDate, curMonth, curYear)) { - $td.addClass('restricted').attr('title', this.restrictedText); - } - - if (selected && curYear === selected.year && curMonth === selected.month && curDate === selected.date) { - $td.addClass('selected'); - } - - if ($td.hasClass('restricted')) { - $td.html('<span><b class="datepicker-date">' + curDate + '</b></span>'); - } else { - $td.html('<span><button type="button" class="datepicker-date">' + curDate + '</button></span>'); - } - - curDate++; - lastStage = previousStage; - previousStage = stage; - if (stage === -1 && curDate > lastMonthDate) { - curDate = 1; - stage = 0; - if (lastStage !== stage) { - $td.addClass('last'); - } - } else if (stage === 0 && curDate > lastDate) { - curDate = 1; - stage = 1; - if (lastStage !== stage) { - $td.addClass('last'); - } - } - if (i === (rows - 1) && j === 6) { - $td.addClass('last'); - } - - $tr.append($td); - } - $tbody.append($tr); - } - }, - - renderWheel: function (date) { - var month = date.getMonth(); - var $monthUl = this.$wheelsMonth.find('ul'); - var year = date.getFullYear(); - var $yearUl = this.$wheelsYear.find('ul'); - var i, $monthSelected, $yearSelected; - - if (this.sameYearOnly) { - this.$wheelsMonth.addClass('full'); - this.$wheelsYear.addClass('hidden'); - } else { - this.$wheelsMonth.removeClass('full'); - this.$wheelsYear.removeClass('hide hidden'); // .hide is deprecated - } - - $monthUl.find('.selected').removeClass('selected'); - $monthSelected = $monthUl.find('li[data-month="' + month + '"]'); - $monthSelected.addClass('selected'); - $monthUl.scrollTop($monthUl.scrollTop() + ($monthSelected.position().top - $monthUl.outerHeight() / 2 - $monthSelected.outerHeight(true) / 2)); - - $yearUl.empty(); - for (i = (year - 10); i < (year + 11); i++) { - $yearUl.append('<li data-year="' + i + '"><button type="button">' + i + '</button></li>'); - } - $yearSelected = $yearUl.find('li[data-year="' + year + '"]'); - $yearSelected.addClass('selected'); - this.artificialScrolling = true; - $yearUl.scrollTop($yearUl.scrollTop() + ($yearSelected.position().top - $yearUl.outerHeight() / 2 - $yearSelected.outerHeight(true) / 2)); - this.artificialScrolling = false; - $monthSelected.find('button').focus(); - }, - - selectClicked: function () { - var month = this.$wheelsMonth.find('.selected').attr('data-month'); - var year = this.$wheelsYear.find('.selected').attr('data-year'); - this.changeView('calendar', new Date(year, month, 1)); - }, - - setCulture: function (cultureCode) { - if (!cultureCode) { - return false; - } - - if (this.moment) { - moment.locale(cultureCode); - } else { - throw MOMENT_NOT_AVAILABLE; - } - }, - - setDate: function (date) { - var parsed = this.parseDate(date); - if (!this.isInvalidDate(parsed)) { - if (!this.isRestricted(parsed.getDate(), parsed.getMonth(), parsed.getFullYear())) { - this.selectedDate = parsed; - this.renderMonth(parsed); - this.$input.val(this.formatDate(parsed)); - } else { - this.selectedDate = false; - this.renderMonth(); - } - - } else { - this.selectedDate = null; - this.renderMonth(); - } - - this.inputValue = this.$input.val(); - return this.selectedDate; - }, - - setFormat: function (format) { - if (!format) { - return false; - } - - if (this.moment) { - this.momentFormat = format; - } else { - throw MOMENT_NOT_AVAILABLE; - } - }, - - setRestrictedDates: function (restricted) { - var parsed = []; - var self = this; - var i, l; - - var parseItem = function (val) { - if (val === -Infinity) { - return { - date: -Infinity, - month: -Infinity, - year: -Infinity - }; - } else if (val === Infinity) { - return { - date: Infinity, - month: Infinity, - year: Infinity - }; - } else { - val = self.parseDate(val); - return { - date: val.getDate(), - month: val.getMonth(), - year: val.getFullYear() - }; - } - }; - - this.restricted = restricted; - for (i = 0, l = restricted.length; i < l; i++) { - parsed.push({ - from: parseItem(restricted[i].from), - to: parseItem(restricted[i].to) - }); - } - this.restrictedParsed = parsed; - }, - - titleClicked: function (e) { - this.changeView('wheels', new Date(this.$headerTitle.attr('data-year'), this.$headerTitle.attr('data-month'), 1)); - }, - - todayClicked: function (e) { - var date = new Date(); - - if ((date.getMonth() + '') !== this.$headerTitle.attr('data-month') || (date.getFullYear() + '') !== this.$headerTitle.attr('data-year')) { - this.renderMonth(date); - } - }, - - yearClicked: function (e) { - this.$wheelsYear.find('.selected').removeClass('selected'); - $(e.currentTarget).parent().addClass('selected'); - } - }; - //for control library consistency - Datepicker.prototype.getValue = Datepicker.prototype.getDate; - - // DATEPICKER PLUGIN DEFINITION - - $.fn.datepicker = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.datepicker'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.datepicker', (data = new Datepicker(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.datepicker.defaults = { - allowPastDates: false, - date: new Date(), - formatDate: null, - momentConfig: { - culture: 'en', - format: 'L'// more formats can be found here http://momentjs.com/docs/#/customization/long-date-formats/. - }, - parseDate: null, - restricted: [],//accepts an array of objects formatted as so: { from: {{date}}, to: {{date}} } (ex: [ { from: new Date('12/11/2014'), to: new Date('03/31/2015') } ]) - restrictedText: 'Restricted', - sameYearOnly: false - }; - - $.fn.datepicker.Constructor = Datepicker; - - $.fn.datepicker.noConflict = function () { - $.fn.datepicker = old; - return this; - }; - - // DATA-API - - $(document).on('mousedown.fu.datepicker.data-api', '[data-initialize=datepicker]', function (e) { - var $control = $(e.target).closest('.datepicker'); - if (!$control.data('datepicker')) { - $control.datepicker($control.data()); - } - }); - - //used to prevent the dropdown from closing when clicking within it's bounds - $(document).on('click.fu.datepicker.data-api', '.datepicker .dropdown-menu', function (e) { - var $target = $(e.target); - if (!$target.is('.datepicker-date') || $target.closest('.restricted').length) { - e.stopPropagation(); - } - }); - - //used to prevent the dropdown from closing when clicking on the input - $(document).on('click.fu.datepicker.data-api', '.datepicker input', function (e) { - e.stopPropagation(); - }); - - $(function () { - $('[data-initialize=datepicker]').each(function () { - var $this = $(this); - if ($this.data('datepicker')) { - return; - } - - $this.datepicker($this.data()); - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/dropdown-autoflip.js b/elgg_clean/bower_components/fuelux/js/dropdown-autoflip.js deleted file mode 100644 index 82ae2d4e..00000000 --- a/elgg_clean/bower_components/fuelux/js/dropdown-autoflip.js +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Fuel UX Dropdown Auto Flip - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - $(document.body).on('click.fu.dropdown-autoflip', '[data-toggle=dropdown][data-flip]', function (event) { - if ($(this).data().flip === "auto") { - // have the drop down decide where to place itself - _autoFlip($(this).next('.dropdown-menu')); - } - }); - - // For pillbox suggestions dropdown - $(document.body).on('suggested.fu.pillbox', function (event, element) { - _autoFlip($(element)); - $(element).parent().addClass('open'); - }); - - function _autoFlip(menu) { - // hide while the browser thinks - $(menu).css({ - visibility: "hidden" - }); - - // decide where to put menu - if (dropUpCheck(menu)) { - menu.parent().addClass("dropup"); - } else { - menu.parent().removeClass("dropup"); - } - - // show again - $(menu).css({ - visibility: "visible" - }); - } - - function dropUpCheck(element) { - // caching container - var $container = _getContainer(element); - - // building object with measurementsances for later use - var measurements = {}; - measurements.parentHeight = element.parent().outerHeight(); - measurements.parentOffsetTop = element.parent().offset().top; - measurements.dropdownHeight = element.outerHeight(); - measurements.containerHeight = $container.overflowElement.outerHeight(); - - // this needs to be different if the window is the container or another element is - measurements.containerOffsetTop = (!!$container.isWindow) ? $container.overflowElement.scrollTop() : $container.overflowElement.offset().top; - - // doing the calculations - measurements.fromTop = measurements.parentOffsetTop - measurements.containerOffsetTop; - measurements.fromBottom = measurements.containerHeight - measurements.parentHeight - (measurements.parentOffsetTop - measurements.containerOffsetTop); - - // actual determination of where to put menu - // false = drop down - // true = drop up - if (measurements.dropdownHeight < measurements.fromBottom) { - return false; - } else if (measurements.dropdownHeight < measurements.fromTop) { - return true; - } else if (measurements.dropdownHeight >= measurements.fromTop && measurements.dropdownHeight >= measurements.fromBottom) { - // decide which one is bigger and put it there - if (measurements.fromTop >= measurements.fromBottom) { - return true; - } else { - return false; - } - - } - - } - - function _getContainer(element) { - var containerElement, isWindow; - if (element.attr('data-target')) { - containerElement = element.attr('data-target'); - isWindow = false; - } else { - containerElement = window; - isWindow = true; - } - - $.each(element.parents(), function (index, value) { - if ($(value).css('overflow') !== 'visible') { - containerElement = value; - isWindow = false; - return false; - } - }); - - return { - overflowElement: $(containerElement), - isWindow: isWindow - }; - } - - // register empty plugin - $.fn.dropdownautoflip = function () { - /* empty */ - }; - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/infinite-scroll.js b/elgg_clean/bower_components/fuelux/js/infinite-scroll.js deleted file mode 100644 index 59f93222..00000000 --- a/elgg_clean/bower_components/fuelux/js/infinite-scroll.js +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Fuel UX Infinite Scroll - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery', 'fuelux/loader'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.infinitescroll; - - // INFINITE SCROLL CONSTRUCTOR AND PROTOTYPE - - var InfiniteScroll = function (element, options) { - this.$element = $(element); - this.$element.addClass('infinitescroll'); - this.options = $.extend({}, $.fn.infinitescroll.defaults, options); - - this.curScrollTop = this.$element.scrollTop(); - this.curPercentage = this.getPercentage(); - this.fetchingData = false; - - this.$element.on('scroll.fu.infinitescroll', $.proxy(this.onScroll, this)); - this.onScroll(); - }; - - InfiniteScroll.prototype = { - - constructor: InfiniteScroll, - - destroy: function () { - this.$element.remove(); - // any external bindings - // [none] - - // empty elements to return to original markup - this.$element.empty(); - - return this.$element[0].outerHTML; - }, - - disable: function () { - this.$element.off('scroll.fu.infinitescroll'); - }, - - enable: function () { - this.$element.on('scroll.fu.infinitescroll', $.proxy(this.onScroll, this)); - }, - - end: function (content) { - var end = $('<div class="infinitescroll-end"></div>'); - if (content) { - end.append(content); - } else { - end.append('---------'); - } - - this.$element.append(end); - this.disable(); - }, - - getPercentage: function () { - var height = (this.$element.css('box-sizing') === 'border-box') ? this.$element.outerHeight() : this.$element.height(); - var scrollHeight = this.$element.get(0).scrollHeight; - return (scrollHeight > height) ? ((height / (scrollHeight - this.curScrollTop)) * 100) : 0; - }, - - fetchData: function (force) { - var load = $('<div class="infinitescroll-load"></div>'); - var self = this; - var moreBtn; - - var fetch = function () { - var helpers = { - percentage: self.curPercentage, - scrollTop: self.curScrollTop - }; - var $loader = $('<div class="loader"></div>'); - load.append($loader); - $loader.loader(); - if (self.options.dataSource) { - self.options.dataSource(helpers, function (resp) { - var end; - load.remove(); - if (resp.content) { - self.$element.append(resp.content); - } - - if (resp.end) { - end = (resp.end !== true) ? resp.end : undefined; - self.end(end); - } - - self.fetchingData = false; - }); - } - }; - - this.fetchingData = true; - this.$element.append(load); - if (this.options.hybrid && force !== true) { - moreBtn = $('<button type="button" class="btn btn-primary"></button>'); - if (typeof this.options.hybrid === 'object') { - moreBtn.append(this.options.hybrid.label); - } else { - moreBtn.append('<span class="glyphicon glyphicon-repeat"></span>'); - } - - moreBtn.on('click.fu.infinitescroll', function () { - moreBtn.remove(); - fetch(); - }); - load.append(moreBtn); - } else { - fetch(); - } - }, - - onScroll: function (e) { - this.curScrollTop = this.$element.scrollTop(); - this.curPercentage = this.getPercentage(); - if (!this.fetchingData && this.curPercentage >= this.options.percentage) { - this.fetchData(); - } - } - }; - - // INFINITE SCROLL PLUGIN DEFINITION - - $.fn.infinitescroll = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.infinitescroll'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.infinitescroll', (data = new InfiniteScroll(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.infinitescroll.defaults = { - dataSource: null, - hybrid: false,//can be true or an object with structure: { 'label': (markup or jQuery obj) } - percentage: 95//percentage scrolled to the bottom before more is loaded - }; - - $.fn.infinitescroll.Constructor = InfiniteScroll; - - $.fn.infinitescroll.noConflict = function () { - $.fn.infinitescroll = old; - return this; - }; - - // NO DATA-API DUE TO NEED OF DATA-SOURCE - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/loader.js b/elgg_clean/bower_components/fuelux/js/loader.js deleted file mode 100644 index fd55eb0c..00000000 --- a/elgg_clean/bower_components/fuelux/js/loader.js +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Fuel UX Loader - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.loader; - - // LOADER CONSTRUCTOR AND PROTOTYPE - - var Loader = function (element, options) { - this.$element = $(element); - this.options = $.extend({}, $.fn.loader.defaults, options); - - this.begin = (this.$element.is('[data-begin]')) ? parseInt(this.$element.attr('data-begin'), 10) : 1; - this.delay = (this.$element.is('[data-delay]')) ? parseFloat(this.$element.attr('data-delay')) : 150; - this.end = (this.$element.is('[data-end]')) ? parseInt(this.$element.attr('data-end'), 10) : 8; - this.frame = (this.$element.is('[data-frame]')) ? parseInt(this.$element.attr('data-frame'), 10) : this.begin; - this.isIElt9 = false; - this.timeout = {}; - - var ieVer = this.msieVersion(); - if (ieVer !== false && ieVer < 9) { - this.$element.addClass('iefix'); - this.isIElt9 = true; - } - - this.$element.attr('data-frame', this.frame + ''); - this.play(); - }; - - Loader.prototype = { - - constructor: Loader, - - destroy: function () { - this.pause(); - - this.$element.remove(); - // any external bindings - // [none] - // empty elements to return to original markup - // [none] - // returns string of markup - return this.$element[0].outerHTML; - }, - - ieRepaint: function () { - if (this.isIElt9) { - this.$element.addClass('iefix_repaint').removeClass('iefix_repaint'); - } - }, - - msieVersion: function () { - var ua = window.navigator.userAgent; - var msie = ua.indexOf('MSIE '); - if (msie > 0) { - return parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)), 10); - } else { - return false; - } - }, - - next: function () { - this.frame++; - if (this.frame > this.end) { - this.frame = this.begin; - } - - this.$element.attr('data-frame', this.frame + ''); - this.ieRepaint(); - }, - - pause: function () { - clearTimeout(this.timeout); - }, - - play: function () { - var self = this; - clearTimeout(this.timeout); - this.timeout = setTimeout(function () { - self.next(); - self.play(); - }, this.delay); - }, - - previous: function () { - this.frame--; - if (this.frame < this.begin) { - this.frame = this.end; - } - - this.$element.attr('data-frame', this.frame + ''); - this.ieRepaint(); - }, - - reset: function () { - this.frame = this.begin; - this.$element.attr('data-frame', this.frame + ''); - this.ieRepaint(); - } - }; - - // LOADER PLUGIN DEFINITION - - $.fn.loader = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.loader'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.loader', (data = new Loader(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.loader.defaults = {}; - - $.fn.loader.Constructor = Loader; - - $.fn.loader.noConflict = function () { - $.fn.loader = old; - return this; - }; - - // INIT LOADER ON DOMCONTENTLOADED - - $(function () { - $('[data-initialize=loader]').each(function () { - var $this = $(this); - if (!$this.data('fu.loader')) { - $this.loader($this.data()); - } - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/picker.js b/elgg_clean/bower_components/fuelux/js/picker.js deleted file mode 100644 index e3274ef5..00000000 --- a/elgg_clean/bower_components/fuelux/js/picker.js +++ /dev/null @@ -1,293 +0,0 @@ -/* - * Fuel UX Picker - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.picker; - - // PLACARD CONSTRUCTOR AND PROTOTYPE - - var Picker = function Picker(element, options) { - var self = this; - this.$element = $(element); - this.options = $.extend({}, $.fn.picker.defaults, options); - - this.$accept = this.$element.find('.picker-accept'); - this.$cancel = this.$element.find('.picker-cancel'); - this.$trigger = this.$element.find('.picker-trigger'); - this.$footer = this.$element.find('.picker-footer'); - this.$header = this.$element.find('.picker-header'); - this.$popup = this.$element.find('.picker-popup'); - this.$body = this.$element.find('.picker-body'); - - this.clickStamp = '_'; - - this.isInput = this.$trigger.is('input'); - - this.$trigger.on('keydown.fu.picker', $.proxy(this.keyComplete, this)); - this.$trigger.on('focus.fu.picker', $.proxy(function inputFocus(e){ - if(typeof e === "undefined" || $(e.target).is('input[type=text]')){ - $.proxy(this.show(), this); - } - }, this)); - this.$trigger.on('click.fu.picker', $.proxy(function triggerClick(e){ - if(!$(e.target).is('input[type=text]')){ - $.proxy(this.toggle(), this); - }else{ - $.proxy(this.show(), this); - } - }, this)); - this.$accept.on('click.fu.picker', $.proxy(this.complete, this, 'accepted')); - this.$cancel.on('click.fu.picker', function (e) { - e.preventDefault(); self.complete('cancelled'); - }); - - - }; - - var _isOffscreen = function _isOffscreen(picker) { - var windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); - var scrollTop = $(document).scrollTop(); - var popupTop = picker.$popup.offset(); - var popupBottom = popupTop.top + picker.$popup.outerHeight(true); - - //if the bottom of the popup goes off the page, but the top does not, dropup. - if (popupBottom > windowHeight + scrollTop || popupTop.top < scrollTop){ - return true; - }else{//otherwise, prefer showing the top of the popup only vs the bottom - return false; - } - }; - - var _display = function _display(picker) { - picker.$popup.css('visibility', 'hidden'); - - _showBelow(picker); - - //if part of the popup is offscreen try to show it above - if(_isOffscreen(picker)){ - _showAbove(picker); - - //if part of the popup is still offscreen, prefer cutting off the bottom - if(_isOffscreen(picker)){ - _showBelow(picker); - } - } - - picker.$popup.css('visibility', 'visible'); - }; - - var _showAbove = function _showAbove(picker) { - picker.$popup.css('top', - picker.$popup.outerHeight(true) + 'px'); - }; - - var _showBelow = function _showBelow(picker) { - picker.$popup.css('top', picker.$trigger.outerHeight(true) + 'px'); - }; - - Picker.prototype = { - constructor: Picker, - - complete: function complete(action) { - var EVENT_CALLBACK_MAP = { - 'accepted': 'onAccept', - 'cancelled': 'onCancel', - 'exited': 'onExit' - }; - var func = this.options[ EVENT_CALLBACK_MAP[action] ]; - - var obj = { - contents: this.$body - }; - - if (func) { - func(obj); - this.$element.trigger(action + '.fu.picker', obj); - } else { - this.$element.trigger(action + '.fu.picker', obj); - this.hide(); - } - }, - - keyComplete: function keyComplete(e) { - if (this.isInput && e.keyCode === 13) { - this.complete('accepted'); - this.$trigger.blur(); - } else if (e.keyCode === 27) { - this.complete('exited'); - this.$trigger.blur(); - } - }, - - destroy: function destroy() { - this.$element.remove(); - // remove any external bindings - $(document).off('click.fu.picker.externalClick.' + this.clickStamp); - // empty elements to return to original markup - // [none] - // return string of markup - return this.$element[0].outerHTML; - }, - - disable: function disable() { - this.$element.addClass('disabled'); - this.$trigger.attr('disabled', 'disabled'); - }, - - enable: function enable() { - this.$element.removeClass('disabled'); - this.$trigger.removeAttr('disabled'); - }, - - toggle: function toggle() { - if (this.$element.hasClass('showing')) { - this.hide(); - }else{ - this.show(); - } - }, - - hide: function hide() { - if (!this.$element.hasClass('showing')) { - return; - } - - this.$element.removeClass('showing'); - $(document).off('click.fu.picker.externalClick.' + this.clickStamp); - this.$element.trigger('hidden.fu.picker'); - }, - - externalClickListener: function externalClickListener(e, force) { - if (force === true || this.isExternalClick(e)) { - this.complete('exited'); - } - }, - - isExternalClick: function isExternalClick(e) { - var el = this.$element.get(0); - var exceptions = this.options.externalClickExceptions || []; - var $originEl = $(e.target); - var i, l; - - if (e.target === el || $originEl.parents('.picker:first').get(0) === el) { - return false; - } else { - for (i = 0, l = exceptions.length; i < l; i++) { - if ($originEl.is(exceptions[i]) || $originEl.parents(exceptions[i]).length > 0) { - return false; - } - - } - } - - return true; - }, - - show: function show() { - var other; - - other = $(document).find('.picker.showing'); - if (other.length > 0) { - if (other.data('fu.picker') && other.data('fu.picker').options.explicit) { - return; - } - - other.picker('externalClickListener', {}, true); - } - - this.$element.addClass('showing'); - - _display(this); - - this.$element.trigger('shown.fu.picker'); - - this.clickStamp = new Date().getTime() + (Math.floor(Math.random() * 100) + 1); - if (!this.options.explicit) { - $(document).on('click.fu.picker.externalClick.' + this.clickStamp, $.proxy(this.externalClickListener, this)); - } - } - }; - - // PLACARD PLUGIN DEFINITION - - $.fn.picker = function picker(option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.picker'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.picker', (data = new Picker(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.picker.defaults = { - onAccept: undefined, - onCancel: undefined, - onExit: undefined, - externalClickExceptions: [], - explicit: false - }; - - $.fn.picker.Constructor = Picker; - - $.fn.picker.noConflict = function noConflict() { - $.fn.picker = old; - return this; - }; - - // DATA-API - - $(document).on('focus.fu.picker.data-api', '[data-initialize=picker]', function (e) { - var $control = $(e.target).closest('.picker'); - if (!$control.data('fu.picker')) { - $control.picker($control.data()); - } - }); - - // Must be domReady for AMD compatibility - $(function () { - $('[data-initialize=picker]').each(function () { - var $this = $(this); - if ($this.data('fu.picker')) return; - $this.picker($this.data()); - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/pillbox.js b/elgg_clean/bower_components/fuelux/js/pillbox.js deleted file mode 100644 index 7bc9a7b9..00000000 --- a/elgg_clean/bower_components/fuelux/js/pillbox.js +++ /dev/null @@ -1,783 +0,0 @@ -/* - * Fuel UX Pillbox - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery', 'fuelux/dropdown-autoflip'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - if (!$.fn.dropdownautoflip) { - throw new Error('Fuel UX pillbox control requires dropdown-autoflip.'); - } - - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.pillbox; - - // PILLBOX CONSTRUCTOR AND PROTOTYPE - - var Pillbox = function (element, options) { - this.$element = $(element); - this.$moreCount = this.$element.find('.pillbox-more-count'); - this.$pillGroup = this.$element.find('.pill-group'); - this.$addItem = this.$element.find('.pillbox-add-item'); - this.$addItemWrap = this.$addItem.parent(); - this.$suggest = this.$element.find('.suggest'); - this.$pillHTML = '<li class="btn btn-default pill">' + - ' <span></span>' + - ' <span class="glyphicon glyphicon-close">' + - ' <span class="sr-only">Remove</span>' + - ' </span>' + - '</li>'; - - this.options = $.extend({}, $.fn.pillbox.defaults, options); - - if (this.options.readonly === -1) { - if (this.$element.attr('data-readonly') !== undefined) { - this.readonly(true); - } - - } else if (this.options.readonly) { - this.readonly(true); - } - - // EVENTS - this.acceptKeyCodes = this._generateObject(this.options.acceptKeyCodes); - // Creatie an object out of the key code array, so we dont have to loop through it on every key stroke - - this.$element.on('click.fu.pillbox', '.pill-group > .pill', $.proxy(this.itemClicked, this)); - this.$element.on('click.fu.pillbox', $.proxy(this.inputFocus, this)); - this.$element.on('keydown.fu.pillbox', '.pillbox-add-item', $.proxy(this.inputEvent, this)); - if (this.options.onKeyDown) { - this.$element.on('mousedown.fu.pillbox', '.suggest > li', $.proxy(this.suggestionClick, this)); - } - - if (this.options.edit) { - this.$element.addClass('pills-editable'); - this.$element.on('blur.fu.pillbox', '.pillbox-add-item', $.proxy(this.cancelEdit, this)); - } - }; - - Pillbox.prototype = { - constructor: Pillbox, - - destroy: function () { - this.$element.remove(); - // any external bindings - // [none] - // empty elements to return to original markup - // [none] - // returns string of markup - return this.$element[0].outerHTML; - }, - - items: function () { - var self = this; - - return this.$pillGroup.children('.pill').map(function () { - return self.getItemData($(this)); - }).get(); - }, - - itemClicked: function (e) { - var self = this; - var $target = $(e.target); - var $item; - - e.preventDefault(); - e.stopPropagation(); - this._closeSuggestions(); - - if (!$target.hasClass('pill')) { - $item = $target.parent(); - if (this.$element.attr('data-readonly') === undefined) { - if ($target.hasClass('glyphicon-close')) { - if (this.options.onRemove) { - this.options.onRemove(this.getItemData($item, { - el: $item - }), $.proxy(this._removeElement, this)); - } else { - this._removeElement(this.getItemData($item, { - el: $item - })); - } - - return false; - } else if (this.options.edit) { - if ($item.find('.pillbox-list-edit').length) { - return false; - } - - this.openEdit($item); - } - - } - - } else { - $item = $target; - } - - this.$element.trigger('clicked.fu.pillbox', this.getItemData($item)); - }, - - readonly: function (enable) { - if (enable) { - this.$element.attr('data-readonly', 'readonly'); - } else { - this.$element.removeAttr('data-readonly'); - } - - if (this.options.truncate) { - this.truncate(enable); - } - }, - - suggestionClick: function (e) { - var $item = $(e.currentTarget); - var item = { - text: $item.html(), - value: $item.data('value') - }; - - e.preventDefault(); - this.$addItem.val(''); - - if ($item.data('attr')) { - item.attr = JSON.parse($item.data('attr')); - } - - item.data = $item.data('data'); - - this.addItems(item, true); - - // needs to be after addItems for IE - this._closeSuggestions(); - }, - - itemCount: function () { - return this.$pillGroup.children('.pill').length; - }, - - // First parameter is 1 based index (optional, if index is not passed all new items will be appended) - // Second parameter can be array of objects [{ ... }, { ... }] or you can pass n additional objects as args - // object structure is as follows (attr and value are optional): { text: '', value: '', attr: {}, data: {} } - addItems: function () { - var self = this; - var items, index, isInternal; - - if (isFinite(String(arguments[0])) && !(arguments[0] instanceof Array)) { - items = [].slice.call(arguments).slice(1); - index = arguments[0]; - } else { - items = [].slice.call(arguments).slice(0); - isInternal = items[1] && !items[1].text; - } - - //If first argument is an array, use that, otherwise they probably passed each thing through as a separate arg, so use items as-is - if (items[0] instanceof Array) { - items = items[0]; - } - - if (items.length) { - $.each(items, function (i, value) { - var data = { - text: value.text, - value: (value.value ? value.value : value.text), - el: self.$pillHTML - }; - - if (value.attr) { - data.attr = value.attr; - } - - if (value.data) { - data.data = value.data; - } - - items[i] = data; - }); - - if (this.options.edit && this.currentEdit) { - items[0].el = this.currentEdit.wrap('<div></div>').parent().html(); - } - - if (isInternal) { - items.pop(1); - } - - if (self.options.onAdd && isInternal) { - if (this.options.edit && this.currentEdit) { - self.options.onAdd(items[0], $.proxy(self.saveEdit, this)); - } else { - self.options.onAdd(items[0], $.proxy(self.placeItems, this)); - } - - } else { - if (this.options.edit && this.currentEdit) { - self.saveEdit(items); - } else { - if (index) { - self.placeItems(index, items); - } else { - self.placeItems(items, isInternal); - } - - } - - } - - } - }, - - //First parameter is the index (1 based) to start removing items - //Second parameter is the number of items to be removed - removeItems: function (index, howMany) { - var self = this; - var count; - var $currentItem; - - if (!index) { - this.$pillGroup.find('.pill').remove(); - this._removePillTrigger({ - method: 'removeAll' - }); - } else { - howMany = howMany ? howMany : 1; - - for (count = 0; count < howMany; count++) { - $currentItem = self.$pillGroup.find('> .pill:nth-child(' + index + ')'); - - if ($currentItem) { - $currentItem.remove(); - } else { - break; - } - - } - } - }, - - //First parameter is index (optional) - //Second parameter is new arguments - placeItems: function () { - var $newHtml = []; - var items; - var index; - var $neighbor; - var isInternal; - - if (isFinite(String(arguments[0])) && !(arguments[0] instanceof Array)) { - items = [].slice.call(arguments).slice(1); - index = arguments[0]; - } else { - items = [].slice.call(arguments).slice(0); - isInternal = items[1] && !items[1].text; - } - - if (items[0] instanceof Array) { - items = items[0]; - } - - if (items.length) { - $.each(items, function (i, item) { - var $item = $(item.el); - var $neighbor; - - $item.attr('data-value', item.value); - $item.find('span:first').html(item.text); - - // DOM attributes - if (item.attr) { - $.each(item.attr, function (key, value) { - if (key === 'cssClass' || key === 'class') { - $item.addClass(value); - } else { - $item.attr(key, value); - } - }); - - } - - if (item.data) { - $item.data('data', item.data); - } - - $newHtml.push($item); - }); - - if (this.$pillGroup.children('.pill').length > 0) { - if (index) { - $neighbor = this.$pillGroup.find('.pill:nth-child(' + index + ')'); - - if ($neighbor.length) { - $neighbor.before($newHtml); - } else { - this.$pillGroup.children('.pill:last').after($newHtml); - } - - } else { - this.$pillGroup.children('.pill:last').after($newHtml); - } - - } else { - this.$pillGroup.prepend($newHtml); - } - - if (isInternal) { - this.$element.trigger('added.fu.pillbox', { - text: items[0].text, - value: items[0].value - }); - } - - } - }, - - inputEvent: function (e) { - var self = this; - var text = this.$addItem.val(); - var value; - var attr; - var $lastItem; - var $selection; - - if (this.acceptKeyCodes[e.keyCode]) { - if (this.options.onKeyDown && this._isSuggestionsOpen()) { - $selection = this.$suggest.find('.pillbox-suggest-sel'); - - if ($selection.length) { - text = $selection.html(); - value = $selection.data('value'); - attr = $selection.data('attr'); - } - - } - - //ignore comma and make sure text that has been entered (protects against " ,". https://github.com/ExactTarget/fuelux/issues/593), unless allowEmptyPills is true. - if (text.replace(/[ ]*\,[ ]*/, '').match(/\S/) || (this.options.allowEmptyPills && text.length)) { - this._closeSuggestions(); - this.$addItem.hide(); - - if (attr) { - this.addItems({ - text: text, - value: value, - attr: JSON.parse(attr) - }, true); - } else { - this.addItems({ - text: text, - value: value - }, true); - } - - setTimeout(function () { - self.$addItem.show().val('').attr({ - size: 10 - }); - }, 0); - } - - e.preventDefault(); - return true; - } else if (e.keyCode === 8 || e.keyCode === 46) { - // backspace: 8 - // delete: 46 - - if (!text.length) { - e.preventDefault(); - - if (this.options.edit && this.currentEdit) { - this.cancelEdit(); - return true; - } - - this._closeSuggestions(); - $lastItem = this.$pillGroup.children('.pill:last'); - - if ($lastItem.hasClass('pillbox-highlight')) { - this._removeElement(this.getItemData($lastItem, { - el: $lastItem - })); - } else { - $lastItem.addClass('pillbox-highlight'); - } - - return true; - } - - } else if (text.length > 10) { - if (this.$addItem.width() < (this.$pillGroup.width() - 6)) { - this.$addItem.attr({ - size: text.length + 3 - }); - } - - } - - this.$pillGroup.find('.pill').removeClass('pillbox-highlight'); - - if (this.options.onKeyDown) { - if (e.keyCode === 9 || e.keyCode === 38 || e.keyCode === 40) { - // tab: 9 - // up arrow: 38 - // down arrow: 40 - - if (this._isSuggestionsOpen()) { - this._keySuggestions(e); - } - - return true; - } - - //only allowing most recent event callback to register - this.callbackId = e.timeStamp; - this.options.onKeyDown({ - event: e, - value: text - }, function (data) { - self._openSuggestions(e, data); - }); - } - }, - - openEdit: function (el) { - var index = el.index() + 1; - var $addItemWrap = this.$addItemWrap.detach().hide(); - - this.$pillGroup.find('.pill:nth-child(' + index + ')').before($addItemWrap); - this.currentEdit = el.detach(); - - $addItemWrap.addClass('editing'); - this.$addItem.val(el.find('span:first').html()); - $addItemWrap.show(); - this.$addItem.focus().select(); - }, - - cancelEdit: function (e) { - var $addItemWrap; - if (!this.currentEdit) { - return false; - } - - this._closeSuggestions(); - if (e) { - this.$addItemWrap.before(this.currentEdit); - } - - this.currentEdit = false; - - $addItemWrap = this.$addItemWrap.detach(); - $addItemWrap.removeClass('editing'); - this.$addItem.val(''); - this.$pillGroup.append($addItemWrap); - }, - - //Must match syntax of placeItem so addItem callback is called when an item is edited - //expecting to receive an array back from the callback containing edited items - saveEdit: function () { - var item = arguments[0][0] ? arguments[0][0] : arguments[0]; - - this.currentEdit = $(item.el); - this.currentEdit.data('value', item.value); - this.currentEdit.find('span:first').html(item.text); - - this.$addItemWrap.hide(); - this.$addItemWrap.before(this.currentEdit); - this.currentEdit = false; - - this.$addItem.val(''); - this.$addItemWrap.removeClass('editing'); - this.$pillGroup.append(this.$addItemWrap.detach().show()); - this.$element.trigger('edited.fu.pillbox', { - value: item.value, - text: item.text - }); - }, - - removeBySelector: function () { - var selectors = [].slice.call(arguments).slice(0); - var self = this; - - $.each(selectors, function (i, sel) { - self.$pillGroup.find(sel).remove(); - }); - - this._removePillTrigger({ - method: 'removeBySelector', - removedSelectors: selectors - }); - }, - - removeByValue: function () { - var values = [].slice.call(arguments).slice(0); - var self = this; - - $.each(values, function (i, val) { - self.$pillGroup.find('> .pill[data-value="' + val + '"]').remove(); - }); - - this._removePillTrigger({ - method: 'removeByValue', - removedValues: values - }); - }, - - removeByText: function () { - var text = [].slice.call(arguments).slice(0); - var self = this; - - $.each(text, function (i, text) { - self.$pillGroup.find('> .pill:contains("' + text + '")').remove(); - }); - - this._removePillTrigger({ - method: 'removeByText', - removedText: text - }); - }, - - truncate: function (enable) { - var self = this; - var available, full, i, pills, used; - - this.$element.removeClass('truncate'); - this.$addItemWrap.removeClass('truncated'); - this.$pillGroup.find('.pill').removeClass('truncated'); - - if (enable) { - this.$element.addClass('truncate'); - - available = this.$element.width(); - full = false; - i = 0; - pills = this.$pillGroup.find('.pill').length; - used = 0; - - this.$pillGroup.find('.pill').each(function () { - var pill = $(this); - if (!full) { - i++; - self.$moreCount.text(pills - i); - if ((used + pill.outerWidth(true) + self.$addItemWrap.outerWidth(true)) <= available) { - used += pill.outerWidth(true); - } else { - self.$moreCount.text((pills - i) + 1); - pill.addClass('truncated'); - full = true; - } - - } else { - pill.addClass('truncated'); - } - }); - if (i === pills) { - this.$addItemWrap.addClass('truncated'); - } - - } - }, - - inputFocus: function (e) { - this.$element.find('.pillbox-add-item').focus(); - }, - - getItemData: function (el, data) { - return $.extend({ - text: el.find('span:first').html() - }, el.data(), data); - }, - - _removeElement: function (data) { - data.el.remove(); - delete data.el; - this.$element.trigger('removed.fu.pillbox', data); - }, - - _removePillTrigger: function (removedBy) { - this.$element.trigger('removed.fu.pillbox', removedBy); - }, - - _generateObject: function (data) { - var obj = {}; - - $.each(data, function (index, value) { - obj[value] = true; - }); - - return obj; - }, - - _openSuggestions: function (e, data) { - var markup = ''; - var $suggestionList = $('<ul>'); - - if (this.callbackId !== e.timeStamp) { - return false; - } - - if (data.data && data.data.length) { - $.each(data.data, function (index, value) { - var val = value.value ? value.value : value.text; - - // markup concatentation is 10x faster, but does not allow data store - var $suggestion = $('<li data-value="' + val + '">' + value.text + '</li>'); - - if (value.attr) { - $suggestion.data('attr', JSON.stringify(value.attr)); - } - - if (value.data) { - $suggestion.data('data', value.data); - } - - $suggestionList.append($suggestion); - }); - - // suggestion dropdown - this.$suggest.html('').append($suggestionList.children()); - $(document.body).trigger('suggested.fu.pillbox', this.$suggest); - } - }, - - _closeSuggestions: function () { - this.$suggest.html('').parent().removeClass('open'); - }, - - _isSuggestionsOpen: function () { - return this.$suggest.parent().hasClass('open'); - }, - - _keySuggestions: function (e) { - var $first = this.$suggest.find('li.pillbox-suggest-sel'); - var dir = e.keyCode === 38;// up arrow - var $next, val; - - e.preventDefault(); - - if (!$first.length) { - $first = this.$suggest.find('li:first'); - $first.addClass('pillbox-suggest-sel'); - } else { - $next = dir ? $first.prev() : $first.next(); - - if (!$next.length) { - $next = dir ? this.$suggest.find('li:last') : this.$suggest.find('li:first'); - } - - if ($next) { - $next.addClass('pillbox-suggest-sel'); - $first.removeClass('pillbox-suggest-sel'); - } - - } - } - }; - - Pillbox.prototype.getValue = Pillbox.prototype.items; - - // PILLBOX PLUGIN DEFINITION - - $.fn.pillbox = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.pillbox'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.pillbox', (data = new Pillbox(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.pillbox.defaults = { - onAdd: undefined, - onRemove: undefined, - onKeyDown: undefined, - edit: false, - readonly: -1,//can be true or false. -1 means it will check for data-readonly="readonly" - truncate: false, - acceptKeyCodes: [ - 13,//Enter - 188//Comma - ], - allowEmptyPills: false - - //example on remove - /*onRemove: function(data,callback){ - console.log('onRemove'); - callback(data); - }*/ - - //example on key down - /*onKeyDown: function(event, data, callback ){ - callback({data:[ - {text: Math.random(),value:'sdfsdfsdf'}, - {text: Math.random(),value:'sdfsdfsdf'} - ]}); - } - */ - //example onAdd - /*onAdd: function( data, callback ){ - console.log(data, callback); - callback(data); - }*/ - }; - - $.fn.pillbox.Constructor = Pillbox; - - $.fn.pillbox.noConflict = function () { - $.fn.pillbox = old; - return this; - }; - - - // DATA-API - - $(document).on('mousedown.fu.pillbox.data-api', '[data-initialize=pillbox]', function (e) { - var $control = $(e.target).closest('.pillbox'); - if (!$control.data('fu.pillbox')) { - $control.pillbox($control.data()); - } - }); - - // Must be domReady for AMD compatibility - $(function () { - $('[data-initialize=pillbox]').each(function () { - var $this = $(this); - if ($this.data('fu.pillbox')) return; - $this.pillbox($this.data()); - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/placard.js b/elgg_clean/bower_components/fuelux/js/placard.js deleted file mode 100644 index 2fdc1485..00000000 --- a/elgg_clean/bower_components/fuelux/js/placard.js +++ /dev/null @@ -1,344 +0,0 @@ -/* - * Fuel UX Placard - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.placard; - var EVENT_CALLBACK_MAP = { 'accepted': 'onAccept', 'cancelled': 'onCancel' }; - - // PLACARD CONSTRUCTOR AND PROTOTYPE - - var Placard = function Placard(element, options) { - var self = this; - this.$element = $(element); - this.options = $.extend({}, $.fn.placard.defaults, options); - - if(this.$element.attr('data-ellipsis') === 'true'){ - this.options.applyEllipsis = true; - } - - this.$accept = this.$element.find('.placard-accept'); - this.$cancel = this.$element.find('.placard-cancel'); - this.$field = this.$element.find('.placard-field'); - this.$footer = this.$element.find('.placard-footer'); - this.$header = this.$element.find('.placard-header'); - this.$popup = this.$element.find('.placard-popup'); - - this.actualValue = null; - this.clickStamp = '_'; - this.previousValue = ''; - if (this.options.revertOnCancel === -1) { - this.options.revertOnCancel = (this.$accept.length > 0) ? true : false; - } - - this.isInput = this.$field.is('input'); - - this.$field.on('focus.fu.placard', $.proxy(this.show, this)); - this.$field.on('keydown.fu.placard', $.proxy(this.keyComplete, this)); - this.$element.on('close.fu.placard', $.proxy(this.hide, this)); - this.$accept.on('click.fu.placard', $.proxy(this.complete, this, 'accepted')); - this.$cancel.on('click.fu.placard', function (e) { - e.preventDefault(); self.complete('cancelled'); - }); - - this.applyEllipsis(); - }; - - var _isShown = function _isShown(placard) { - if (placard.$element.hasClass('showing')) { - return true; - } - return false; - }; - - var _closeOtherPlacards = function _closeOtherPlacards() { - var otherPlacards; - - otherPlacards = $(document).find('.placard.showing'); - if (otherPlacards.length > 0) { - if (otherPlacards.data('fu.placard') && otherPlacards.data('fu.placard').options.explicit) { - return false;//failed - } - - otherPlacards.placard('externalClickListener', {}, true); - } - - return true;//succeeded - }; - - Placard.prototype = { - constructor: Placard, - - complete: function complete(action) { - var func = this.options[ EVENT_CALLBACK_MAP[action] ]; - - var obj = { - previousValue: this.previousValue, - value: this.getValue() - }; - - if (func) { - func(obj); - this.$element.trigger(action + '.fu.placard', obj); - } else { - if (action === 'cancelled' && this.options.revertOnCancel) { - this.setValue(this.previousValue, true); - } - - this.$element.trigger(action + '.fu.placard', obj); - this.hide(); - } - }, - - keyComplete: function keyComplete(e) { - if (this.isInput && e.keyCode === 13) { - this.complete('accepted'); - this.$field.blur(); - } else if (e.keyCode === 27) { - this.complete('cancelled'); - this.$field.blur(); - } - }, - - destroy: function destroy() { - this.$element.remove(); - // remove any external bindings - $(document).off('click.fu.placard.externalClick.' + this.clickStamp); - // set input value attrbute - this.$element.find('input').each(function () { - $(this).attr('value', $(this).val()); - }); - // empty elements to return to original markup - // [none] - // return string of markup - return this.$element[0].outerHTML; - }, - - disable: function disable() { - this.$element.addClass('disabled'); - this.$field.attr('disabled', 'disabled'); - this.hide(); - }, - - applyEllipsis: function applyEllipsis() { - var field, i, str; - if (this.options.applyEllipsis) { - field = this.$field.get(0); - if (this.$field.is('input')) { - field.scrollLeft = 0; - } else { - field.scrollTop = 0; - if (field.clientHeight < field.scrollHeight) { - this.actualValue = this.getValue(); - this.setValue('', true); - str = ''; - i = 0; - while (field.clientHeight >= field.scrollHeight) { - str += this.actualValue[i]; - this.setValue(str + '...', true); - i++; - } - str = (str.length > 0) ? str.substring(0, str.length - 1) : ''; - this.setValue(str + '...', true); - } - - } - - } - }, - - enable: function enable() { - this.$element.removeClass('disabled'); - this.$field.removeAttr('disabled'); - }, - - externalClickListener: function externalClickListener(e, force) { - if (force === true || this.isExternalClick(e)) { - this.complete(this.options.externalClickAction); - } - }, - - getValue: function getValue() { - if (this.actualValue !== null) { - return this.actualValue; - } else { - return this.$field.val(); - } - }, - - hide: function hide() { - if (!this.$element.hasClass('showing')) { - return; - } - - this.$element.removeClass('showing'); - this.applyEllipsis(); - $(document).off('click.fu.placard.externalClick.' + this.clickStamp); - this.$element.trigger('hidden.fu.placard'); - }, - - isExternalClick: function isExternalClick(e) { - var el = this.$element.get(0); - var exceptions = this.options.externalClickExceptions || []; - var $originEl = $(e.target); - var i, l; - - if (e.target === el || $originEl.parents('.placard:first').get(0) === el) { - return false; - } else { - for (i = 0, l = exceptions.length; i < l; i++) { - if ($originEl.is(exceptions[i]) || $originEl.parents(exceptions[i]).length > 0) { - return false; - } - - } - } - - return true; - }, - - /** - * setValue() sets the Placard triggering DOM element's display value - * - * @param {String} the value to be displayed - * @param {Boolean} If you want to explicitly suppress the application - * of ellipsis, pass `true`. This would typically only be - * done from internal functions (like `applyEllipsis`) - * that want to avoid circular logic. Otherwise, the - * value of the option applyEllipsis will be used. - * @return {Object} jQuery object representing the DOM element whose - * value was set - */ - setValue: function setValue(val, suppressEllipsis) { - //if suppressEllipsis is undefined, check placards init settings - if(typeof suppressEllipsis === "undefined"){ - suppressEllipsis = !this.options.applyEllipsis; - } - - this.$field.val(val); - - if (!suppressEllipsis && !_isShown(this)) { - this.applyEllipsis(); - } - - return this.$field; - }, - - show: function show() { - if(_isShown(this)){return;} - if(!_closeOtherPlacards()){return;} - - this.previousValue = this.$field.val(); - - if (this.actualValue !== null) { - this.setValue(this.actualValue); - this.actualValue = null; - } - - this.showPlacard(); - }, - - showPlacard: function showPlacard() { - this.$element.addClass('showing'); - - if (this.$header.length > 0) { - this.$popup.css('top', '-' + this.$header.outerHeight(true) + 'px'); - } - - if (this.$footer.length > 0) { - this.$popup.css('bottom', '-' + this.$footer.outerHeight(true) + 'px'); - } - - this.$element.trigger('shown.fu.placard'); - this.clickStamp = new Date().getTime() + (Math.floor(Math.random() * 100) + 1); - if (!this.options.explicit) { - $(document).on('click.fu.placard.externalClick.' + this.clickStamp, $.proxy(this.externalClickListener, this)); - } - } - }; - - // PLACARD PLUGIN DEFINITION - - $.fn.placard = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.placard'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.placard', (data = new Placard(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.placard.defaults = { - onAccept: undefined, - onCancel: undefined, - externalClickAction: 'cancelled', - externalClickExceptions: [], - explicit: false, - revertOnCancel: -1,//negative 1 will check for an '.placard-accept' button. Also can be set to true or false - applyEllipsis: false - }; - - $.fn.placard.Constructor = Placard; - - $.fn.placard.noConflict = function () { - $.fn.placard = old; - return this; - }; - - // DATA-API - - $(document).on('focus.fu.placard.data-api', '[data-initialize=placard]', function (e) { - var $control = $(e.target).closest('.placard'); - if (!$control.data('fu.placard')) { - $control.placard($control.data()); - } - }); - - // Must be domReady for AMD compatibility - $(function () { - $('[data-initialize=placard]').each(function () { - var $this = $(this); - if ($this.data('fu.placard')) return; - $this.placard($this.data()); - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/radio.js b/elgg_clean/bower_components/fuelux/js/radio.js deleted file mode 100644 index 05b13fe0..00000000 --- a/elgg_clean/bower_components/fuelux/js/radio.js +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Fuel UX Radio - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.radio; - - // RADIO CONSTRUCTOR AND PROTOTYPE - - var Radio = function (element, options) { - this.options = $.extend({}, $.fn.radio.defaults, options); - - if(element.tagName.toLowerCase() !== 'label') { - //console.log('initialize radio on the label that wraps the radio'); - return; - } - - // cache elements - this.$label = $(element); - this.$radio = this.$label.find('input[type="radio"]'); - this.groupName = this.$radio.attr('name'); // don't cache group itself since items can be added programmatically - - // determine if a toggle container is specified - var containerSelector = this.$radio.attr('data-toggle'); - this.$toggleContainer = $(containerSelector); - - // handle internal events - this.$radio.on('change', $.proxy(this.itemchecked, this)); - - // set default state - this.setInitialState(); - }; - - Radio.prototype = { - - constructor: Radio, - - setInitialState: function() { - var $radio = this.$radio; - var $lbl = this.$label; - - // get current state of input - var checked = $radio.prop('checked'); - var disabled = $radio.prop('disabled'); - - // sync label class with input state - this.setCheckedState($radio, checked); - this.setDisabledState($radio, disabled); - }, - - resetGroup: function() { - var $radios = $('input[name="' + this.groupName + '"]'); - $radios.each(function(index, item) { - var $radio = $(item); - var $lbl = $radio.parent(); - var containerSelector = $radio.attr('data-toggle'); - var $containerToggle = $(containerSelector); - - - $lbl.removeClass('checked'); - $containerToggle.addClass('hidden'); - }); - }, - - setCheckedState: function(element, checked) { - var $radio = element; - var $lbl = $radio.parent(); - var containerSelector = $radio.attr('data-toggle'); - var $containerToggle = $(containerSelector); - - if(checked) { - // reset all items in group - this.resetGroup(); - - $radio.prop('checked', true); - $lbl.addClass('checked'); - $containerToggle.removeClass('hide hidden'); - $lbl.trigger('checked.fu.radio'); - } - else { - $radio.prop('checked', false); - $lbl.removeClass('checked'); - $containerToggle.addClass('hidden'); - $lbl.trigger('unchecked.fu.radio'); - } - - $lbl.trigger('changed.fu.radio', checked); - }, - - setDisabledState: function(element, disabled) { - var $radio = element; - var $lbl = this.$label; - - if(disabled) { - this.$radio.prop('disabled', true); - $lbl.addClass('disabled'); - $lbl.trigger('disabled.fu.radio'); - } - else { - this.$radio.prop('disabled', false); - $lbl.removeClass('disabled'); - $lbl.trigger('enabled.fu.radio'); - } - }, - - itemchecked: function (evt) { - var $radio = $(evt.target); - this.setCheckedState($radio, true); - }, - - check: function () { - this.setCheckedState(this.$radio, true); - }, - - uncheck: function () { - this.setCheckedState(this.$radio, false); - }, - - isChecked: function () { - var checked = this.$radio.prop('checked'); - return checked; - }, - - enable: function () { - this.setDisabledState(this.$radio, false); - }, - - disable: function () { - this.setDisabledState(this.$radio, true); - }, - - destroy: function () { - this.$label.remove(); - // remove any external bindings - // [none] - // empty elements to return to original markup - // [none] - return this.$label[0].outerHTML; - } - }; - - Radio.prototype.getValue = Radio.prototype.isChecked; - - // RADIO PLUGIN DEFINITION - - $.fn.radio = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.radio'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.radio', (data = new Radio(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.radio.defaults = {}; - - $.fn.radio.Constructor = Radio; - - $.fn.radio.noConflict = function () { - $.fn.radio = old; - return this; - }; - - - // DATA-API - - $(document).on('mouseover.fu.radio.data-api', '[data-initialize=radio]', function (e) { - var $control = $(e.target); - if (!$control.data('fu.radio')) { - $control.radio($control.data()); - } - }); - - // Must be domReady for AMD compatibility - $(function () { - $('[data-initialize=radio]').each(function () { - var $this = $(this); - if (!$this.data('fu.radio')) { - $this.radio($this.data()); - } - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/js/repeater-list.js b/elgg_clean/bower_components/fuelux/js/repeater-list.js deleted file mode 100755 index 70fa6b28..00000000 --- a/elgg_clean/bower_components/fuelux/js/repeater-list.js +++ /dev/null @@ -1,913 +0,0 @@ -/* - * Fuel UX Repeater - List View Plugin - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery', 'fuelux/repeater'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - if($.fn.repeater){ - //ADDITIONAL METHODS - $.fn.repeater.Constructor.prototype.list_clearSelectedItems = function () { - this.$canvas.find('.repeater-list-check').remove(); - this.$canvas.find('.repeater-list table tbody tr.selected').removeClass('selected'); - }; - - $.fn.repeater.Constructor.prototype.list_highlightColumn = function (index, force) { - var tbody = this.$canvas.find('.repeater-list-wrapper > table tbody'); - if (this.viewOptions.list_highlightSortedColumn || force) { - tbody.find('td.sorted').removeClass('sorted'); - tbody.find('tr').each(function () { - var col = $(this).find('td:nth-child(' + (index + 1) + ')').filter(function(){return !$(this).parent().hasClass('empty');}); - col.addClass('sorted'); - }); - } - }; - - $.fn.repeater.Constructor.prototype.list_getSelectedItems = function () { - var selected = []; - this.$canvas.find('.repeater-list .repeater-list-wrapper > table tbody tr.selected').each(function () { - var $item = $(this); - selected.push({ - data: $item.data('item_data'), - element: $item - }); - }); - return selected; - }; - - $.fn.repeater.Constructor.prototype.getValue = $.fn.repeater.Constructor.prototype.list_getSelectedItems; - - $.fn.repeater.Constructor.prototype.list_positionHeadings = function () { - var $wrapper = this.$element.find('.repeater-list-wrapper'); - var offsetLeft = $wrapper.offset().left; - var scrollLeft = $wrapper.scrollLeft(); - if (scrollLeft > 0) { - $wrapper.find('.repeater-list-heading').each(function () { - var $heading = $(this); - var left = ($heading.parents('th:first').offset().left - offsetLeft) + 'px'; - $heading.addClass('shifted').css('left', left); - }); - } else { - $wrapper.find('.repeater-list-heading').each(function () { - $(this).removeClass('shifted').css('left', ''); - }); - } - }; - - $.fn.repeater.Constructor.prototype.list_setSelectedItems = function (items, force) { - var selectable = this.viewOptions.list_selectable; - var self = this; - var data, i, $item, l; - - //this function is necessary because lint yells when a function is in a loop - function checkIfItemMatchesValue () { - $item = $(this); - data = $item.data('item_data') || {}; - if (data[items[i].property] === items[i].value) { - selectItem($item, items[i].selected); - } - } - - function selectItem ($itm, select) { - select = (select !== undefined) ? select : true; - if (select) { - if (!force && selectable !== 'multi') { - self.list_clearSelectedItems(); - } - - if (!$itm.hasClass('selected')) { - $itm.addClass('selected'); - $itm.find('td:first').prepend('<div class="repeater-list-check"><span class="glyphicon glyphicon-ok"></span></div>'); - } - - } else { - $itm.find('.repeater-list-check').remove(); - $itm.removeClass('selected'); - } - } - - if (!$.isArray(items)) { - items = [items]; - } - - if (force === true || selectable === 'multi') { - l = items.length; - } else if (selectable) { - l = (items.length > 0) ? 1 : 0; - } else { - l = 0; - } - - for (i = 0; i < l; i++) { - if (items[i].index !== undefined) { - $item = this.$canvas.find('.repeater-list table tbody tr:nth-child(' + (items[i].index + 1) + ')'); - if ($item.length > 0) { - selectItem($item, items[i].selected); - } - - } else if (items[i].property !== undefined && items[i].value !== undefined) { - this.$canvas.find('.repeater-list table tbody tr').each(checkIfItemMatchesValue); - } - - } - }; - - $.fn.repeater.Constructor.prototype.list_sizeHeadings = function () { - var $table = this.$element.find('.repeater-list table'); - $table.find('thead th').each(function () { - var $hr = $(this); - var $heading = $hr.find('.repeater-list-heading'); - $heading.outerHeight($hr.outerHeight()); - $heading.outerWidth($hr.outerWidth()); - }); - }; - - $.fn.repeater.Constructor.prototype.list_setFrozenColumns = function () { - var frozenTable = this.$canvas.find('.table-frozen'); - var $wrapper = this.$element.find('.repeater-canvas'); - var $table = this.$element.find('.repeater-list .repeater-list-wrapper > table'); - var repeaterWrapper = this.$element.find('.repeater-list'); - var numFrozenColumns = this.viewOptions.list_frozenColumns; - var self = this; - - if (this.viewOptions.list_selectable === 'multi') { - numFrozenColumns = numFrozenColumns + 1; - $wrapper.addClass('multi-select-enabled'); - } - - if (frozenTable.length < 1) { - //setup frozen column markup - //main wrapper and remove unneeded columns - var $frozenColumnWrapper = $('<div class="frozen-column-wrapper"></div>').insertBefore($table); - var $frozenColumn = $table.clone().addClass('table-frozen'); - $frozenColumn.find('th:not(:lt('+ numFrozenColumns +'))').remove(); - $frozenColumn.find('td:not(:nth-child(n+0):nth-child(-n+'+ numFrozenColumns +'))').remove(); - - //need to set absolute heading for vertical scrolling - var $frozenThead = $frozenColumn.clone().removeClass('table-frozen'); - $frozenThead.find('tbody').remove(); - var $frozenTheadWrapper = $('<div class="frozen-thead-wrapper"></div>').append($frozenThead); - - $frozenColumnWrapper.append($frozenColumn); - repeaterWrapper.append($frozenTheadWrapper); - this.$canvas.addClass('frozen-enabled'); - } - - this.$element.find('.repeater-list table.table-frozen tr').each(function (i, elem) { - $(this).height($table.find('tr:eq(' + i + ')').height()); - }); - - var columnWidth = $table.find('td:eq(0)').outerWidth(); - this.$element.find('.frozen-column-wrapper, .frozen-thead-wrapper').width(columnWidth); - - $('.frozen-thead-wrapper .repeater-list-heading').on('click', function() { - var index = $(this).parent('th').index(); - index = index + 1; - self.$element.find('.repeater-list-wrapper > table thead th:nth-child('+ index +') .repeater-list-heading')[0].click(); - }); - - - }; - - $.fn.repeater.Constructor.prototype.list_positionColumns = function () { - var $wrapper = this.$element.find('.repeater-canvas'); - var scrollTop = $wrapper.scrollTop(); - var scrollLeft = $wrapper.scrollLeft(); - var frozenEnabled = this.viewOptions.list_frozenColumns || this.viewOptions.list_selectable === 'multi'; - var actionsEnabled = this.viewOptions.list_actions; - - var canvasWidth = this.$element.find('.repeater-canvas').outerWidth(); - var tableWidth = this.$element.find('.repeater-list .repeater-list-wrapper > table').outerWidth(); - - var actionsWidth = this.$element.find('.table-actions') ? this.$element.find('.table-actions').outerWidth() : 0; - - var shouldScroll = (tableWidth - (canvasWidth - actionsWidth)) >= scrollLeft; - - - if (scrollTop > 0) { - $wrapper.find('.repeater-list-heading').css('top', scrollTop); - } - else { - $wrapper.find('.repeater-list-heading').css('top','0'); - } - if (scrollLeft > 0) { - if (frozenEnabled) { - $wrapper.find('.frozen-thead-wrapper').css('left', scrollLeft); - $wrapper.find('.frozen-column-wrapper').css('left', scrollLeft); - } - if (actionsEnabled && shouldScroll) { - $wrapper.find('.actions-thead-wrapper').css('right', -scrollLeft); - $wrapper.find('.actions-column-wrapper').css('right', -scrollLeft); - } - - } else { - if (frozenEnabled) { - $wrapper.find('.frozen-thead-wrapper').css('left', '0'); - $wrapper.find('.frozen-column-wrapper').css('left', '0'); - } - if (actionsEnabled) { - $wrapper.find('.actions-thead-wrapper').css('right', '0'); - $wrapper.find('.actions-column-wrapper').css('right', '0'); - } - } - }; - - $.fn.repeater.Constructor.prototype.list_createItemActions = function () { - var actionsHtml = ''; - var self = this; - var i, l; - var $table = this.$element.find('.repeater-list .repeater-list-wrapper > table'); - var $actionsTable = this.$canvas.find('.table-actions'); - - for (i = 0, l = this.viewOptions.list_actions.items.length; i < l; i++) { - var action = this.viewOptions.list_actions.items[i]; - var html = action.html; - - actionsHtml += '<li><a href="#" data-action="'+ action.name +'" class="action-item"> ' + html + '</a></li>'; - } - - var selectlist = '<div class="btn-group">' + - '<button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" data-flip="auto" aria-expanded="false">' + - '<span class="caret"></span>' + - '</button>' + - '<ul class="dropdown-menu dropdown-menu-right" role="menu">' + - actionsHtml + - '</ul></div>'; - - if ($actionsTable.length < 1) { - - var $actionsColumnWrapper = $('<div class="actions-column-wrapper" style="width: '+ this.list_actions_width +'px"></div>').insertBefore($table); - var $actionsColumn = $table.clone().addClass('table-actions'); - $actionsColumn.find('th:not(:last-child)').remove(); - $actionsColumn.find('tr td:not(:last-child)').remove(); - - // Dont show actions dropdown in header if not multi select - if (this.viewOptions.list_selectable === 'multi') { - $actionsColumn.find('thead tr').html('<th><div class="repeater-list-heading">' + selectlist + '</div></th>'); - //disable the header dropdown until an item is selected - $actionsColumn.find('thead .btn').attr('disabled', 'disabled'); - } - else { - var label = this.viewOptions.list_actions.label || '<span class="actions-hidden">a</span>'; - $actionsColumn.find('thead tr').addClass('empty-heading').html('<th>'+ label +'<div class="repeater-list-heading">'+ label +'</div></th>'); - } - - // Create Actions dropdown for each cell in actions table - var $actionsCells = $actionsColumn.find('td'); - - $actionsCells.each(function(i) { - $(this).html(selectlist); - $(this).find('a').attr('data-row', parseInt([i]) + 1); - }); - - $actionsColumnWrapper.append($actionsColumn); - - this.$canvas.addClass('actions-enabled'); - } - -/* this.$element.find('.repeater-list .actions-column-wrapper, .repeater-list .actions-column-wrapper td, .repeater-list .actions-column-wrapper th') - .css('width', this.list_actions_width); - - this.$element.find('.repeater-list .actions-column-wrapper th .repeater-list-heading').css('width', this.list_actions_width + 1 + 'px');*/ - this.$element.find('.repeater-list table.table-actions thead tr th').outerHeight($table.find('thead tr th').outerHeight()); - this.$element.find('.repeater-list table.table-actions tbody tr td:first-child').each(function (i, elem) { - $(this).outerHeight($table.find('tbody tr:eq(' + i + ') td').outerHeight()); - }); - - - //row level actions click - this.$element.find('.table-actions tbody .action-item').on('click', function() { - var actionName = $(this).data('action'); - var row = $(this).data('row'); - var selected = { - actionName: actionName, - rows: [row] - }; - self.list_getActionItems(selected); - }); - // bulk actions click - this.$element.find('.table-actions thead .action-item').on('click', function() { - var actionName = $(this).data('action'); - var selected = { - actionName: actionName, - rows: [] - }; - self.$element.find('.repeater-list-wrapper > table .selected').each(function() { - var index = $(this).index(); - index = index + 1; - selected.rows.push(index); - }); - - self.list_getActionItems(selected); - }); - }; - - $.fn.repeater.Constructor.prototype.list_getActionItems = function (selected) { - var i; - var selectedObj = []; - var actionObj = $.grep(this.viewOptions.list_actions.items, function(actions){ - return actions.name === selected.actionName; - })[0]; - for (i = 0; i < selected.rows.length; i++) { - var clickedRow = this.$canvas.find('.repeater-list-wrapper > table tbody tr:nth-child('+ selected.rows[i] +')'); - selectedObj.push({ - item: clickedRow, - rowData: clickedRow.data('item_data') - }); - } - if (selectedObj.length === 1) { - selectedObj = selectedObj[0]; - } - - if (actionObj.clickAction) { - actionObj.clickAction(selectedObj, function () {}); - } - }; - - $.fn.repeater.Constructor.prototype.list_sizeActionsTable = function () { - var $table = this.$element.find('.repeater-list-wrapper > table'); - var $actionsTableHeading = this.$element.find('.repeater-list-wrapper .actions-column-wrapper thead th .repeater-list-heading'); - $actionsTableHeading.outerHeight($table.find('thead th .repeater-list-heading').outerHeight()); - }; - - $.fn.repeater.Constructor.prototype.list_frozenOptionsInitialize = function () { - var self = this; - var isFrozen = this.viewOptions.list_frozenColumns; - var isActions = this.viewOptions.list_actions; - var isMulti = this.viewOptions.list_selectable === 'multi'; - - var $checkboxes = this.$element.find('.frozen-column-wrapper .checkbox-inline'); - - var $everyTable = this.$element.find('.repeater-list table'); - - - - //Make sure if row is hovered that it is shown in frozen column as well - this.$element.find('tr.selectable').on('mouseover mouseleave', function(e) { - var index = $(this).index(); - index = index + 1; - if (e.type === 'mouseover'){ - $everyTable.find('tbody tr:nth-child('+ index +')').addClass('hovered'); - } - else { - $everyTable.find('tbody tr:nth-child('+ index +')').removeClass('hovered'); - } - }); - - $checkboxes.checkbox(); - - this.$element.find('.table-frozen tbody .checkbox-inline').on('change', function(e) { - e.preventDefault(); - var row = $(this).attr('data-row'); - row = parseInt(row) + 1; - self.$element.find('.repeater-list-wrapper > table tbody tr:nth-child('+ row +')').click(); - }); - - this.$element.find('.frozen-thead-wrapper thead .checkbox-inline').on('change', function () { - if ($(this).checkbox('isChecked')){ - self.$element.find('.repeater-list-wrapper > table tbody tr:not(.selected)').click(); - self.$element.trigger('selected.fu.repeaterList', $checkboxes); - } - else { - self.$element.find('.repeater-list-wrapper > table tbody tr.selected').click(); - self.$element.trigger('deselected.fu.repeaterList', $checkboxes); - } - }); - }; - - //ADDITIONAL DEFAULT OPTIONS - $.fn.repeater.defaults = $.extend({}, $.fn.repeater.defaults, { - list_columnRendered: null, - list_columnSizing: true, - list_columnSyncing: true, - list_highlightSortedColumn: true, - list_infiniteScroll: false, - list_noItemsHTML: 'no items found', - list_selectable: false, - list_sortClearing: false, - list_rowRendered: null, - list_frozenColumns: 0, - list_actions: false - }); - - //EXTENSION DEFINITION - $.fn.repeater.viewTypes.list = { - cleared: function () { - if (this.viewOptions.list_columnSyncing) { - this.list_sizeHeadings(); - } - }, - dataOptions: function (options) { - if (this.list_sortDirection) { - options.sortDirection = this.list_sortDirection; - } - if (this.list_sortProperty) { - options.sortProperty = this.list_sortProperty; - } - return options; - }, - initialize: function (helpers, callback) { - this.list_sortDirection = null; - this.list_sortProperty = null; - this.list_actions_width = (this.viewOptions.list_actions.width !== undefined) ? this.viewOptions.list_actions.width : 37; - this.list_noItems = false; - callback(); - }, - resize: function () { - if (this.viewOptions.list_columnSyncing) { - this.list_sizeHeadings(); - } - }, - selected: function () { - var infScroll = this.viewOptions.list_infiniteScroll; - var opts; - - this.list_firstRender = true; - this.$loader.addClass('noHeader'); - - if (infScroll) { - opts = (typeof infScroll === 'object') ? infScroll : {}; - this.infiniteScrolling(true, opts); - } - }, - before: function(helpers){ - var $listContainer = helpers.container.find('.repeater-list'); - var self = this; - var $table; - - if ($listContainer.length < 1) { - $listContainer = $('<div class="repeater-list ' + specialBrowserClass() + '" data-preserve="shallow"><div class="repeater-list-wrapper" data-infinite="true" data-preserve="shallow"><table aria-readonly="true" class="table" data-preserve="shallow" role="grid"></table></div></div>'); - $listContainer.find('.repeater-list-wrapper').on('scroll.fu.repeaterList', function () { - if (self.viewOptions.list_columnSyncing) { - self.list_positionHeadings(); - } - }); - if (self.viewOptions.list_frozenColumns || self.viewOptions.list_actions || self.viewOptions.list_selectable === 'multi') { - helpers.container.on('scroll.fu.repeaterList', function () { - self.list_positionColumns(); - }); - } - - helpers.container.append($listContainer); - } - helpers.container.removeClass('actions-enabled actions-enabled multi-select-enabled'); - - $table = $listContainer.find('table'); - renderThead.call(this, $table, helpers.data); - renderTbody.call(this, $table, helpers.data); - - return false; - }, - renderItem: function(helpers){ - renderRow.call(this, helpers.container, helpers.subset, helpers.index); - return false; - }, - after: function(){ - var $sorted; - - if ((this.viewOptions.list_frozenColumns || this.viewOptions.list_selectable === 'multi') && !this.list_noItems) { - this.list_setFrozenColumns(); - } - - if (this.viewOptions.list_actions && !this.list_noItems) { - this.list_createItemActions(); - this.list_sizeActionsTable(); - } - - if ((this.viewOptions.list_frozenColumns || this.viewOptions.list_actions || this.viewOptions.list_selectable === 'multi') && !this.list_noItems) { - this.list_positionColumns(); - this.list_frozenOptionsInitialize(); - } - - if (this.viewOptions.list_columnSyncing) { - this.list_sizeHeadings(); - this.list_positionHeadings(); - } - - $sorted = this.$canvas.find('.repeater-list-wrapper > table .repeater-list-heading.sorted'); - if ($sorted.length > 0) { - this.list_highlightColumn($sorted.data('fu_item_index')); - } - - return false; - } - }; - } - - //ADDITIONAL METHODS - function renderColumn ($row, rows, rowIndex, columns, columnIndex) { - var className = columns[columnIndex].className; - var content = rows[rowIndex][columns[columnIndex].property]; - var $col = $('<td></td>'); - var width = columns[columnIndex]._auto_width; - - var property = columns[columnIndex].property; - if(this.viewOptions.list_actions !== false && property === '@_ACTIONS_@'){ - content = '<div class="repeater-list-actions-placeholder" style="width: ' + this.list_actions_width + 'px"></div>'; - } - - content = (content!==undefined) ? content : ''; - - $col.addClass(((className !== undefined) ? className : '')).append(content); - if (width !== undefined) { - $col.outerWidth(width); - } - $row.append($col); - - if (this.viewOptions.list_selectable === 'multi' && columns[columnIndex].property === '@_CHECKBOX_@') { - var checkBoxMarkup = '<label data-row="'+ rowIndex +'" class="checkbox-custom checkbox-inline body-checkbox">' + - '<input class="sr-only" type="checkbox"></label>'; - - $col.html(checkBoxMarkup); - } - - if (!(columns[columnIndex].property === '@_CHECKBOX_@' || columns[columnIndex].property === '@_ACTIONS_@') && this.viewOptions.list_columnRendered) { - this.viewOptions.list_columnRendered({ - container: $row, - columnAttr: columns[columnIndex].property, - item: $col, - rowData: rows[rowIndex] - }, function () {}); - } - } - - function renderHeader ($tr, columns, index) { - var chevDown = 'glyphicon-chevron-down'; - var chevron = '.glyphicon.rlc:first'; - var chevUp = 'glyphicon-chevron-up'; - var $div = $('<div class="repeater-list-heading"><span class="glyphicon rlc"></span></div>'); - var checkBoxMarkup = '<div class="repeater-list-heading header-checkbox"><label class="checkbox-custom checkbox-inline">' + - '<input class="sr-only" type="checkbox"></label><div class="clearfix"></div></div>'; - var $header = $('<th></th>'); - var self = this; - var $both, className, sortable, $span, $spans; - - $div.data('fu_item_index', index); - $div.prepend(columns[index].label); - $header.html($div.html()).find('[id]').removeAttr('id'); - - if (columns[index].property !== '@_CHECKBOX_@') { - $header.append($div); - } - else { - $header.append(checkBoxMarkup); - } - - $both = $header.add($div); - $span = $div.find(chevron); - $spans = $span.add($header.find(chevron)); - - if (this.viewOptions.list_actions && columns[index].property === '@_ACTIONS_@') { - var width = this.list_actions_width; - $header.css('width', width); - $div.css('width', width); - } - - className = columns[index].className; - if (className !== undefined) { - $both.addClass(className); - } - - sortable = columns[index].sortable; - if (sortable) { - $both.addClass('sortable'); - $div.on('click.fu.repeaterList', function () { - self.list_sortProperty = (typeof sortable === 'string') ? sortable : columns[index].property; - if ($div.hasClass('sorted')) { - if ($span.hasClass(chevUp)) { - $spans.removeClass(chevUp).addClass(chevDown); - self.list_sortDirection = 'desc'; - } else { - if (!self.viewOptions.list_sortClearing) { - $spans.removeClass(chevDown).addClass(chevUp); - self.list_sortDirection = 'asc'; - } else { - $both.removeClass('sorted'); - $spans.removeClass(chevDown); - self.list_sortDirection = null; - self.list_sortProperty = null; - } - } - - } else { - $tr.find('th, .repeater-list-heading').removeClass('sorted'); - $spans.removeClass(chevDown).addClass(chevUp); - self.list_sortDirection = 'asc'; - $both.addClass('sorted'); - } - - self.render({ - clearInfinite: true, - pageIncrement: null - }); - }); - } - - if (columns[index].sortDirection === 'asc' || columns[index].sortDirection === 'desc') { - $tr.find('th, .repeater-list-heading').removeClass('sorted'); - $both.addClass('sortable sorted'); - if (columns[index].sortDirection === 'asc') { - $spans.addClass(chevUp); - this.list_sortDirection = 'asc'; - } else { - $spans.addClass(chevDown); - this.list_sortDirection = 'desc'; - } - - this.list_sortProperty = (typeof sortable === 'string') ? sortable : columns[index].property; - } - - $tr.append($header); - } - - function renderRow ($tbody, rows, index) { - var $row = $('<tr></tr>'); - var self = this; - var i, l; - var isMulti = this.viewOptions.list_selectable === 'multi'; - var isActions = this.viewOptions.list_actions; - - if (this.viewOptions.list_selectable) { - $row.addClass('selectable'); - $row.attr('tabindex', 0); // allow items to be tabbed to / focused on - $row.data('item_data', rows[index]); - - $row.on('click.fu.repeaterList', function () { - var $item = $(this); - var index = $(this).index(); - index = index + 1; - var $frozenRow = self.$element.find('.frozen-column-wrapper tr:nth-child('+ index +')'); - var $actionsRow = self.$element.find('.actions-column-wrapper tr:nth-child('+ index +')'); - var $checkBox = self.$element.find('.frozen-column-wrapper tr:nth-child('+ index +') .checkbox-inline'); - - if ($item.is('.selected')) { - $item.removeClass('selected'); - if (isMulti){ - $checkBox.checkbox('uncheck'); - $frozenRow.removeClass('selected'); - if (isActions) { - $actionsRow.removeClass('selected'); - } - } - else { - $item.find('.repeater-list-check').remove(); - } - - self.$element.trigger('deselected.fu.repeaterList', $item); - } else { - if (!isMulti) { - self.$canvas.find('.repeater-list-check').remove(); - self.$canvas.find('.repeater-list tbody tr.selected').each(function () { - $(this).removeClass('selected'); - self.$element.trigger('deselected.fu.repeaterList', $(this)); - }); - $item.find('td:first').prepend('<div class="repeater-list-check"><span class="glyphicon glyphicon-ok"></span></div>'); - $item.addClass('selected'); - $frozenRow.addClass('selected'); - } - else { - $checkBox.checkbox('check'); - $item.addClass('selected'); - $frozenRow.addClass('selected'); - if (isActions) { - $actionsRow.addClass('selected'); - } - } - self.$element.trigger('selected.fu.repeaterList', $item); - } - var $selected = self.$canvas.find('.repeater-list-wrapper > table .selected'); - var $actionsColumn = self.$element.find('.table-actions'); - - if ($selected.length > 0) { - $actionsColumn.find('thead .btn').removeAttr('disabled'); - } - else { - $actionsColumn.find('thead .btn').attr('disabled', 'disabled'); - } - }); - - // allow selection via enter key - $row.keyup(function (e) { - if (e.keyCode === 13) { - // triggering a standard click event to be caught by the row click handler above - $row.trigger('click.fu.repeaterList'); - } - }); - } - - if (this.viewOptions.list_actions && !this.viewOptions.list_selectable) { - $row.data('item_data', rows[index]); - } - - $tbody.append($row); - - for (i = 0, l = this.list_columns.length; i < l; i++) { - renderColumn.call(this, $row, rows, index, this.list_columns, i); - } - - if (this.viewOptions.list_rowRendered) { - this.viewOptions.list_rowRendered({ - container: $tbody, - item: $row, - rowData: rows[index] - }, function () {}); - } - } - - function renderTbody ($table, data) { - var $tbody = $table.find('tbody'); - var $empty; - - if ($tbody.length < 1) { - $tbody = $('<tbody data-container="true"></tbody>'); - $table.append($tbody); - } - - if (typeof data.error === 'string' && data.error.length > 0) { - $empty = $('<tr class="empty text-danger"><td colspan="' + this.list_columns.length + '"></td></tr>'); - $empty.find('td').append(data.error); - $tbody.append($empty); - } - else if (data.items && data.items.length < 1) { - $empty = $('<tr class="empty"><td colspan="' + this.list_columns.length + '"></td></tr>'); - $empty.find('td').append(this.viewOptions.list_noItemsHTML); - $tbody.append($empty); - } - } - - function renderThead ($table, data) { - var columns = data.columns || []; - var $thead = $table.find('thead'); - var i, j, l, $tr; - - function differentColumns (oldCols, newCols) { - if (!newCols) { - return false; - } - if (!oldCols || (newCols.length !== oldCols.length)) { - return true; - } - for (i = 0, l = newCols.length; i < l; i++) { - if (!oldCols[i]) { - return true; - } else { - for (j in newCols[i]) { - if (oldCols[i][j] !== newCols[i][j]) { - return true; - } - - } - } - - } - return false; - } - - if (this.list_firstRender || differentColumns(this.list_columns, columns) || $thead.length === 0) { - $thead.remove(); - - if (data.count < 1) { - this.list_noItems = true; - } - - if (this.viewOptions.list_selectable === 'multi' && !this.list_noItems) { - var checkboxColumn = { - label: 'c', - property: '@_CHECKBOX_@', - sortable: false - }; - columns.splice(0, 0, checkboxColumn); - } - - this.list_columns = columns; - this.list_firstRender = false; - this.$loader.removeClass('noHeader'); - - if (this.viewOptions.list_actions && !this.list_noItems){ - var actionsColumn = { - label: this.viewOptions.list_actions.label || '<span class="actions-hidden">a</span>', - property: '@_ACTIONS_@', - sortable: false, - width: this.list_actions_width - }; - columns.push(actionsColumn); - } - - - $thead = $('<thead data-preserve="deep"><tr></tr></thead>'); - $tr = $thead.find('tr'); - for (i = 0, l = columns.length; i < l; i++) { - renderHeader.call(this, $tr, columns, i); - } - $table.prepend($thead); - - if (this.viewOptions.list_selectable === 'multi' && !this.list_noItems) { - //after checkbox column is created need to get width of checkbox column from - //its css class - var checkboxWidth = this.$element.find('.repeater-list-wrapper .header-checkbox').outerWidth(); - var selectColumn = $.grep(columns, function(column){ - return column.property === '@_CHECKBOX_@'; - })[0]; - selectColumn.width = checkboxWidth; - } - sizeColumns.call(this, $tr); - } - } - - function sizeColumns ($tr) { - var auto = []; - var self = this; - var i, l, newWidth, taken, total; - - if (this.viewOptions.list_columnSizing) { - i = 0; - taken = 0; - total = 0; - $tr.find('th').each(function () { - var $th = $(this); - var isLast = ($th.next('th').length === 0); - var width; - if (self.list_columns[i].width !== undefined) { - width = self.list_columns[i].width; - $th.outerWidth(width); - taken += $th.outerWidth(); - total += $th.outerWidth(); - if (!isLast) { - self.list_columns[i]._auto_width = width; - } - else { - $th.outerWidth(''); - } - - } else { - var outerWidth = $th.find('.repeater-list-heading').outerWidth(); - total += $th.outerWidth(); - auto.push({ - col: $th, - index: i, - last: isLast, - minWidth: outerWidth - }); - } - - i++; - }); - - l = auto.length; - - if (l > 0) { - var canvasWidth = this.$canvas.find('.repeater-list-wrapper').outerWidth(); - newWidth = Math.floor((canvasWidth - taken) / l); - for (i = 0; i < l; i++) { - if (auto[i].minWidth > newWidth) { - newWidth = auto[i].minWidth; - } - if (!auto[i].last || total > canvasWidth) { - auto[i].col.outerWidth(newWidth); - this.list_columns[auto[i].index]._auto_width = newWidth; - } - - } - } - } - } - - function specialBrowserClass() { - var ua = window.navigator.userAgent; - var msie = ua.indexOf("MSIE "); - var firefox = ua.indexOf('Firefox'); - - if (msie > 0 ) { - return 'ie-' + parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))); - } else if (firefox > 0) { - return 'firefox'; - } else { - return ''; - } - } - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/repeater-thumbnail.js b/elgg_clean/bower_components/fuelux/js/repeater-thumbnail.js deleted file mode 100755 index 56492415..00000000 --- a/elgg_clean/bower_components/fuelux/js/repeater-thumbnail.js +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Fuel UX Repeater - Thumbnail View Plugin - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery', 'fuelux/repeater'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - if ($.fn.repeater) { - //ADDITIONAL METHODS - $.fn.repeater.Constructor.prototype.thumbnail_clearSelectedItems = function () { - this.$canvas.find('.repeater-thumbnail-cont .selectable.selected').removeClass('selected'); - }; - - $.fn.repeater.Constructor.prototype.thumbnail_getSelectedItems = function () { - var selected = []; - this.$canvas.find('.repeater-thumbnail-cont .selectable.selected').each(function () { - selected.push($(this)); - }); - return selected; - }; - - $.fn.repeater.Constructor.prototype.thumbnail_setSelectedItems = function (items, force) { - var selectable = this.viewOptions.thumbnail_selectable; - var self = this; - var i, $item, l, n; - - //this function is necessary because lint yells when a function is in a loop - function compareItemIndex () { - if (n === items[i].index) { - $item = $(this); - return false; - } else { - n++; - } - } - - //this function is necessary because lint yells when a function is in a loop - function compareItemSelector () { - $item = $(this); - if ($item.is(items[i].selector)) { - selectItem($item, items[i].selected); - } - } - - function selectItem ($itm, select) { - select = (select !== undefined) ? select : true; - if (select) { - if (!force && selectable !== 'multi') { - self.thumbnail_clearSelectedItems(); - } - - $itm.addClass('selected'); - } else { - $itm.removeClass('selected'); - } - } - - if (!$.isArray(items)) { - items = [items]; - } - - if (force === true || selectable === 'multi') { - l = items.length; - } else if (selectable) { - l = (items.length > 0) ? 1 : 0; - } else { - l = 0; - } - - for (i = 0; i < l; i++) { - if (items[i].index !== undefined) { - $item = $(); - n = 0; - this.$canvas.find('.repeater-thumbnail-cont .selectable').each(compareItemIndex); - if ($item.length > 0) { - selectItem($item, items[i].selected); - } - - } else if (items[i].selector) { - this.$canvas.find('.repeater-thumbnail-cont .selectable').each(compareItemSelector); - } - } - }; - - //ADDITIONAL DEFAULT OPTIONS - $.fn.repeater.defaults = $.extend({}, $.fn.repeater.defaults, { - thumbnail_alignment: 'left', - thumbnail_infiniteScroll: false, - thumbnail_itemRendered: null, - thumbnail_noItemsHTML: 'no items found', - thumbnail_selectable: false, - thumbnail_template: '<div class="thumbnail repeater-thumbnail"><img height="75" src="{{src}}" width="65"><span>{{name}}</span></div>' - }); - - //EXTENSION DEFINITION - $.fn.repeater.viewTypes.thumbnail = { - selected: function () { - var infScroll = this.viewOptions.thumbnail_infiniteScroll; - var opts; - if (infScroll) { - opts = (typeof infScroll === 'object') ? infScroll : {}; - this.infiniteScrolling(true, opts); - } - }, - before: function (helpers) { - var alignment = this.viewOptions.thumbnail_alignment; - var $cont = this.$canvas.find('.repeater-thumbnail-cont'); - var data = helpers.data; - var response = {}; - var $empty, validAlignments; - - if ($cont.length < 1) { - $cont = $('<div class="clearfix repeater-thumbnail-cont" data-container="true" data-infinite="true" data-preserve="shallow"></div>'); - if (alignment && alignment !== 'none') { - validAlignments = { - 'center': 1, - 'justify': 1, - 'left': 1, - 'right': 1 - }; - alignment = (validAlignments[alignment]) ? alignment : 'justify'; - $cont.addClass('align-' + alignment); - this.thumbnail_injectSpacers = true; - } else { - this.thumbnail_injectSpacers = false; - } - response.item = $cont; - } else { - response.action = 'none'; - } - - if (data.items && data.items.length < 1) { - $empty = $('<div class="empty"></div>'); - $empty.append(this.viewOptions.thumbnail_noItemsHTML); - $cont.append($empty); - } else { - $cont.find('.empty:first').remove(); - } - - return response; - }, - renderItem: function (helpers) { - var selectable = this.viewOptions.thumbnail_selectable; - var selected = 'selected'; - var self = this; - var $thumbnail = $(fillTemplate(helpers.subset[helpers.index], this.viewOptions.thumbnail_template)); - - if (selectable) { - $thumbnail.addClass('selectable'); - $thumbnail.on('click', function () { - if (!$thumbnail.hasClass(selected)) { - if (selectable !== 'multi') { - self.$canvas.find('.repeater-thumbnail-cont .selectable.selected').each(function () { - var $itm = $(this); - $itm.removeClass(selected); - self.$element.trigger('deselected.fu.repeaterThumbnail', $itm); - }); - } - - $thumbnail.addClass(selected); - self.$element.trigger('selected.fu.repeaterThumbnail', $thumbnail); - } else { - $thumbnail.removeClass(selected); - self.$element.trigger('deselected.fu.repeaterThumbnail', $thumbnail); - } - }); - } - - helpers.container.append($thumbnail); - if (this.thumbnail_injectSpacers) { - $thumbnail.after('<span class="spacer"> </span>'); - } - - if (this.viewOptions.thumbnail_itemRendered) { - this.viewOptions.thumbnail_itemRendered({ - container: helpers.container, - item: $thumbnail, - itemData: helpers.subset[helpers.index] - }, function () {}); - } - - return false; - } - }; - } - - //ADDITIONAL METHODS - function fillTemplate (itemData, template) { - var invalid = false; - - function replace () { - var end, start, val; - - start = template.indexOf('{{'); - end = template.indexOf('}}', start + 2); - - if (start > -1 && end > -1) { - val = $.trim(template.substring(start + 2, end)); - val = (itemData[val] !== undefined) ? itemData[val] : ''; - template = template.substring(0, start) + val + template.substring(end + 2); - } else { - invalid = true; - } - } - - while (!invalid && template.search('{{') >= 0) { - replace(template); - } - - return template; - } - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/repeater.js b/elgg_clean/bower_components/fuelux/js/repeater.js deleted file mode 100755 index 0e5dee84..00000000 --- a/elgg_clean/bower_components/fuelux/js/repeater.js +++ /dev/null @@ -1,807 +0,0 @@ -/* - * Fuel UX Repeater - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery', 'fuelux/combobox', 'fuelux/infinite-scroll', 'fuelux/search', 'fuelux/selectlist'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.repeater; - - // REPEATER CONSTRUCTOR AND PROTOTYPE - - var Repeater = function (element, options) { - var self = this; - var $btn, currentView; - - this.$element = $(element); - - this.$canvas = this.$element.find('.repeater-canvas'); - this.$count = this.$element.find('.repeater-count'); - this.$end = this.$element.find('.repeater-end'); - this.$filters = this.$element.find('.repeater-filters'); - this.$loader = this.$element.find('.repeater-loader'); - this.$pageSize = this.$element.find('.repeater-itemization .selectlist'); - this.$nextBtn = this.$element.find('.repeater-next'); - this.$pages = this.$element.find('.repeater-pages'); - this.$prevBtn = this.$element.find('.repeater-prev'); - this.$primaryPaging = this.$element.find('.repeater-primaryPaging'); - this.$search = this.$element.find('.repeater-search').find('.search'); - this.$secondaryPaging = this.$element.find('.repeater-secondaryPaging'); - this.$start = this.$element.find('.repeater-start'); - this.$viewport = this.$element.find('.repeater-viewport'); - this.$views = this.$element.find('.repeater-views'); - - this.currentPage = 0; - this.currentView = null; - this.infiniteScrollingCallback = function () {}; - this.infiniteScrollingCont = null; - this.infiniteScrollingEnabled = false; - this.infiniteScrollingEnd = null; - this.infiniteScrollingOptions = {}; - this.lastPageInput = 0; - this.options = $.extend({}, $.fn.repeater.defaults, options); - this.pageIncrement = 0;// store direction navigated - this.resizeTimeout = {}; - this.stamp = new Date().getTime() + (Math.floor(Math.random() * 100) + 1); - this.storedDataSourceOpts = null; - this.viewOptions = {}; - this.viewType = null; - - this.$filters.selectlist(); - this.$pageSize.selectlist(); - this.$primaryPaging.find('.combobox').combobox(); - this.$search.search(); - - this.$filters.on('changed.fu.selectlist', function (e, value) { - self.$element.trigger('filtered.fu.repeater', value); - self.render({ - clearInfinite: true, - pageIncrement: null - }); - }); - this.$nextBtn.on('click.fu.repeater', $.proxy(this.next, this)); - this.$pageSize.on('changed.fu.selectlist', function (e, value) { - self.$element.trigger('pageSizeChanged.fu.repeater', value); - self.render({ - pageIncrement: null - }); - }); - this.$prevBtn.on('click.fu.repeater', $.proxy(this.previous, this)); - this.$primaryPaging.find('.combobox').on('changed.fu.combobox', function (evt, data) { - self.$element.trigger('pageChanged.fu.repeater', [data.text, data]); - self.pageInputChange(data.text); - }); - this.$search.on('searched.fu.search cleared.fu.search', function (e, value) { - self.$element.trigger('searchChanged.fu.repeater', value); - self.render({ - clearInfinite: true, - pageIncrement: null - }); - }); - this.$secondaryPaging.on('blur.fu.repeater', function (e) { - self.pageInputChange(self.$secondaryPaging.val()); - }); - this.$secondaryPaging.on('keyup', function (e) { - if (e.keyCode === 13) { - self.pageInputChange(self.$secondaryPaging.val()); - } - }); - this.$views.find('input').on('change.fu.repeater', $.proxy(this.viewChanged, this)); - - // ID needed since event is bound to instance - $(window).on('resize.fu.repeater.' + this.stamp, function (event) { - clearTimeout(self.resizeTimeout); - self.resizeTimeout = setTimeout(function () { - self.resize(); - self.$element.trigger('resized.fu.repeater'); - }, 75); - }); - - this.$loader.loader(); - this.$loader.loader('pause'); - if (this.options.defaultView !== -1) { - currentView = this.options.defaultView; - } else { - $btn = this.$views.find('label.active input'); - currentView = ($btn.length > 0) ? $btn.val() : 'list'; - } - - this.setViewOptions(currentView); - - this.initViewTypes(function () { - self.resize(); - self.$element.trigger('resized.fu.repeater'); - self.render({ - changeView: currentView - }); - }); - }; - - Repeater.prototype = { - constructor: Repeater, - - clear: function (options) { - var viewChanged, viewTypeObj; - - function scan (cont) { - var keep = []; - cont.children().each(function () { - var item = $(this); - var pres = item.attr('data-preserve'); - if (pres === 'deep') { - item.detach(); - keep.push(item); - } else if (pres === 'shallow') { - scan(item); - item.detach(); - keep.push(item); - } - }); - cont.empty(); - cont.append(keep); - } - - options = options || {}; - - if (!options.preserve) { - //Just trash everything because preserve is false - this.$canvas.empty(); - } else if (!this.infiniteScrollingEnabled || options.clearInfinite) { - //Preserve clear only if infiniteScrolling is disabled or if specifically told to do so - scan(this.$canvas); - } //Otherwise don't clear because infiniteScrolling is enabled - - //If viewChanged and current viewTypeObj has a cleared function, call it - viewChanged = (options.viewChanged !== undefined) ? options.viewChanged : false; - viewTypeObj = $.fn.repeater.viewTypes[this.viewType] || {}; - if (!viewChanged && viewTypeObj.cleared) { - viewTypeObj.cleared.call(this, { - options: options - }); - } - }, - - clearPreservedDataSourceOptions: function () { - this.storedDataSourceOpts = null; - }, - - destroy: function () { - var markup; - // set input value attrbute in markup - this.$element.find('input').each(function () { - $(this).attr('value', $(this).val()); - }); - - // empty elements to return to original markup - this.$canvas.empty(); - markup = this.$element[0].outerHTML; - - // destroy components and remove leftover - this.$element.find('.combobox').combobox('destroy'); - this.$element.find('.selectlist').selectlist('destroy'); - this.$element.find('.search').search('destroy'); - if (this.infiniteScrollingEnabled) { - $(this.infiniteScrollingCont).infinitescroll('destroy'); - } - - this.$element.remove(); - - // any external events - $(window).off('resize.fu.repeater.' + this.stamp); - - return markup; - }, - - disable: function() { - var disable = 'disable'; - var disabled = 'disabled'; - - this.$search.search(disable); - this.$filters.selectlist(disable); - this.$views.find('label').attr(disabled, disabled); - this.$pageSize.selectlist(disable); - this.$primaryPaging.find('.combobox').combobox(disable); - this.$secondaryPaging.attr(disabled, disabled); - this.$prevBtn.attr(disabled, disabled); - this.$nextBtn.attr(disabled, disabled); - - this.$element.addClass('disabled'); - this.$element.trigger('disabled.fu.repeater'); - }, - - enable: function() { - var disabled = 'disabled'; - var enable = 'enable'; - var pageEnd = 'page-end'; - - this.$search.search(enable); - this.$filters.selectlist(enable); - this.$views.find('label').removeAttr(disabled); - this.$pageSize.selectlist('enable'); - this.$primaryPaging.find('.combobox').combobox(enable); - this.$secondaryPaging.removeAttr(disabled); - - if(!this.$prevBtn.hasClass(pageEnd)){ - this.$prevBtn.removeAttr(disabled); - } - if(!this.$nextBtn.hasClass(pageEnd)){ - this.$nextBtn.removeAttr(disabled); - } - - // is 0 or 1 pages, if using $primaryPaging (combobox) - // if using selectlist allow user to use selectlist to select 0 or 1 - if (this.$prevBtn.hasClass(pageEnd) && this.$nextBtn.hasClass(pageEnd)) { - this.$primaryPaging.combobox('disable'); - } - - //if there are no items - if (parseInt(this.$count.html()) !== 0) { - this.$pageSize.selectlist('enable'); - } - else { - this.$pageSize.selectlist('disable'); - } - - this.$element.removeClass('disabled'); - this.$element.trigger('enabled.fu.repeater'); - }, - - getDataOptions: function (options) { - var dataSourceOptions = {}; - var opts = {}; - var val, viewDataOpts; - - options = options || {}; - - opts.filter = (this.$filters.length > 0) ? this.$filters.selectlist('selectedItem') : { - text: 'All', - value: 'all' - }; - opts.view = this.currentView; - - if (!this.infiniteScrollingEnabled) { - opts.pageSize = (this.$pageSize.length > 0) ? parseInt(this.$pageSize.selectlist('selectedItem').value, 10) : 25; - } - - if (options.pageIncrement !== undefined) { - if (options.pageIncrement === null) { - this.currentPage = 0; - } else { - this.currentPage += options.pageIncrement; - } - - } - - opts.pageIndex = this.currentPage; - - val = (this.$search.length > 0) ? this.$search.find('input').val() : ''; - if (val !== '') { - opts.search = val; - } - - if (options.dataSourceOptions) { - dataSourceOptions = options.dataSourceOptions; - if (options.preserveDataSourceOptions) { - this.storedDataSourceOpts = (this.storedDataSourceOpts) ? $.extend(this.storedDataSourceOpts, dataSourceOptions) : dataSourceOptions; - } - } - - if (this.storedDataSourceOpts) { - dataSourceOptions = $.extend(this.storedDataSourceOpts, dataSourceOptions); - } - - viewDataOpts = $.fn.repeater.viewTypes[this.viewType] || {}; - viewDataOpts = viewDataOpts.dataOptions; - if (viewDataOpts) { - viewDataOpts = viewDataOpts.call(this, opts); - opts = $.extend(viewDataOpts, dataSourceOptions); - } else { - opts = $.extend(opts, dataSourceOptions); - } - - return opts; - }, - - infiniteScrolling: function (enable, options) { - var footer = this.$element.find('.repeater-footer'); - var viewport = this.$element.find('.repeater-viewport'); - var cont, data; - - options = options || {}; - - if (enable) { - this.infiniteScrollingEnabled = true; - this.infiniteScrollingEnd = options.end; - delete options.dataSource; - delete options.end; - this.infiniteScrollingOptions = options; - viewport.css({ - height: viewport.height() + footer.outerHeight() - }); - footer.hide(); - } else { - cont = this.infiniteScrollingCont; - data = cont.data(); - delete data.infinitescroll; - cont.off('scroll'); - cont.removeClass('infinitescroll'); - - this.infiniteScrollingCont = null; - this.infiniteScrollingEnabled = false; - this.infiniteScrollingEnd = null; - this.infiniteScrollingOptions = {}; - viewport.css({ - height: viewport.height() - footer.outerHeight() - }); - footer.show(); - } - }, - - infiniteScrollPaging: function (data, options) { - var end = (this.infiniteScrollingEnd !== true) ? this.infiniteScrollingEnd : undefined; - var page = data.page; - var pages = data.pages; - - this.currentPage = (page !== undefined) ? page : NaN; - - if ((this.currentPage + 1) >= pages) { - this.infiniteScrollingCont.infinitescroll('end', end); - } - }, - - initInfiniteScrolling: function () { - var cont = this.$canvas.find('[data-infinite="true"]:first'); - var opts, self; - - cont = (cont.length < 1) ? this.$canvas : cont; - if (cont.data('fu.infinitescroll')) { - cont.infinitescroll('enable'); - } else { - self = this; - opts = $.extend({}, this.infiniteScrollingOptions); - opts.dataSource = function (helpers, callback) { - self.infiniteScrollingCallback = callback; - self.render({ - pageIncrement: 1 - }); - }; - cont.infinitescroll(opts); - this.infiniteScrollingCont = cont; - } - }, - - initViewTypes: function (callback) { - var self = this; - var viewTypes = []; - var i, viewTypesLength; - - function init (index) { - function next () { - index++; - if (index < viewTypesLength) { - init(index); - } else { - callback(); - } - } - - if (viewTypes[index].initialize) { - viewTypes[index].initialize.call(self, {}, function () { - next(); - }); - } else { - next(); - } - } - - for (i in $.fn.repeater.viewTypes) { - viewTypes.push($.fn.repeater.viewTypes[i]); - } - viewTypesLength = viewTypes.length; - if (viewTypesLength > 0) { - init(0); - } else { - callback(); - } - }, - - itemization: function (data) { - this.$count.html((data.count!==undefined) ? data.count : '?'); - this.$end.html((data.end!==undefined) ? data.end : '?'); - this.$start.html((data.start!==undefined) ? data.start : '?'); - }, - - next: function (e) { - var d = 'disabled'; - this.$nextBtn.attr(d, d); - this.$prevBtn.attr(d, d); - this.pageIncrement = 1; - this.$element.trigger('nextClicked.fu.repeater'); - this.render({ - pageIncrement: this.pageIncrement - }); - }, - - pageInputChange: function (val) { - var pageInc; - if (val !== this.lastPageInput) { - this.lastPageInput = val; - val = parseInt(val, 10) - 1; - pageInc = val - this.currentPage; - this.$element.trigger('pageChanged.fu.repeater', val); - this.render({ - pageIncrement: pageInc - }); - } - }, - - pagination: function (data) { - var act = 'active'; - var dsbl = 'disabled'; - var page = data.page; - var pageEnd = 'page-end'; - var pages = data.pages; - var dropMenu, i, l; - var currenPageOutput; - - this.currentPage = (page !== undefined) ? page : NaN; - - this.$primaryPaging.removeClass(act); - this.$secondaryPaging.removeClass(act); - - // set paging to 0 if total pages is 0, otherwise use one-based index - currenPageOutput = pages === 0 ? 0 : this.currentPage + 1; - - if (pages <= this.viewOptions.dropPagingCap) { - this.$primaryPaging.addClass(act); - dropMenu = this.$primaryPaging.find('.dropdown-menu'); - dropMenu.empty(); - for (i = 0; i < pages; i++) { - l = i + 1; - dropMenu.append('<li data-value="' + l + '"><a href="#">' + l + '</a></li>'); - } - - this.$primaryPaging.find('input.form-control').val(currenPageOutput); - } else { - this.$secondaryPaging.addClass(act); - this.$secondaryPaging.val(currenPageOutput); - } - - this.lastPageInput = this.currentPage + 1 + ''; - - this.$pages.html('' + pages); - - // this is not the last page - if ((this.currentPage + 1) < pages) { - this.$nextBtn.removeAttr(dsbl); - this.$nextBtn.removeClass(pageEnd); - } else { - this.$nextBtn.attr(dsbl, dsbl); - this.$nextBtn.addClass(pageEnd); - } - - // this is not the first page - if ((this.currentPage - 1) >= 0) { - this.$prevBtn.removeAttr(dsbl); - this.$prevBtn.removeClass(pageEnd); - } else { - this.$prevBtn.attr(dsbl, dsbl); - this.$prevBtn.addClass(pageEnd); - } - - // return focus to next/previous buttons after navigating - if (this.pageIncrement !== 0) { - if (this.pageIncrement > 0) { - if (this.$nextBtn.is(':disabled')) { - // if you can't focus, go the other way - this.$prevBtn.focus(); - } else { - this.$nextBtn.focus(); - } - - } else { - if (this.$prevBtn.is(':disabled')) { - // if you can't focus, go the other way - this.$nextBtn.focus(); - } else { - this.$prevBtn.focus(); - } - - } - - } - }, - - previous: function () { - var d = 'disabled'; - this.$nextBtn.attr(d, d); - this.$prevBtn.attr(d, d); - this.pageIncrement = -1; - this.$element.trigger('previousClicked.fu.repeater'); - this.render({ - pageIncrement: this.pageIncrement - }); - }, - - render: function (options) { - var self = this; - var viewChanged = false; - var viewTypeObj = $.fn.repeater.viewTypes[this.viewType] || {}; - var dataOptions, prevView; - - options = options || {}; - this.disable(); - - if (options.changeView && (this.currentView !== options.changeView)) { - prevView = this.currentView; - this.currentView = options.changeView; - this.viewType = this.currentView.split('.')[0]; - this.setViewOptions(this.currentView); - this.$element.attr('data-currentview', this.currentView); - this.$element.attr('data-viewtype', this.viewType); - viewChanged = true; - options.viewChanged = viewChanged; - - this.$element.trigger('viewChanged.fu.repeater', this.currentView); - - if (this.infiniteScrollingEnabled) { - self.infiniteScrolling(false); - } - - viewTypeObj = $.fn.repeater.viewTypes[this.viewType] || {}; - if (viewTypeObj.selected) { - viewTypeObj.selected.call(this, { - prevView: prevView - }); - } - } - - options.preserve = (options.preserve !== undefined) ? options.preserve : !viewChanged; - this.clear(options); - - if (!this.infiniteScrollingEnabled || (this.infiniteScrollingEnabled && viewChanged)) { - this.$loader.show().loader('play'); - } - - dataOptions = this.getDataOptions(options); - - this.viewOptions.dataSource(dataOptions, function (data) { - data = data || {}; - - if (self.infiniteScrollingEnabled) { - self.infiniteScrollingCallback({}); - } else { - self.itemization(data); - self.pagination(data); - } - - self.runRenderer(viewTypeObj, data, function () { - if (self.infiniteScrollingEnabled) { - if (viewChanged || options.clearInfinite) { - self.initInfiniteScrolling(); - } - - self.infiniteScrollPaging(data, options); - } - - self.$loader.hide().loader('pause'); - self.$element.trigger('rendered.fu.repeater', { - data: data, - options: dataOptions, - renderOptions: options - }); - - //for maintaining support of 'loaded' event - self.$element.trigger('loaded.fu.repeater', dataOptions); - - self.enable(); - }); - }); - }, - - resize: function () { - var staticHeight = (this.viewOptions.staticHeight === -1) ? this.$element.attr('data-staticheight') : this.viewOptions.staticHeight; - var viewTypeObj = {}; - var height, viewportMargins; - - if (this.viewType) { - viewTypeObj = $.fn.repeater.viewTypes[this.viewType] || {}; - } - - if (staticHeight !== undefined && staticHeight !== false && staticHeight !== 'false') { - this.$canvas.addClass('scrolling'); - viewportMargins = { - bottom: this.$viewport.css('margin-bottom'), - top: this.$viewport.css('margin-top') - }; - height = ((staticHeight === 'true' || staticHeight === true) ? this.$element.height() : parseInt(staticHeight, 10)) - - this.$element.find('.repeater-header').outerHeight() - - this.$element.find('.repeater-footer').outerHeight() - - ((viewportMargins.bottom === 'auto') ? 0 : parseInt(viewportMargins.bottom, 10)) - - ((viewportMargins.top === 'auto') ? 0 : parseInt(viewportMargins.top, 10)); - this.$viewport.outerHeight(height); - } else { - this.$canvas.removeClass('scrolling'); - } - - if (viewTypeObj.resize) { - viewTypeObj.resize.call(this, { - height: this.$element.outerHeight(), - width: this.$element.outerWidth() - }); - } - }, - - runRenderer: function (viewTypeObj, data, callback) { - var $container, i, l, response, repeat, subset; - - function addItem ($parent, resp) { - var action; - if (resp) { - action = (resp.action) ? resp.action : 'append'; - if (action !== 'none' && resp.item !== undefined) { - $parent = (resp.container !== undefined) ? $(resp.container) : $parent; - $parent[action](resp.item); - } - } - } - - if (!viewTypeObj.render) { - if (viewTypeObj.before) { - response = viewTypeObj.before.call(this, { - container: this.$canvas, - data: data - }); - addItem(this.$canvas, response); - } - - $container = this.$canvas.find('[data-container="true"]:last'); - $container = ($container.length > 0) ? $container : this.$canvas; - - if (viewTypeObj.renderItem) { - repeat = viewTypeObj.repeat || 'data.items'; - repeat = repeat.split('.'); - if (repeat[0] === 'data' || repeat[0] === 'this') { - subset = (repeat[0] === 'this') ? this : data; - repeat.shift(); - } else { - repeat = []; - subset = []; - if (window.console && window.console.warn) { - window.console.warn('WARNING: Repeater plugin "repeat" value must start with either "data" or "this"'); - } - } - - for (i = 0, l = repeat.length; i < l; i++) { - if (subset[repeat[i]] !== undefined){ - subset = subset[repeat[i]]; - } else { - subset = []; - if (window.console && window.console.warn) { - window.console.warn('WARNING: Repeater unable to find property to iterate renderItem on.'); - } - break; - } - } - - for (i = 0, l = subset.length; i < l; i++) { - response = viewTypeObj.renderItem.call(this, { - container: $container, - data: data, - index: i, - subset: subset - }); - addItem($container, response); - } - } - - if (viewTypeObj.after) { - response = viewTypeObj.after.call(this, { - container: this.$canvas, - data: data - }); - addItem(this.$canvas, response); - } - - callback(); - } else { - viewTypeObj.render.call(this, { - container: this.$canvas, - data: data - }, function(){ - callback(); - }); - } - - }, - - setViewOptions: function (curView) { - var opts = {}; - var viewName = curView.split('.')[1]; - - if (this.options.views) { - opts = this.options.views[viewName] || this.options.views[curView] || {}; - } else { - opts = {}; - } - - this.viewOptions = $.extend({}, this.options, opts); - }, - - viewChanged: function (e) { - var $selected = $(e.target); - var val = $selected.val(); - this.render({ - changeView: val, - pageIncrement: null - }); - } - }; - - // REPEATER PLUGIN DEFINITION - - $.fn.repeater = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.repeater'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.repeater', (data = new Repeater(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.repeater.defaults = { - dataSource: function (options, callback) { - callback({ count: 0, end: 0, items: [], page: 0, pages: 1, start: 0 }); - }, - defaultView: -1, //should be a string value. -1 means it will grab the active view from the view controls - dropPagingCap: 10, - staticHeight: -1, //normally true or false. -1 means it will look for data-staticheight on the element - views: null //can be set to an object to configure multiple views of the same type - }; - - $.fn.repeater.viewTypes = {}; - - $.fn.repeater.Constructor = Repeater; - - $.fn.repeater.noConflict = function () { - $.fn.repeater = old; - return this; - }; - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/scheduler.js b/elgg_clean/bower_components/fuelux/js/scheduler.js deleted file mode 100644 index 66e062b1..00000000 --- a/elgg_clean/bower_components/fuelux/js/scheduler.js +++ /dev/null @@ -1,700 +0,0 @@ -/* - * Fuel UX Scheduler - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery', 'fuelux/combobox', 'fuelux/datepicker', 'fuelux/radio', 'fuelux/selectlist', 'fuelux/spinbox'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery'), require('./combobox'), require('./datepicker'), - require('./radio'), require('./selectlist'), require('./spinbox') ); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - if (!$.fn.combobox || !$.fn.datepicker || !$.fn.radio || !$.fn.selectlist || !$.fn.spinbox) { - throw new Error('Fuel UX scheduler control requires combobox, datepicker, radio, selectlist, and spinbox.'); - } - - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.scheduler; - - // SCHEDULER CONSTRUCTOR AND PROTOTYPE - - var Scheduler = function (element, options) { - var self = this; - - this.$element = $(element); - this.options = $.extend({}, $.fn.scheduler.defaults, options); - - // cache elements - this.$startDate = this.$element.find('.start-datetime .start-date'); - this.$startTime = this.$element.find('.start-datetime .start-time'); - - this.$timeZone = this.$element.find('.timezone-container .timezone'); - - this.$repeatIntervalPanel = this.$element.find('.repeat-every-panel'); - this.$repeatIntervalSelect = this.$element.find('.repeat-options'); - - this.$repeatIntervalSpinbox = this.$element.find('.repeat-every'); - this.$repeatIntervalTxt = this.$element.find('.repeat-every-text'); - - this.$end = this.$element.find('.repeat-end'); - this.$endSelect = this.$end.find('.end-options'); - this.$endAfter = this.$end.find('.end-after'); - this.$endDate = this.$end.find('.end-on-date'); - - // panels - this.$recurrencePanels = this.$element.find('.repeat-panel'); - - - this.$repeatIntervalSelect.selectlist(); - - //initialize sub-controls - this.$element.find('.selectlist').selectlist(); - this.$startDate.datepicker(this.options.startDateOptions); - this.$startTime.combobox(); - // init start time - if (this.$startTime.find('input').val() === '') { - this.$startTime.combobox('selectByIndex', 0); - } - - // every 0 days/hours doesn't make sense, change if not set - if (this.$repeatIntervalSpinbox.find('input').val() === '0') { - this.$repeatIntervalSpinbox.spinbox({ - 'value': 1, - 'min': 1, - 'limitToStep': true - }); - } else { - this.$repeatIntervalSpinbox.spinbox({ - 'min': 1, - 'limitToStep': true - }); - } - - this.$endAfter.spinbox({ - 'value': 1, - 'min': 1, - 'limitToStep': true - }); - this.$endDate.datepicker(this.options.endDateOptions); - this.$element.find('.radio-custom').radio(); - - // bind events: 'change' is a Bootstrap JS fired event - this.$repeatIntervalSelect.on('changed.fu.selectlist', $.proxy(this.repeatIntervalSelectChanged, this)); - this.$endSelect.on('changed.fu.selectlist', $.proxy(this.endSelectChanged, this)); - this.$element.find('.repeat-days-of-the-week .btn-group .btn').on('change.fu.scheduler', function (e, data) { - self.changed(e, data, true); - }); - this.$element.find('.combobox').on('changed.fu.combobox', $.proxy(this.changed, this)); - this.$element.find('.datepicker').on('changed.fu.datepicker', $.proxy(this.changed, this)); - this.$element.find('.datepicker').on('dateClicked.fu.datepicker', $.proxy(this.changed, this)); - this.$element.find('.selectlist').on('changed.fu.selectlist', $.proxy(this.changed, this)); - this.$element.find('.spinbox').on('changed.fu.spinbox', $.proxy(this.changed, this)); - this.$element.find('.repeat-monthly .radio-custom, .repeat-yearly .radio-custom').on('change.fu.scheduler', $.proxy(this.changed, this)); - }; - - Scheduler.prototype = { - constructor: Scheduler, - - destroy: function () { - var markup; - // set input value attribute - this.$element.find('input').each(function () { - $(this).attr('value', $(this).val()); - }); - - // empty elements to return to original markup and store - this.$element.find('.datepicker .calendar').empty(); - - markup = this.$element[0].outerHTML; - - // destroy components - this.$element.find('.combobox').combobox('destroy'); - this.$element.find('.datepicker').datepicker('destroy'); - this.$element.find('.selectlist').selectlist('destroy'); - this.$element.find('.spinbox').spinbox('destroy'); - this.$element.find('.radio-custom').radio('destroy'); - this.$element.remove(); - - // any external bindings - // [none] - - return markup; - }, - - changed: function (e, data, propagate) { - if (!propagate) { - e.stopPropagation(); - } - - this.$element.trigger('changed.fu.scheduler', { - data: (data !== undefined) ? data : $(e.currentTarget).data(), - originalEvent: e, - value: this.getValue() - }); - }, - - disable: function () { - this.toggleState('disable'); - }, - - enable: function () { - this.toggleState('enable'); - }, - - setUtcTime: function (d, t, offset) { - var date = d.split('-'); - var time = t.split(':'); - function z(n) { - return (n < 10 ? '0' : '') + n; - } - - var utcDate = new Date(Date.UTC(date[0], (date[1] - 1), date[2], time[0], time[1], (time[2] ? time[2] : 0))); - - if (offset === 'Z') { - utcDate.setUTCHours(utcDate.getUTCHours() + 0); - } else { - var re1 = '(.)';// Any Single Character 1 - var re2 = '.*?';// Non-greedy match on filler - var re3 = '\\d';// Uninteresting: d - var re4 = '.*?';// Non-greedy match on filler - var re5 = '(\\d)';// Any Single Digit 1 - - var p = new RegExp(re1 + re2 + re3 + re4 + re5, ["i"]); - var m = p.exec(offset); - if (m !== null) { - var c1 = m[1]; - var d1 = m[2]; - - var modifier = (c1 === '+') ? 1 : -1; - - utcDate.setUTCHours(utcDate.getUTCHours() + (modifier * parseInt(d1, 10))); - } - - } - - var localDifference = utcDate.getTimezoneOffset(); - utcDate.setMinutes(localDifference); - return utcDate; - }, - - // called when the end range changes - // (Never, After, On date) - endSelectChanged: function (e, data) { - var selectedItem, val; - - if (!data) { - selectedItem = this.$endSelect.selectlist('selectedItem'); - val = selectedItem.value; - } else { - val = data.value; - } - - // hide all panels - this.$endAfter.parent().addClass('hidden'); - this.$endAfter.parent().attr('aria-hidden', 'true'); - - this.$endDate.parent().addClass('hidden'); - this.$endDate.parent().attr('aria-hidden', 'true'); - - if (val === 'after') { - this.$endAfter.parent().removeClass('hide hidden'); // hide is deprecated - this.$endAfter.parent().attr('aria-hidden', 'false'); - } else if (val === 'date') { - this.$endDate.parent().removeClass('hide hidden'); // hide is deprecated - this.$endDate.parent().attr('aria-hidden', 'false'); - } - }, - - getValue: function () { - // FREQ = frequency (secondly, minutely, hourly, daily, weekdays, weekly, monthly, yearly) - // BYDAY = when picking days (MO,TU,WE,etc) - // BYMONTH = when picking months (Jan,Feb,March) - note the values should be 1,2,3... - // BYMONTHDAY = when picking days of the month (1,2,3...) - // BYSETPOS = when picking First,Second,Third,Fourth,Last (1,2,3,4,-1) - - var interval = this.$repeatIntervalSpinbox.spinbox('value'); - var pattern = ''; - var repeat = this.$repeatIntervalSelect.selectlist('selectedItem').value; - var startTime; - - if (this.$startTime.combobox('selectedItem').value) { - startTime = this.$startTime.combobox('selectedItem').value; - startTime = startTime.toLowerCase(); - - } else { - startTime = this.$startTime.combobox('selectedItem').text.toLowerCase(); - } - - var timeZone = this.$timeZone.selectlist('selectedItem'); - var getFormattedDate; - - getFormattedDate = function (dateObj, dash) { - var fdate = ''; - var item; - - fdate += dateObj.getFullYear(); - fdate += dash; - item = dateObj.getMonth() + 1;//because 0 indexing makes sense when dealing with months /sarcasm - fdate += (item < 10) ? '0' + item : item; - fdate += dash; - item = dateObj.getDate(); - fdate += (item < 10) ? '0' + item : item; - - return fdate; - }; - - var day, days, hasAm, hasPm, month, pos, startDateTime, type; - - startDateTime = '' + getFormattedDate(this.$startDate.datepicker('getDate'), '-'); - - startDateTime += 'T'; - hasAm = (startTime.search('am') >= 0); - hasPm = (startTime.search('pm') >= 0); - startTime = $.trim(startTime.replace(/am/g, '').replace(/pm/g, '')).split(':'); - startTime[0] = parseInt(startTime[0], 10); - startTime[1] = parseInt(startTime[1], 10); - if (hasAm && startTime[0] > 11) { - startTime[0] = 0; - } else if (hasPm && startTime[0] < 12) { - startTime[0] += 12; - } - - startDateTime += (startTime[0] < 10) ? '0' + startTime[0] : startTime[0]; - startDateTime += ':'; - startDateTime += (startTime[1] < 10) ? '0' + startTime[1] : startTime[1]; - - startDateTime += (timeZone.offset === '+00:00') ? 'Z' : timeZone.offset; - - if (repeat === 'none') { - pattern = 'FREQ=DAILY;INTERVAL=1;COUNT=1;'; - } else if (repeat === 'secondly') { - pattern = 'FREQ=SECONDLY;'; - pattern += 'INTERVAL=' + interval + ';'; - } else if (repeat === 'minutely') { - pattern = 'FREQ=MINUTELY;'; - pattern += 'INTERVAL=' + interval + ';'; - } else if (repeat === 'hourly') { - pattern = 'FREQ=HOURLY;'; - pattern += 'INTERVAL=' + interval + ';'; - } else if (repeat === 'daily') { - pattern += 'FREQ=DAILY;'; - pattern += 'INTERVAL=' + interval + ';'; - } else if (repeat === 'weekdays') { - pattern += 'FREQ=DAILY;'; - pattern += 'BYDAY=MO,TU,WE,TH,FR;'; - pattern += 'INTERVAL=1;'; - } else if (repeat === 'weekly') { - days = []; - this.$element.find('.repeat-days-of-the-week .btn-group input:checked').each(function () { - days.push($(this).data().value); - }); - - pattern += 'FREQ=WEEKLY;'; - pattern += 'BYDAY=' + days.join(',') + ';'; - pattern += 'INTERVAL=' + interval + ';'; - } else if (repeat === 'monthly') { - pattern += 'FREQ=MONTHLY;'; - pattern += 'INTERVAL=' + interval + ';'; - type = this.$element.find('input[name=repeat-monthly]:checked').val(); - - if (type === 'bymonthday') { - day = parseInt(this.$element.find('.repeat-monthly-date .selectlist').selectlist('selectedItem').text, 10); - pattern += 'BYMONTHDAY=' + day + ';'; - } else if (type === 'bysetpos') { - days = this.$element.find('.repeat-monthly-day .month-days').selectlist('selectedItem').value; - pos = this.$element.find('.repeat-monthly-day .month-day-pos').selectlist('selectedItem').value; - pattern += 'BYDAY=' + days + ';'; - pattern += 'BYSETPOS=' + pos + ';'; - } - - } else if (repeat === 'yearly') { - pattern += 'FREQ=YEARLY;'; - type = this.$element.find('input[name=repeat-yearly]:checked').val(); - - if (type === 'bymonthday') { - // there are multiple .year-month classed elements in scheduler markup - month = this.$element.find('.repeat-yearly-date .year-month').selectlist('selectedItem').value; - day = this.$element.find('.repeat-yearly-date .year-month-day').selectlist('selectedItem').text; - pattern += 'BYMONTH=' + month + ';'; - pattern += 'BYMONTHDAY=' + day + ';'; - } else if (type === 'bysetpos') { - days = this.$element.find('.repeat-yearly-day .year-month-days').selectlist('selectedItem').value; - pos = this.$element.find('.repeat-yearly-day .year-month-day-pos').selectlist('selectedItem').value; - // there are multiple .year-month classed elements in scheduler markup - month = this.$element.find('.repeat-yearly-day .year-month').selectlist('selectedItem').value; - - pattern += 'BYDAY=' + days + ';'; - pattern += 'BYSETPOS=' + pos + ';'; - pattern += 'BYMONTH=' + month + ';'; - } - - } - - var end = this.$endSelect.selectlist('selectedItem').value; - var duration = ''; - - // if both UNTIL and COUNT are not specified, the recurrence will repeat forever - // http://tools.ietf.org/html/rfc2445#section-4.3.10 - if (repeat !== 'none') { - if (end === 'after') { - duration = 'COUNT=' + this.$endAfter.spinbox('value') + ';'; - } else if (end === 'date') { - duration = 'UNTIL=' + getFormattedDate(this.$endDate.datepicker('getDate'), '') + ';'; - } - - } - - pattern += duration; - // remove trailing semicolon - pattern = pattern.substring(pattern.length - 1) === ';' ? pattern.substring(0, pattern.length - 1) : pattern; - - var data = { - startDateTime: startDateTime, - timeZone: timeZone, - recurrencePattern: pattern - }; - - return data; - }, - - // called when the repeat interval changes - // (None, Hourly, Daily, Weekdays, Weekly, Monthly, Yearly - repeatIntervalSelectChanged: function (e, data) { - var selectedItem, val, txt; - - if (!data) { - selectedItem = this.$repeatIntervalSelect.selectlist('selectedItem'); - val = selectedItem.value || ""; - txt = selectedItem.text || ""; - } else { - val = data.value; - txt = data.text; - } - - // set the text - this.$repeatIntervalTxt.text(txt); - - switch (val.toLowerCase()) { - case 'hourly': - case 'daily': - case 'weekly': - case 'monthly': - this.$repeatIntervalPanel.removeClass('hide hidden'); // hide is deprecated - this.$repeatIntervalPanel.attr('aria-hidden', 'false'); - break; - default: - this.$repeatIntervalPanel.addClass('hidden'); // hide is deprecated - this.$repeatIntervalPanel.attr('aria-hidden', 'true'); - break; - } - - // hide all panels - this.$recurrencePanels.addClass('hidden'); - this.$recurrencePanels.attr('aria-hidden', 'true'); - - // show panel for current selection - this.$element.find('.repeat-' + val).removeClass('hide hidden'); // hide is deprecated - this.$element.find('.repeat-' + val).attr('aria-hidden', 'false'); - - // the end selection should only be shown when - // the repeat interval is not "None (run once)" - if (val === 'none') { - this.$end.addClass('hidden'); - this.$end.attr('aria-hidden', 'true'); - } else { - this.$end.removeClass('hide hidden'); // hide is deprecated - this.$end.attr('aria-hidden', 'false'); - } - }, - - setValue: function (options) { - var hours, i, item, l, minutes, period, recur, temp, startDate, startTime, timeOffset; - - if (options.startDateTime) { - temp = options.startDateTime.split('T'); - startDate = temp[0]; - - if (temp[1]) { - temp[1] = temp[1].split(':'); - hours = parseInt(temp[1][0], 10); - minutes = (temp[1][1]) ? parseInt(temp[1][1].split('+')[0].split('-')[0].split('Z')[0], 10) : 0; - period = (hours < 12) ? 'AM' : 'PM'; - - if (hours === 0) { - hours = 12; - } else if (hours > 12) { - hours -= 12; - } - - minutes = (minutes < 10) ? '0' + minutes : minutes; - startTime = hours + ':' + minutes; - temp = hours + ':' + minutes + ' ' + period; - this.$startTime.find('input').val(temp); - this.$startTime.combobox('selectByText', temp); - } else { - startTime = '00:00'; - } - } else { - startTime = '00:00'; - var currentDate = this.$startDate.datepicker('getDate'); - startDate = currentDate.getFullYear() + '-' + currentDate.getMonth() + '-' + currentDate.getDate(); - } - - // create jQuery selection string for timezone object - // based on data-attributes and pass to selectlist - item = 'li'; - if (options.timeZone) { - if (typeof (options.timeZone) === 'string') { - item += '[data-name="' + options.timeZone + '"]'; - } else { - $.each(options.timeZone, function(key, value) { - item += '[data-' + key + '="' + value + '"]'; - }); - } - timeOffset = options.timeZone.offset; - this.$timeZone.selectlist('selectBySelector', item); - } else if (options.startDateTime) { - temp = options.startDateTime.split('T')[1]; - if (temp) { - if (temp.search(/\+/) > -1) { - temp = '+' + $.trim(temp.split('+')[1]); - } else if (temp.search(/\-/) > -1) { - temp = '-' + $.trim(temp.split('-')[1]); - } else { - temp = '+00:00'; - } - } else { - temp = '+00:00'; - } - timeOffset = (temp === '+00:00') ? 'Z' : temp; - item += '[data-offset="' + temp + '"]'; - this.$timeZone.selectlist('selectBySelector', item); - } else { - timeOffset = 'Z'; - } - - if (options.recurrencePattern) { - recur = {}; - temp = options.recurrencePattern.toUpperCase().split(';'); - for (i = 0, l = temp.length; i < l; i++) { - if (temp[i] !== '') { - item = temp[i].split('='); - recur[item[0]] = item[1]; - } - } - - if (recur.FREQ === 'DAILY') { - if (recur.BYDAY === 'MO,TU,WE,TH,FR') { - item = 'weekdays'; - } else { - if (recur.INTERVAL === '1' && recur.COUNT === '1') { - item = 'none'; - } else { - item = 'daily'; - } - } - } else if (recur.FREQ === 'SECONDLY') { - item = 'secondly'; - } else if (recur.FREQ === 'MINUTELY') { - item = 'minutely'; - } else if (recur.FREQ === 'HOURLY') { - item = 'hourly'; - } else if (recur.FREQ === 'WEEKLY') { - if (recur.BYDAY) { - item = this.$element.find('.repeat-days-of-the-week .btn-group'); - item.find('label').removeClass('active'); - temp = recur.BYDAY.split(','); - for (i = 0, l = temp.length; i < l; i++) { - item.find('input[data-value="' + temp[i] + '"]').prop('checked',true).parent().addClass('active'); - } - } - - item = 'weekly'; - } else if (recur.FREQ === 'MONTHLY') { - this.$element.find('.repeat-monthly input').removeAttr('checked').removeClass('checked'); - this.$element.find('.repeat-monthly label.radio-custom').removeClass('checked'); - if (recur.BYMONTHDAY) { - temp = this.$element.find('.repeat-monthly-date'); - temp.find('input').addClass('checked').prop('checked', true); - temp.find('label.radio-custom').addClass('checked'); - temp.find('.selectlist').selectlist('selectByValue', recur.BYMONTHDAY); - } else if (recur.BYDAY) { - temp = this.$element.find('.repeat-monthly-day'); - temp.find('input').addClass('checked').prop('checked', true); - temp.find('label.radio-custom').addClass('checked'); - if (recur.BYSETPOS) { - temp.find('.month-day-pos').selectlist('selectByValue', recur.BYSETPOS); - } - - temp.find('.month-days').selectlist('selectByValue', recur.BYDAY); - } - - item = 'monthly'; - } else if (recur.FREQ === 'YEARLY') { - this.$element.find('.repeat-yearly input').removeAttr('checked').removeClass('checked'); - this.$element.find('.repeat-yearly label.radio-custom').removeClass('checked'); - if (recur.BYMONTHDAY) { - temp = this.$element.find('.repeat-yearly-date'); - temp.find('input').addClass('checked').prop('checked', true); - temp.find('label.radio-custom').addClass('checked'); - if (recur.BYMONTH) { - temp.find('.year-month').selectlist('selectByValue', recur.BYMONTH); - } - - temp.find('.year-month-day').selectlist('selectByValue', recur.BYMONTHDAY); - } else if (recur.BYSETPOS) { - temp = this.$element.find('.repeat-yearly-day'); - temp.find('input').addClass('checked').prop('checked', true); - temp.find('label.radio-custom').addClass('checked'); - temp.find('.year-month-day-pos').selectlist('selectByValue', recur.BYSETPOS); - if (recur.BYDAY) { - temp.find('.year-month-days').selectlist('selectByValue', recur.BYDAY); - } - - if (recur.BYMONTH) { - temp.find('.year-month').selectlist('selectByValue', recur.BYMONTH); - } - - } - - item = 'yearly'; - } else { - item = 'none'; - } - - if (recur.COUNT) { - this.$endAfter.spinbox('value', parseInt(recur.COUNT, 10)); - this.$endSelect.selectlist('selectByValue', 'after'); - } else if (recur.UNTIL) { - temp = recur.UNTIL; - if (temp.length === 8) { - temp = temp.split(''); - temp.splice(4, 0, '-'); - temp.splice(7, 0, '-'); - temp = temp.join(''); - } - - var timeZone = this.$timeZone.selectlist('selectedItem'); - var timezoneOffset = (timeZone.offset === '+00:00') ? 'Z' : timeZone.offset; - - var utcEndHours = this.setUtcTime(temp, startTime, timezoneOffset); - this.$endDate.datepicker('setDate', utcEndHours); - - this.$endSelect.selectlist('selectByValue', 'date'); - } else { - this.$endSelect.selectlist('selectByValue', 'never'); - } - - this.endSelectChanged(); - - if (recur.INTERVAL) { - this.$repeatIntervalSpinbox.spinbox('value', parseInt(recur.INTERVAL, 10)); - } - - this.$repeatIntervalSelect.selectlist('selectByValue', item); - this.repeatIntervalSelectChanged(); - } - - var utcStartHours = this.setUtcTime(startDate, startTime, timeOffset); - - this.$startDate.datepicker('setDate', utcStartHours); - }, - - toggleState: function (action) { - this.$element.find('.combobox').combobox(action); - this.$element.find('.datepicker').datepicker(action); - this.$element.find('.selectlist').selectlist(action); - this.$element.find('.spinbox').spinbox(action); - this.$element.find('.radio-custom').radio(action); - - if (action === 'disable') { - action = 'addClass'; - } else { - action = 'removeClass'; - } - - this.$element.find('.repeat-days-of-the-week .btn-group')[action]('disabled'); - }, - - value: function (options) { - if (options) { - return this.setValue(options); - } else { - return this.getValue(); - } - } - }; - - - // SCHEDULER PLUGIN DEFINITION - - $.fn.scheduler = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.scheduler'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.scheduler', (data = new Scheduler(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.scheduler.defaults = {}; - - $.fn.scheduler.Constructor = Scheduler; - - $.fn.scheduler.noConflict = function () { - $.fn.scheduler = old; - return this; - }; - - - // DATA-API - - $(document).on('mousedown.fu.scheduler.data-api', '[data-initialize=scheduler]', function (e) { - var $control = $(e.target).closest('.scheduler'); - if (!$control.data('fu.scheduler')) { - $control.scheduler($control.data()); - } - }); - - // Must be domReady for AMD compatibility - $(function () { - $('[data-initialize=scheduler]').each(function () { - var $this = $(this); - if ($this.data('scheduler')) return; - $this.scheduler($this.data()); - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/search.js b/elgg_clean/bower_components/fuelux/js/search.js deleted file mode 100644 index 2d4bf371..00000000 --- a/elgg_clean/bower_components/fuelux/js/search.js +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Fuel UX Search - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.search; - - // SEARCH CONSTRUCTOR AND PROTOTYPE - - var Search = function (element, options) { - this.$element = $(element); - this.options = $.extend({}, $.fn.search.defaults, options); - - this.$button = this.$element.find('button'); - this.$input = this.$element.find('input'); - this.$icon = this.$element.find('.glyphicon'); - - this.$button.on('click.fu.search', $.proxy(this.buttonclicked, this)); - this.$input.on('keydown.fu.search', $.proxy(this.keypress, this)); - this.$input.on('keyup.fu.search', $.proxy(this.keypressed, this)); - - this.activeSearch = ''; - }; - - Search.prototype = { - - constructor: Search, - - destroy: function () { - this.$element.remove(); - // any external bindings - // [none] - // set input value attrbute - this.$element.find('input').each(function () { - $(this).attr('value', $(this).val()); - }); - // empty elements to return to original markup - // [none] - // returns string of markup - return this.$element[0].outerHTML; - }, - - search: function (searchText) { - if (this.$icon.hasClass('glyphicon')) { - this.$icon.removeClass('glyphicon-search').addClass('glyphicon-remove'); - } - - this.activeSearch = searchText; - this.$element.addClass('searched'); - this.$element.trigger('searched.fu.search', searchText); - }, - - clear: function () { - if (this.$icon.hasClass('glyphicon')) { - this.$icon.removeClass('glyphicon-remove').addClass('glyphicon-search'); - } - - this.activeSearch = ''; - this.$input.val(''); - this.$element.removeClass('searched'); - this.$element.trigger('cleared.fu.search'); - }, - - action: function () { - var val = this.$input.val(); - var inputEmptyOrUnchanged = (val === '' || val === this.activeSearch); - - if (this.activeSearch && inputEmptyOrUnchanged) { - this.clear(); - } else if (val) { - this.search(val); - } - }, - - buttonclicked: function (e) { - e.preventDefault(); - if ($(e.currentTarget).is('.disabled, :disabled')) return; - this.action(); - }, - - keypress: function (e) { - if (e.which === 13) { - e.preventDefault(); - } - }, - - keypressed: function (e) { - var remove = 'glyphicon-remove'; - var search = 'glyphicon-search'; - var val; - - if (e.which === 13) { - e.preventDefault(); - this.action(); - } else if (e.which === 9) { - e.preventDefault(); - } else { - val = this.$input.val(); - - if (val !== this.activeSearch || !val) { - this.$icon.removeClass(remove).addClass(search); - if (val) { - this.$element.removeClass('searched'); - } else if (this.options.clearOnEmpty) { - this.clear(); - } - - } else { - this.$icon.removeClass(search).addClass(remove); - } - - } - }, - - disable: function () { - this.$element.addClass('disabled'); - this.$input.attr('disabled', 'disabled'); - this.$button.addClass('disabled'); - }, - - enable: function () { - this.$element.removeClass('disabled'); - this.$input.removeAttr('disabled'); - this.$button.removeClass('disabled'); - } - }; - - - // SEARCH PLUGIN DEFINITION - - $.fn.search = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.search'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.search', (data = new Search(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.search.defaults = { - clearOnEmpty: false - }; - - $.fn.search.Constructor = Search; - - $.fn.search.noConflict = function () { - $.fn.search = old; - return this; - }; - - - // DATA-API - - $(document).on('mousedown.fu.search.data-api', '[data-initialize=search]', function (e) { - var $control = $(e.target).closest('.search'); - if (!$control.data('fu.search')) { - $control.search($control.data()); - } - }); - - // Must be domReady for AMD compatibility - $(function () { - $('[data-initialize=search]').each(function () { - var $this = $(this); - if ($this.data('fu.search')) return; - $this.search($this.data()); - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/selectlist.js b/elgg_clean/bower_components/fuelux/js/selectlist.js deleted file mode 100644 index 6a7a4ec5..00000000 --- a/elgg_clean/bower_components/fuelux/js/selectlist.js +++ /dev/null @@ -1,290 +0,0 @@ -/* - * Fuel UX Selectlist - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.selectlist; - // SELECT CONSTRUCTOR AND PROTOTYPE - - var Selectlist = function (element, options) { - this.$element = $(element); - this.options = $.extend({}, $.fn.selectlist.defaults, options); - - - this.$button = this.$element.find('.btn.dropdown-toggle'); - this.$hiddenField = this.$element.find('.hidden-field'); - this.$label = this.$element.find('.selected-label'); - this.$dropdownMenu = this.$element.find('.dropdown-menu'); - - this.$element.on('click.fu.selectlist', '.dropdown-menu a', $.proxy(this.itemClicked, this)); - this.setDefaultSelection(); - - if (options.resize === 'auto' || this.$element.attr('data-resize') === 'auto') { - this.resize(); - } - - // if selectlist is empty or is one item, disable it - var items = this.$dropdownMenu.children('li'); - if( items.length === 0) { - this.disable(); - this.doSelect( $(this.options.emptyLabelHTML)); - } - - // support jumping focus to first letter in dropdown when key is pressed - this.$element.on('shown.bs.dropdown', function () { - var $this = $(this); - // attach key listener when dropdown is shown - $(document).on('keypress.fu.selectlist', function(e){ - - // get the key that was pressed - var key = String.fromCharCode(e.which); - // look the items to find the first item with the first character match and set focus - $this.find("li").each(function(idx,item){ - if ($(item).text().charAt(0).toLowerCase() === key) { - $(item).children('a').focus(); - return false; - } - }); - - }); - }); - - // unbind key event when dropdown is hidden - this.$element.on('hide.bs.dropdown', function () { - $(document).off('keypress.fu.selectlist'); - }); - }; - - Selectlist.prototype = { - - constructor: Selectlist, - - destroy: function () { - this.$element.remove(); - // any external bindings - // [none] - // empty elements to return to original markup - // [none] - // returns string of markup - return this.$element[0].outerHTML; - }, - - doSelect: function ($item) { - var $selectedItem; - this.$selectedItem = $selectedItem = $item; - - this.$hiddenField.val(this.$selectedItem.attr('data-value')); - this.$label.html($(this.$selectedItem.children()[0]).html()); - - // clear and set selected item to allow declarative init state - // unlike other controls, selectlist's value is stored internal, not in an input - this.$element.find('li').each(function () { - if ($selectedItem.is($(this))) { - $(this).attr('data-selected', true); - } else { - $(this).removeData('selected').removeAttr('data-selected'); - } - }); - }, - - itemClicked: function (e) { - this.$element.trigger('clicked.fu.selectlist', this.$selectedItem); - - e.preventDefault(); - // ignore if a disabled item is clicked - if ($(e.currentTarget).parent('li').is('.disabled, :disabled')) { return; } - - // is clicked element different from currently selected element? - if (!($(e.target).parent().is(this.$selectedItem))) { - this.itemChanged(e); - } - - // return focus to control after selecting an option - this.$element.find('.dropdown-toggle').focus(); - }, - - itemChanged: function (e) { - //selectedItem needs to be <li> since the data is stored there, not in <a> - this.doSelect($(e.target).closest('li')); - - // pass object including text and any data-attributes - // to onchange event - var data = this.selectedItem(); - // trigger changed event - this.$element.trigger('changed.fu.selectlist', data); - }, - - resize: function () { - var width = 0; - var newWidth = 0; - var sizer = $('<div/>').addClass('selectlist-sizer'); - - - if (Boolean($(document).find('html').hasClass('fuelux'))) { - // default behavior for fuel ux setup. means fuelux was a class on the html tag - $(document.body).append(sizer); - } else { - // fuelux is not a class on the html tag. So we'll look for the first one we find so the correct styles get applied to the sizer - $('.fuelux:first').append(sizer); - } - - sizer.append(this.$element.clone()); - - this.$element.find('a').each(function () { - sizer.find('.selected-label').text($(this).text()); - newWidth = sizer.find('.selectlist').outerWidth(); - newWidth = newWidth + sizer.find('.sr-only').outerWidth(); - if (newWidth > width) { - width = newWidth; - } - }); - - if (width <= 1) { - return; - } - - this.$button.css('width', width); - this.$dropdownMenu.css('width', width); - - sizer.remove(); - }, - - selectedItem: function () { - var txt = this.$selectedItem.text(); - return $.extend({ - text: txt - }, this.$selectedItem.data()); - }, - - selectByText: function (text) { - var $item = $([]); - this.$element.find('li').each(function () { - if ((this.textContent || this.innerText || $(this).text() || '').toLowerCase() === (text || '').toLowerCase()) { - $item = $(this); - return false; - } - }); - this.doSelect($item); - }, - - selectByValue: function (value) { - var selector = 'li[data-value="' + value + '"]'; - this.selectBySelector(selector); - }, - - selectByIndex: function (index) { - // zero-based index - var selector = 'li:eq(' + index + ')'; - this.selectBySelector(selector); - }, - - selectBySelector: function (selector) { - var $item = this.$element.find(selector); - this.doSelect($item); - }, - - setDefaultSelection: function () { - var $item = this.$element.find('li[data-selected=true]').eq(0); - - if ($item.length === 0) { - $item = this.$element.find('li').has('a').eq(0); - } - - this.doSelect($item); - }, - - enable: function () { - this.$element.removeClass('disabled'); - this.$button.removeClass('disabled'); - }, - - disable: function () { - this.$element.addClass('disabled'); - this.$button.addClass('disabled'); - } - }; - - Selectlist.prototype.getValue = Selectlist.prototype.selectedItem; - - - // SELECT PLUGIN DEFINITION - - $.fn.selectlist = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.selectlist'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.selectlist', (data = new Selectlist(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.selectlist.defaults = { - emptyLabelHTML: '<li data-value=""><a href="#">No items</a></li>' - }; - - $.fn.selectlist.Constructor = Selectlist; - - $.fn.selectlist.noConflict = function () { - $.fn.selectlist = old; - return this; - }; - - - // DATA-API - - $(document).on('mousedown.fu.selectlist.data-api', '[data-initialize=selectlist]', function (e) { - var $control = $(e.target).closest('.selectlist'); - if (!$control.data('fu.selectlist')) { - $control.selectlist($control.data()); - } - }); - - // Must be domReady for AMD compatibility - $(function () { - $('[data-initialize=selectlist]').each(function () { - var $this = $(this); - if (!$this.data('fu.selectlist')) { - $this.selectlist($this.data()); - } - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/spinbox.js b/elgg_clean/bower_components/fuelux/js/spinbox.js deleted file mode 100644 index a9093576..00000000 --- a/elgg_clean/bower_components/fuelux/js/spinbox.js +++ /dev/null @@ -1,471 +0,0 @@ -/* - * Fuel UX Spinbox - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.spinbox; - - // SPINBOX CONSTRUCTOR AND PROTOTYPE - - var Spinbox = function Spinbox(element, options) { - this.$element = $(element); - this.$element.find('.btn').on('click', function (e) { - //keep spinbox from submitting if they forgot to say type="button" on their spinner buttons - e.preventDefault(); - }); - this.options = $.extend({}, $.fn.spinbox.defaults, options); - this.options.step = this.$element.data('step') || this.options.step; - - if (this.options.value < this.options.min) { - this.options.value = this.options.min; - } else if (this.options.max < this.options.value) { - this.options.value = this.options.max; - } - - this.$input = this.$element.find('.spinbox-input'); - this.$input.on('focusout.fu.spinbox', this.$input, $.proxy(this.change, this)); - this.$element.on('keydown.fu.spinbox', this.$input, $.proxy(this.keydown, this)); - this.$element.on('keyup.fu.spinbox', this.$input, $.proxy(this.keyup, this)); - - this.bindMousewheelListeners(); - this.mousewheelTimeout = {}; - - if (this.options.hold) { - this.$element.on('mousedown.fu.spinbox', '.spinbox-up', $.proxy(function () { - this.startSpin(true); - }, this)); - this.$element.on('mouseup.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy(this.stopSpin, this)); - this.$element.on('mouseout.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy(this.stopSpin, this)); - this.$element.on('mousedown.fu.spinbox', '.spinbox-down', $.proxy(function () { - this.startSpin(false); - }, this)); - } else { - this.$element.on('click.fu.spinbox', '.spinbox-up', $.proxy(function () { - this.step(true); - }, this)); - this.$element.on('click.fu.spinbox', '.spinbox-down', $.proxy(function () { - this.step(false); - }, this)); - } - - this.switches = { - count: 1, - enabled: true - }; - - if (this.options.speed === 'medium') { - this.switches.speed = 300; - } else if (this.options.speed === 'fast') { - this.switches.speed = 100; - } else { - this.switches.speed = 500; - } - - this.options.defaultUnit = _isUnitLegal(this.options.defaultUnit, this.options.units) ? this.options.defaultUnit : ''; - this.unit = this.options.defaultUnit; - - this.lastValue = this.options.value; - - this.render(); - - if (this.options.disabled) { - this.disable(); - } - }; - - // Truly private methods - var _limitToStep = function _limitToStep(number, step) { - return Math.round(number / step) * step; - }; - - var _isUnitLegal = function _isUnitLegal(unit, validUnits) { - var legalUnit = false; - var suspectUnit = unit.toLowerCase(); - - $.each(validUnits, function (i, validUnit) { - validUnit = validUnit.toLowerCase(); - if (suspectUnit === validUnit) { - legalUnit = true; - return false;//break out of the loop - } - }); - - return legalUnit; - }; - - var _applyLimits = function _applyLimits(value) { - // if unreadable - if (isNaN(parseFloat(value))) { - return value; - } - - // if not within range return the limit - if (value > this.options.max) { - if (this.options.cycle) { - value = this.options.min; - } else { - value = this.options.max; - } - } else if (value < this.options.min) { - if (this.options.cycle) { - value = this.options.max; - } else { - value = this.options.min; - } - } - - if (this.options.limitToStep && this.options.step) { - value = _limitToStep(value, this.options.step); - - //force round direction so that it stays within bounds - if(value > this.options.max){ - value = value - this.options.step; - } else if(value < this.options.min) { - value = value + this.options.step; - } - } - - return value; - }; - - Spinbox.prototype = { - constructor: Spinbox, - - destroy: function destroy() { - this.$element.remove(); - // any external bindings - // [none] - // set input value attrbute - this.$element.find('input').each(function () { - $(this).attr('value', $(this).val()); - }); - // empty elements to return to original markup - // [none] - // returns string of markup - return this.$element[0].outerHTML; - }, - - render: function render() { - this.setValue(this.getDisplayValue()); - }, - - change: function change() { - this.setValue(this.getDisplayValue()); - - this.triggerChangedEvent(); - }, - - stopSpin: function stopSpin() { - if (this.switches.timeout !== undefined) { - clearTimeout(this.switches.timeout); - this.switches.count = 1; - this.triggerChangedEvent(); - } - }, - - triggerChangedEvent: function triggerChangedEvent() { - var currentValue = this.getValue(); - if (currentValue === this.lastValue) return; - this.lastValue = currentValue; - - // Primary changed event - this.$element.trigger('changed.fu.spinbox', currentValue); - }, - - startSpin: function startSpin(type) { - if (!this.options.disabled) { - var divisor = this.switches.count; - - if (divisor === 1) { - this.step(type); - divisor = 1; - } else if (divisor < 3) { - divisor = 1.5; - } else if (divisor < 8) { - divisor = 2.5; - } else { - divisor = 4; - } - - this.switches.timeout = setTimeout($.proxy(function () { - this.iterate(type); - }, this), this.switches.speed / divisor); - this.switches.count++; - } - }, - - iterate: function iterate(type) { - this.step(type); - this.startSpin(type); - }, - - step: function step(isIncrease) { - //refresh value from display before trying to increment in case they have just been typing before clicking the nubbins - this.setValue(this.getDisplayValue()); - var newVal; - - if (isIncrease) { - newVal = this.options.value + this.options.step; - } else { - newVal = this.options.value - this.options.step; - } - - newVal = newVal.toFixed(5); - - this.setValue(newVal + this.unit); - }, - - getDisplayValue: function getDisplayValue() { - var inputValue = this.parseInput(this.$input.val()); - var value = (!!inputValue) ? inputValue : this.options.value; - return value; - }, - - setDisplayValue: function setDisplayValue(value) { - this.$input.val(value); - }, - - getValue: function getValue() { - var val = this.options.value; - if (this.options.decimalMark !== '.'){ - val = (val + '').split('.').join(this.options.decimalMark); - } - return val + this.unit; - }, - - setValue: function setValue(val) { - //remove any i18n on the number - if (this.options.decimalMark !== '.') { - val = this.parseInput(val); - } - - //are we dealing with united numbers? - if(typeof val !== "number"){ - var potentialUnit = val.replace(/[0-9.-]/g, ''); - //make sure unit is valid, or else drop it in favor of current unit, or default unit (potentially nothing) - this.unit = _isUnitLegal(potentialUnit, this.options.units) ? potentialUnit : this.options.defaultUnit; - } - - var intVal = this.getIntValue(val); - - //make sure we are dealing with a number - if (isNaN(intVal) && !isFinite(intVal)) { - return this.setValue(this.options.value); - } - - //conform - intVal = _applyLimits.call(this, intVal); - - //cache the pure int value - this.options.value = intVal; - - //prepare number for display - val = intVal + this.unit; - - if (this.options.decimalMark !== '.'){ - val = (val + '').split('.').join(this.options.decimalMark); - } - - //display number - this.setDisplayValue(val); - - return this; - }, - - value: function value(val) { - if (val || val === 0) { - return this.setValue(val); - } else { - return this.getValue(); - } - }, - - parseInput: function parseInput(value) { - value = (value + '').split(this.options.decimalMark).join('.'); - - return value; - }, - - getIntValue: function getIntValue(value) { - //if they didn't pass in a number, try and get the number - value = (typeof value === "undefined") ? this.getValue() : value; - // if there still isn't a number, abort - if(typeof value === "undefined"){return;} - - if (typeof value === 'string'){ - value = this.parseInput(value); - } - - value = parseFloat(value, 10); - - return value; - }, - - disable: function disable() { - this.options.disabled = true; - this.$element.addClass('disabled'); - this.$input.attr('disabled', ''); - this.$element.find('button').addClass('disabled'); - }, - - enable: function enable() { - this.options.disabled = false; - this.$element.removeClass('disabled'); - this.$input.removeAttr('disabled'); - this.$element.find('button').removeClass('disabled'); - }, - - keydown: function keydown(event) { - var keyCode = event.keyCode; - if (keyCode === 38) { - this.step(true); - } else if (keyCode === 40) { - this.step(false); - } else if (keyCode === 13) { - this.change(); - } - }, - - keyup: function keyup(event) { - var keyCode = event.keyCode; - - if (keyCode === 38 || keyCode === 40) { - this.triggerChangedEvent(); - } - }, - - bindMousewheelListeners: function bindMousewheelListeners() { - var inputEl = this.$input.get(0); - if (inputEl.addEventListener) { - //IE 9, Chrome, Safari, Opera - inputEl.addEventListener('mousewheel', $.proxy(this.mousewheelHandler, this), false); - // Firefox - inputEl.addEventListener('DOMMouseScroll', $.proxy(this.mousewheelHandler, this), false); - } else { - // IE <9 - inputEl.attachEvent('onmousewheel', $.proxy(this.mousewheelHandler, this)); - } - }, - - mousewheelHandler: function mousewheelHandler(event) { - if (!this.options.disabled) { - var e = window.event || event;// old IE support - var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail))); - var self = this; - - clearTimeout(this.mousewheelTimeout); - this.mousewheelTimeout = setTimeout(function () { - self.triggerChangedEvent(); - }, 300); - - if (delta < 0) { - this.step(true); - } else { - this.step(false); - } - - if (e.preventDefault) { - e.preventDefault(); - } else { - e.returnValue = false; - } - - return false; - } - } - }; - - - // SPINBOX PLUGIN DEFINITION - - $.fn.spinbox = function spinbox(option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.spinbox'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.spinbox', (data = new Spinbox(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - // value needs to be 0 for this.render(); - $.fn.spinbox.defaults = { - value: 0, - min: 0, - max: 999, - step: 1, - hold: true, - speed: 'medium', - disabled: false, - cycle: false, - units: [], - decimalMark: '.', - defaultUnit: '', - limitToStep: false - }; - - $.fn.spinbox.Constructor = Spinbox; - - $.fn.spinbox.noConflict = function noConflict() { - $.fn.spinbox = old; - return this; - }; - - - // DATA-API - - $(document).on('mousedown.fu.spinbox.data-api', '[data-initialize=spinbox]', function (e) { - var $control = $(e.target).closest('.spinbox'); - if (!$control.data('fu.spinbox')) { - $control.spinbox($control.data()); - } - }); - - // Must be domReady for AMD compatibility - $(function () { - $('[data-initialize=spinbox]').each(function () { - var $this = $(this); - if (!$this.data('fu.spinbox')) { - $this.spinbox($this.data()); - } - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/tree.js b/elgg_clean/bower_components/fuelux/js/tree.js deleted file mode 100644 index e81c5428..00000000 --- a/elgg_clean/bower_components/fuelux/js/tree.js +++ /dev/null @@ -1,559 +0,0 @@ -/* - * Fuel UX Tree - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.tree; - - // TREE CONSTRUCTOR AND PROTOTYPE - - var Tree = function Tree(element, options) { - this.$element = $(element); - this.options = $.extend({}, $.fn.tree.defaults, options); - - if (this.options.itemSelect) { - this.$element.on('click.fu.tree', '.tree-item', $.proxy(function (ev) { - this.selectItem(ev.currentTarget); - }, this)); - } - - this.$element.on('click.fu.tree', '.tree-branch-name', $.proxy(function (ev) { - this.toggleFolder(ev.currentTarget); - }, this)); - - // folderSelect default is true - if (this.options.folderSelect) { - this.$element.addClass('tree-folder-select'); - this.$element.off('click.fu.tree', '.tree-branch-name'); - this.$element.on('click.fu.tree', '.icon-caret', $.proxy(function (ev) { - this.toggleFolder($(ev.currentTarget).parent()); - }, this)); - this.$element.on('click.fu.tree', '.tree-branch-name', $.proxy(function (ev) { - this.selectFolder($(ev.currentTarget)); - }, this)); - } - - this.render(); - }; - - Tree.prototype = { - constructor: Tree, - - deselectAll: function deselectAll(nodes) { - // clear all child tree nodes and style as deselected - nodes = nodes || this.$element; - var $selectedElements = $(nodes).find('.tree-selected'); - $selectedElements.each(function (index, element) { - styleNodeDeselected( $(element), $(element).find( '.glyphicon' ) ); - }); - return $selectedElements; - }, - - destroy: function destroy() { - // any external bindings [none] - // empty elements to return to original markup - this.$element.find("li:not([data-template])").remove(); - - this.$element.remove(); - // returns string of markup - return this.$element[0].outerHTML; - }, - - render: function render() { - this.populate(this.$element); - }, - - populate: function populate($el) { - var self = this; - var $parent = ($el.hasClass('tree')) ? $el : $el.parent(); - var loader = $parent.find('.tree-loader:eq(0)'); - var treeData = $parent.data(); - - loader.removeClass('hide hidden'); // hide is deprecated - this.options.dataSource(treeData ? treeData : {}, function (items) { - loader.addClass('hidden'); - - $.each(items.data, function (index, value) { - var $entity; - - if (value.type === 'folder') { - $entity = self.$element.find('[data-template=treebranch]:eq(0)').clone().removeClass('hide hidden').removeData('template'); // hide is deprecated - $entity.data(value); - $entity.find('.tree-branch-name > .tree-label').html(value.text || value.name); - } else if (value.type === 'item') { - $entity = self.$element.find('[data-template=treeitem]:eq(0)').clone().removeClass('hide hidden').removeData('template'); // hide is deprecated - $entity.find('.tree-item-name > .tree-label').html(value.text || value.name); - $entity.data(value); - } - - // Decorate $entity with data or other attributes making the - // element easily accessable with libraries like jQuery. - // - // Values are contained within the object returned - // for folders and items as attr: - // - // { - // text: "An Item", - // type: 'item', - // attr = { - // 'classes': 'required-item red-text', - // 'data-parent': parentId, - // 'guid': guid, - // 'id': guid - // } - // }; - // - // the "name" attribute is also supported but is deprecated for "text". - - // add attributes to tree-branch or tree-item - var attr = value.attr || value.dataAttributes || []; - $.each(attr, function (key, value) { - switch (key) { - case 'cssClass': - case 'class': - case 'className': - $entity.addClass(value); - break; - - // allow custom icons - case 'data-icon': - $entity.find('.icon-item').removeClass().addClass('icon-item ' + value); - $entity.attr(key, value); - break; - - // ARIA support - case 'id': - $entity.attr(key, value); - $entity.attr('aria-labelledby', value + '-label'); - $entity.find('.tree-branch-name > .tree-label').attr('id', value + '-label'); - break; - - // style, data-* - default: - $entity.attr(key, value); - break; - } - }); - - // add child nodes - if ($el.hasClass('tree-branch-header')) { - $parent.find('.tree-branch-children:eq(0)').append($entity); - } else { - $el.append($entity); - } - }); - - // return newly populated folder - self.$element.trigger('loaded.fu.tree', $parent); - }); - }, - - selectTreeNode: function selectItem(clickedElement, nodeType) { - var clicked = {}; // object for clicked element - clicked.$element = $(clickedElement); - - var selected = {}; // object for selected elements - selected.$elements = this.$element.find('.tree-selected'); - selected.dataForEvent = []; - - // determine clicked element and it's icon - if (nodeType === 'folder') { - // make the clicked.$element the container branch - clicked.$element = clicked.$element.closest('.tree-branch'); - clicked.$icon = clicked.$element.find('.icon-folder'); - } - else { - clicked.$icon = clicked.$element.find('.icon-item'); - } - clicked.elementData = clicked.$element.data(); - - // the below functions pass objects by copy/reference and use modified object in this function - if ( this.options.multiSelect ) { - multiSelectSyncNodes(this, clicked, selected); - } - else { - singleSelectSyncNodes(this, clicked, selected); - } - - // all done with the DOM, now fire events - this.$element.trigger(selected.eventType + '.fu.tree', { - target: clicked.elementData, - selected: selected.dataForEvent - }); - - clicked.$element.trigger('updated.fu.tree', { - selected: selected.dataForEvent, - item: clicked.$element, - eventType: selected.eventType - }); - }, - - discloseFolder: function discloseFolder(el) { - var $el = $(el); - - var $branch = $el.closest('.tree-branch'); - var $treeFolderContent = $branch.find('.tree-branch-children'); - var $treeFolderContentFirstChild = $treeFolderContent.eq(0); - - //take care of the styles - $branch.addClass('tree-open'); - $branch.attr('aria-expanded', 'true'); - $treeFolderContentFirstChild.removeClass('hide hidden'); // hide is deprecated - $branch.find('> .tree-branch-header .icon-folder').eq(0) - .removeClass('glyphicon-folder-close') - .addClass('glyphicon-folder-open'); - - //add the children to the folder - if (!$treeFolderContent.children().length) { - this.populate($treeFolderContent); - } - - this.$element.trigger('disclosedFolder.fu.tree', $branch.data()); - }, - - closeFolder: function closeFolder(el) { - var $el = $(el); - var $branch = $el.closest('.tree-branch'); - var $treeFolderContent = $branch.find('.tree-branch-children'); - var $treeFolderContentFirstChild = $treeFolderContent.eq(0); - - //take care of the styles - $branch.removeClass('tree-open'); - $branch.attr('aria-expanded', 'false'); - $treeFolderContentFirstChild.addClass('hidden'); - $branch.find('> .tree-branch-header .icon-folder').eq(0) - .removeClass('glyphicon-folder-open') - .addClass('glyphicon-folder-close'); - - // remove chidren if no cache - if (!this.options.cacheItems) { - $treeFolderContentFirstChild.empty(); - } - - this.$element.trigger('closed.fu.tree', $branch.data()); - }, - - toggleFolder: function toggleFolder(el) { - var $el = $(el); - - if ($el.find('.glyphicon-folder-close').length) { - this.discloseFolder(el); - } else if ($el.find('.glyphicon-folder-open').length) { - this.closeFolder(el); - } - }, - - selectFolder: function selectFolder(el) { - if (this.options.folderSelect) { - this.selectTreeNode(el, 'folder'); - } - }, - - selectItem: function selectItem(el) { - if (this.options.itemSelect) { - this.selectTreeNode(el, 'item'); - } - }, - - selectedItems: function selectedItems() { - var $sel = this.$element.find('.tree-selected'); - var data = []; - - $.each($sel, function (index, value) { - data.push($(value).data()); - }); - return data; - }, - - // collapses open folders - collapse: function collapse() { - var self = this; - var reportedClosed = []; - - var closedReported = function closedReported(event, closed) { - reportedClosed.push(closed); - - // hide is deprecated - if (self.$element.find(".tree-branch.tree-open:not('.hidden, .hide')").length === 0) { - self.$element.trigger('closedAll.fu.tree', { - tree: self.$element, - reportedClosed: reportedClosed - }); - self.$element.off('loaded.fu.tree', self.$element, closedReported); - } - }; - - //trigger callback when all folders have reported closed - self.$element.on('closed.fu.tree', closedReported); - - self.$element.find(".tree-branch.tree-open:not('.hidden, .hide')").each(function () { - self.closeFolder(this); - }); - }, - - //disclose visible will only disclose visible tree folders - discloseVisible: function discloseVisible() { - var self = this; - - var $openableFolders = self.$element.find(".tree-branch:not('.tree-open, .hidden, .hide')"); - var reportedOpened = []; - - var openReported = function openReported(event, opened) { - reportedOpened.push(opened); - - if (reportedOpened.length === $openableFolders.length) { - self.$element.trigger('disclosedVisible.fu.tree', { - tree: self.$element, - reportedOpened: reportedOpened - }); - /* - * Unbind the `openReported` event. `discloseAll` may be running and we want to reset this - * method for the next iteration. - */ - self.$element.off('loaded.fu.tree', self.$element, openReported); - } - }; - - //trigger callback when all folders have reported opened - self.$element.on('loaded.fu.tree', openReported); - - // open all visible folders - self.$element.find(".tree-branch:not('.tree-open, .hidden, .hide')").each(function triggerOpen() { - self.discloseFolder($(this).find('.tree-branch-header')); - }); - }, - - /** - * Disclose all will keep listening for `loaded.fu.tree` and if `$(tree-el).data('ignore-disclosures-limit')` - * is `true` (defaults to `true`) it will attempt to disclose any new closed folders than were - * loaded in during the last disclosure. - */ - discloseAll: function discloseAll() { - var self = this; - - //first time - if (typeof self.$element.data('disclosures') === 'undefined') { - self.$element.data('disclosures', 0); - } - - var isExceededLimit = (self.options.disclosuresUpperLimit >= 1 && self.$element.data('disclosures') >= self.options.disclosuresUpperLimit); - var isAllDisclosed = self.$element.find(".tree-branch:not('.tree-open, .hidden, .hide')").length === 0; - - - if (!isAllDisclosed) { - if (isExceededLimit) { - self.$element.trigger('exceededDisclosuresLimit.fu.tree', { - tree: self.$element, - disclosures: self.$element.data('disclosures') - }); - - /* - * If you've exceeded the limit, the loop will be killed unless you - * explicitly ignore the limit and start the loop again: - * - * $tree.one('exceededDisclosuresLimit.fu.tree', function () { - * $tree.data('ignore-disclosures-limit', true); - * $tree.tree('discloseAll'); - * }); - */ - if (!self.$element.data('ignore-disclosures-limit')) { - return; - } - - } - - self.$element.data('disclosures', self.$element.data('disclosures') + 1); - - /* - * A new branch that is closed might be loaded in, make sure those get handled too. - * This attachment needs to occur before calling `discloseVisible` to make sure that - * if the execution of `discloseVisible` happens _super fast_ (as it does in our QUnit tests - * this will still be called. However, make sure this only gets called _once_, because - * otherwise, every single time we go through this loop, _another_ event will be bound - * and then when the trigger happens, this will fire N times, where N equals the number - * of recursive `discloseAll` executions (instead of just one) - */ - self.$element.one('disclosedVisible.fu.tree', function () { - self.discloseAll(); - }); - - /* - * If the page is very fast, calling this first will cause `disclosedVisible.fu.tree` to not - * be bound in time to be called, so, we need to call this last so that the things bound - * and triggered above can have time to take place before the next execution of the - * `discloseAll` method. - */ - self.discloseVisible(); - } else { - self.$element.trigger('disclosedAll.fu.tree', { - tree: self.$element, - disclosures: self.$element.data('disclosures') - }); - - //if `cacheItems` is false, and they call closeAll, the data is trashed and therefore - //disclosures needs to accurately reflect that - if (!self.options.cacheItems) { - self.$element.one('closeAll.fu.tree', function () { - self.$element.data('disclosures', 0); - }); - } - - } - } - }; - - - // ALIASES - - //alias for collapse for consistency. "Collapse" is an ambiguous term (collapse what? All? One specific branch?) - Tree.prototype.closeAll = Tree.prototype.collapse; - //alias for backwards compatibility because there's no reason not to. - Tree.prototype.openFolder = Tree.prototype.discloseFolder; - //For library consistency - Tree.prototype.getValue = Tree.prototype.selectedItems; - - // PRIVATE FUNCTIONS - - function styleNodeSelected ($element, $icon) { - $element.addClass('tree-selected'); - if ( $element.data('type') === 'item' && $icon.hasClass('fueluxicon-bullet') ) { - $icon.removeClass('fueluxicon-bullet').addClass('glyphicon-ok'); // make checkmark - } - } - - function styleNodeDeselected ($element, $icon) { - $element.removeClass('tree-selected'); - if ( $element.data('type') === 'item' && $icon.hasClass('glyphicon-ok') ) { - $icon.removeClass('glyphicon-ok').addClass('fueluxicon-bullet'); // make bullet - } - } - - function multiSelectSyncNodes (self, clicked, selected) { - // search for currently selected and add to selected data list if needed - $.each(selected.$elements, function (index, element) { - var $element = $(element); - if ($element[0] !== clicked.$element[0]) { - selected.dataForEvent.push( $($element).data() ); - } - }); - - if (clicked.$element.hasClass('tree-selected')) { - styleNodeDeselected (clicked.$element, clicked.$icon); - // set event data - selected.eventType = 'deselected'; - } - else { - styleNodeSelected(clicked.$element, clicked.$icon); - // set event data - selected.eventType = 'selected'; - selected.dataForEvent.push(clicked.elementData); - } - } - - function singleSelectSyncNodes(self, clicked, selected) { - // element is not currently selected - if (selected.$elements[0] !== clicked.$element[0]) { - var clearedElements = self.deselectAll(self.$element); - styleNodeSelected(clicked.$element, clicked.$icon); - // set event data - selected.eventType = 'selected'; - selected.dataForEvent = [clicked.elementData]; - } - else { - styleNodeDeselected(clicked.$element, clicked.$icon); - // set event data - selected.eventType = 'deselected'; - selected.dataForEvent = []; - } - } - - - // TREE PLUGIN DEFINITION - - $.fn.tree = function tree(option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.tree'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.tree', (data = new Tree(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.tree.defaults = { - dataSource: function dataSource(options, callback) {}, - multiSelect: false, - cacheItems: true, - folderSelect: true, - itemSelect: true, - /* - * How many times `discloseAll` should be called before a stopping and firing - * an `exceededDisclosuresLimit` event. You can force it to continue by - * listening for this event, setting `ignore-disclosures-limit` to `true` and - * starting `discloseAll` back up again. This lets you make more decisions - * about if/when/how/why/how many times `discloseAll` will be started back - * up after it exceeds the limit. - * - * $tree.one('exceededDisclosuresLimit.fu.tree', function () { - * $tree.data('ignore-disclosures-limit', true); - * $tree.tree('discloseAll'); - * }); - * - * `disclusuresUpperLimit` defaults to `0`, so by default this trigger - * will never fire. The true hard the upper limit is the browser's - * ability to load new items (i.e. it will keep loading until the browser - * falls over and dies). On the Fuel UX `index.html` page, the point at - * which the page became super slow (enough to seem almost unresponsive) - * was `4`, meaning 256 folders had been opened, and 1024 were attempting to open. - */ - disclosuresUpperLimit: 0 - }; - - $.fn.tree.Constructor = Tree; - - $.fn.tree.noConflict = function () { - $.fn.tree = old; - return this; - }; - - - // NO DATA-API DUE TO NEED OF DATA-SOURCE - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/js/wizard.js b/elgg_clean/bower_components/fuelux/js/wizard.js deleted file mode 100644 index 322c7676..00000000 --- a/elgg_clean/bower_components/fuelux/js/wizard.js +++ /dev/null @@ -1,459 +0,0 @@ -/* - * Fuel UX Wizard - * https://github.com/ExactTarget/fuelux - * - * Copyright (c) 2014 ExactTarget - * Licensed under the BSD New license. - */ - -// -- BEGIN UMD WRAPPER PREFACE -- - -// For more information on UMD visit: -// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js - -(function (factory) { - if (typeof define === 'function' && define.amd) { - // if AMD loader is available, register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // OR use browser globals if AMD is not present - factory(jQuery); - } -}(function ($) { - // -- END UMD WRAPPER PREFACE -- - - // -- BEGIN MODULE CODE HERE -- - - var old = $.fn.wizard; - - // WIZARD CONSTRUCTOR AND PROTOTYPE - - var Wizard = function (element, options) { - var kids; - - this.$element = $(element); - this.options = $.extend({}, $.fn.wizard.defaults, options); - this.options.disablePreviousStep = (this.$element.attr('data-restrict') === 'previous') ? true : this.options.disablePreviousStep; - this.currentStep = this.options.selectedItem.step; - this.numSteps = this.$element.find('.steps li').length; - this.$prevBtn = this.$element.find('button.btn-prev'); - this.$nextBtn = this.$element.find('button.btn-next'); - - // maintains backwards compatibility with < 3.8, will be removed in the future - if (this.$element.children('.steps-container').length === 0) { - this.$element.addClass('no-steps-container'); - if (window && window.console && window.console.warn) { - window.console.warn('please update your wizard markup to include ".steps-container" as seen in http://getfuelux.com/javascript.html#wizard-usage-markup'); - } - } - - kids = this.$nextBtn.children().detach(); - this.nextText = $.trim(this.$nextBtn.text()); - this.$nextBtn.append(kids); - - // handle events - this.$prevBtn.on('click.fu.wizard', $.proxy(this.previous, this)); - this.$nextBtn.on('click.fu.wizard', $.proxy(this.next, this)); - this.$element.on('click.fu.wizard', 'li.complete', $.proxy(this.stepclicked, this)); - - this.selectedItem(this.options.selectedItem); - - if (this.options.disablePreviousStep) { - this.$prevBtn.attr('disabled', true); - this.$element.find('.steps').addClass('previous-disabled'); - } - }; - - Wizard.prototype = { - - constructor: Wizard, - - destroy: function () { - this.$element.remove(); - // any external bindings [none] - // empty elements to return to original markup [none] - // returns string of markup - return this.$element[0].outerHTML; - }, - - //index is 1 based - //second parameter can be array of objects [{ ... }, { ... }] or you can pass n additional objects as args - //object structure is as follows (all params are optional): { badge: '', label: '', pane: '' } - addSteps: function (index) { - var items = [].slice.call(arguments).slice(1); - var $steps = this.$element.find('.steps'); - var $stepContent = this.$element.find('.step-content'); - var i, l, $pane, $startPane, $startStep, $step; - - index = (index === -1 || (index > (this.numSteps + 1))) ? this.numSteps + 1 : index; - if (items[0] instanceof Array) { - items = items[0]; - } - - $startStep = $steps.find('li:nth-child(' + index + ')'); - $startPane = $stepContent.find('.step-pane:nth-child(' + index + ')'); - if ($startStep.length < 1) { - $startStep = null; - } - - for (i = 0, l = items.length; i < l; i++) { - $step = $('<li data-step="' + index + '"><span class="badge badge-info"></span></li>'); - $step.append(items[i].label || '').append('<span class="chevron"></span>'); - $step.find('.badge').append(items[i].badge || index); - - $pane = $('<div class="step-pane" data-step="' + index + '"></div>'); - $pane.append(items[i].pane || ''); - - if (!$startStep) { - $steps.append($step); - $stepContent.append($pane); - } else { - $startStep.before($step); - $startPane.before($pane); - } - - index++; - } - - this.syncSteps(); - this.numSteps = $steps.find('li').length; - this.setState(); - }, - - //index is 1 based, howMany is number to remove - removeSteps: function (index, howMany) { - var action = 'nextAll'; - var i = 0; - var $steps = this.$element.find('.steps'); - var $stepContent = this.$element.find('.step-content'); - var $start; - - howMany = (howMany !== undefined) ? howMany : 1; - - if (index > $steps.find('li').length) { - $start = $steps.find('li:last'); - } else { - $start = $steps.find('li:nth-child(' + index + ')').prev(); - if ($start.length < 1) { - action = 'children'; - $start = $steps; - } - - } - - $start[action]().each(function () { - var item = $(this); - var step = item.attr('data-step'); - if (i < howMany) { - item.remove(); - $stepContent.find('.step-pane[data-step="' + step + '"]:first').remove(); - } else { - return false; - } - - i++; - }); - - this.syncSteps(); - this.numSteps = $steps.find('li').length; - this.setState(); - }, - - setState: function () { - var canMovePrev = (this.currentStep > 1);//remember, steps index is 1 based... - var isFirstStep = (this.currentStep === 1); - var isLastStep = (this.currentStep === this.numSteps); - - // disable buttons based on current step - if (!this.options.disablePreviousStep) { - this.$prevBtn.attr('disabled', (isFirstStep === true || canMovePrev === false)); - } - - // change button text of last step, if specified - var last = this.$nextBtn.attr('data-last'); - if (last) { - this.lastText = last; - // replace text - var text = this.nextText; - if (isLastStep === true) { - text = this.lastText; - // add status class to wizard - this.$element.addClass('complete'); - } else { - this.$element.removeClass('complete'); - } - - var kids = this.$nextBtn.children().detach(); - this.$nextBtn.text(text).append(kids); - } - - // reset classes for all steps - var $steps = this.$element.find('.steps li'); - $steps.removeClass('active').removeClass('complete'); - $steps.find('span.badge').removeClass('badge-info').removeClass('badge-success'); - - // set class for all previous steps - var prevSelector = '.steps li:lt(' + (this.currentStep - 1) + ')'; - var $prevSteps = this.$element.find(prevSelector); - $prevSteps.addClass('complete'); - $prevSteps.find('span.badge').addClass('badge-success'); - - // set class for current step - var currentSelector = '.steps li:eq(' + (this.currentStep - 1) + ')'; - var $currentStep = this.$element.find(currentSelector); - $currentStep.addClass('active'); - $currentStep.find('span.badge').addClass('badge-info'); - - // set display of target element - var $stepContent = this.$element.find('.step-content'); - var target = $currentStep.attr('data-step'); - $stepContent.find('.step-pane').removeClass('active'); - $stepContent.find('.step-pane[data-step="' + target + '"]:first').addClass('active'); - - // reset the wizard position to the left - this.$element.find('.steps').first().attr('style', 'margin-left: 0'); - - // check if the steps are wider than the container div - var totalWidth = 0; - this.$element.find('.steps > li').each(function () { - totalWidth += $(this).outerWidth(); - }); - var containerWidth = 0; - if (this.$element.find('.actions').length) { - containerWidth = this.$element.width() - this.$element.find('.actions').first().outerWidth(); - } else { - containerWidth = this.$element.width(); - } - - if (totalWidth > containerWidth) { - // set the position so that the last step is on the right - var newMargin = totalWidth - containerWidth; - this.$element.find('.steps').first().attr('style', 'margin-left: -' + newMargin + 'px'); - - // set the position so that the active step is in a good - // position if it has been moved out of view - if (this.$element.find('li.active').first().position().left < 200) { - newMargin += this.$element.find('li.active').first().position().left - 200; - if (newMargin < 1) { - this.$element.find('.steps').first().attr('style', 'margin-left: 0'); - } else { - this.$element.find('.steps').first().attr('style', 'margin-left: -' + newMargin + 'px'); - } - - } - - } - - // only fire changed event after initializing - if (typeof (this.initialized) !== 'undefined') { - var e = $.Event('changed.fu.wizard'); - this.$element.trigger(e, { - step: this.currentStep - }); - } - - this.initialized = true; - }, - - stepclicked: function (e) { - var li = $(e.currentTarget); - var index = this.$element.find('.steps li').index(li); - - if (index < this.currentStep && this.options.disablePreviousStep) {//enforce restrictions - return; - } else { - var evt = $.Event('stepclicked.fu.wizard'); - this.$element.trigger(evt, { - step: index + 1 - }); - if (evt.isDefaultPrevented()) { - return; - } - - this.currentStep = (index + 1); - this.setState(); - } - }, - - syncSteps: function () { - var i = 1; - var $steps = this.$element.find('.steps'); - var $stepContent = this.$element.find('.step-content'); - - $steps.children().each(function () { - var item = $(this); - var badge = item.find('.badge'); - var step = item.attr('data-step'); - - if (!isNaN(parseInt(badge.html(), 10))) { - badge.html(i); - } - - item.attr('data-step', i); - $stepContent.find('.step-pane[data-step="' + step + '"]:last').attr('data-step', i); - i++; - }); - }, - - previous: function () { - if (this.options.disablePreviousStep || this.currentStep === 1) { - return; - } - - var e = $.Event('actionclicked.fu.wizard'); - this.$element.trigger(e, { - step: this.currentStep, - direction: 'previous' - }); - if (e.isDefaultPrevented()) { - return; - }// don't increment ...what? Why? - - this.currentStep -= 1; - this.setState(); - - // only set focus if focus is still on the $nextBtn (avoid stomping on a focus set programmatically in actionclicked callback) - if (this.$prevBtn.is(':focus')) { - var firstFormField = this.$element.find('.active').find('input, select, textarea')[0]; - - if (typeof firstFormField !== 'undefined') { - // allow user to start typing immediately instead of having to click on the form field. - $(firstFormField).focus(); - } else if (this.$element.find('.active input:first').length === 0 && this.$prevBtn.is(':disabled')) { - //only set focus on a button as the last resort if no form fields exist and the just clicked button is now disabled - this.$nextBtn.focus(); - } - - } - }, - - next: function () { - var e = $.Event('actionclicked.fu.wizard'); - this.$element.trigger(e, { - step: this.currentStep, - direction: 'next' - }); - if (e.isDefaultPrevented()) { - return; - }// respect preventDefault in case dev has attached validation to step and wants to stop propagation based on it. - - if (this.currentStep < this.numSteps) { - this.currentStep += 1; - this.setState(); - } else {//is last step - this.$element.trigger('finished.fu.wizard'); - } - - // only set focus if focus is still on the $nextBtn (avoid stomping on a focus set programmatically in actionclicked callback) - if (this.$nextBtn.is(':focus')) { - var firstFormField = this.$element.find('.active').find('input, select, textarea')[0]; - - if (typeof firstFormField !== 'undefined') { - // allow user to start typing immediately instead of having to click on the form field. - $(firstFormField).focus(); - } else if (this.$element.find('.active input:first').length === 0 && this.$nextBtn.is(':disabled')) { - //only set focus on a button as the last resort if no form fields exist and the just clicked button is now disabled - this.$prevBtn.focus(); - } - - } - }, - - selectedItem: function (selectedItem) { - var retVal, step; - - if (selectedItem) { - step = selectedItem.step || -1; - //allow selection of step by data-name - step = Number(this.$element.find('.steps li[data-name="' + step + '"]').first().attr('data-step')) || Number(step); - - if (1 <= step && step <= this.numSteps) { - this.currentStep = step; - this.setState(); - } else { - step = this.$element.find('.steps li.active:first').attr('data-step'); - if (!isNaN(step)) { - this.currentStep = parseInt(step, 10); - this.setState(); - } - - } - - retVal = this; - } else { - retVal = { - step: this.currentStep - }; - if (this.$element.find('.steps li.active:first[data-name]').length) { - retVal.stepname = this.$element.find('.steps li.active:first').attr('data-name'); - } - - } - - return retVal; - } - }; - - - // WIZARD PLUGIN DEFINITION - - $.fn.wizard = function (option) { - var args = Array.prototype.slice.call(arguments, 1); - var methodReturn; - - var $set = this.each(function () { - var $this = $(this); - var data = $this.data('fu.wizard'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('fu.wizard', (data = new Wizard(this, options))); - } - - if (typeof option === 'string') { - methodReturn = data[option].apply(data, args); - } - }); - - return (methodReturn === undefined) ? $set : methodReturn; - }; - - $.fn.wizard.defaults = { - disablePreviousStep: false, - selectedItem: { - step: -1 - }//-1 means it will attempt to look for "active" class in order to set the step - }; - - $.fn.wizard.Constructor = Wizard; - - $.fn.wizard.noConflict = function () { - $.fn.wizard = old; - return this; - }; - - - // DATA-API - - $(document).on('mouseover.fu.wizard.data-api', '[data-initialize=wizard]', function (e) { - var $control = $(e.target).closest('.wizard'); - if (!$control.data('fu.wizard')) { - $control.wizard($control.data()); - } - }); - - // Must be domReady for AMD compatibility - $(function () { - $('[data-initialize=wizard]').each(function () { - var $this = $(this); - if ($this.data('fu.wizard')) return; - $this.wizard($this.data()); - }); - }); - - // -- BEGIN UMD WRAPPER AFTERWORD -- -})); -// -- END UMD WRAPPER AFTERWORD -- diff --git a/elgg_clean/bower_components/fuelux/less/checkbox-no-js.less b/elgg_clean/bower_components/fuelux/less/checkbox-no-js.less deleted file mode 100644 index 9e8c1f36..00000000 --- a/elgg_clean/bower_components/fuelux/less/checkbox-no-js.less +++ /dev/null @@ -1,49 +0,0 @@ -@import "forms.less"; - -.fuelux { - .checkbox, .checkbox-inline { - - input[type="checkbox"]:not(.sr-only) { - & ~ label { - &:before { - border-radius: 4px; - z-index: 1; - } - } - - &:checked { - & ~ label { - &:before { - color: white; - content: "\e013"; - line-height: 1em; - padding-left: 1px; - font-size: 8px; - padding-top: 2px; - } - } - } - } - - &.hightlight { - & + .checkbox-inline.highlight { - margin-left: -14px; - &.checkbox-custom { - margin-left: 0px; - } - } - } - } - - .checkbox { - - &.highlight { - input[type="checkbox"]:not(.sr-only) { - & ~ label { - left: -4px; - } - } - } - - } -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/checkbox.less b/elgg_clean/bower_components/fuelux/less/checkbox.less deleted file mode 100644 index 5032d269..00000000 --- a/elgg_clean/bower_components/fuelux/less/checkbox.less +++ /dev/null @@ -1,135 +0,0 @@ -.fuelux { - - .checkbox { - - &.highlight { - - // padding: 4px; - - & + .checkbox.highlight { - margin-top: -5px; - } - - & label.checkbox-custom { - padding: 4px 4px 4px 24px; - //margin-left: -8px; - } - - &.checked label.checkbox-custom, label.checked.checkbox-custom { - background: @gray90; - border-radius: @baseBorderRadius; - } - } - - /* for keyboard tabbing */ - input[type="checkbox"]:focus + .checkbox-label, - input[type="checkbox"]:hover + .checkbox-label, - .checkbox-label:hover - { - color: @gray60; - } - - input[type="checkbox"]:disabled:focus + .checkbox-label, - input[type="checkbox"]:disabled:hover + .checkbox-label, - &.disabled label:hover - { - color: inherit; - } - - } - - .form-horizontal .checkbox-inline { - padding-top: 0; - } - - .input-group-addon.checkbox-custom.checkbox-inline:before { - left: 11px; - top: 9px; - } - - .checkbox-custom { - position: relative; - - &:before { - #fuelux > .icon-base-styles("Glyphicons Halflings"); - border: 1px solid @gray67; - border-radius: @baseBorderRadius; - color: @true-white; - content: " "; - font-size: 9px; - height: 14px; - left: 0px; - padding: 1px 0 0 1px; - position: absolute; - top: 3px; - width: 14px; - } - - /* for keyboard tabbing */ - &:active:before, &:focus:before { - color: @focusColor; - cursor: pointer; - box-shadow: inset 0px 0px 2px 1px @focusColor, 0px 0px 5px 0px @focusColor; - } - - &.highlight { - &:before { - left: 4px; - top: 6px; - } - } - - &.checked { - &:before { - background: @checkboxPrimaryColor; - border-color: @checkboxPrimaryColor; - content: "\e013"; - } - } - - &.disabled { - cursor: not-allowed; - opacity: .65; - - &:before - { - cursor: not-allowed; - opacity: .65; - } - } - - &.checkbox-inline { - &:before { - left: 0; - top: 3px; - } - - &.highlight { - padding: 4px 4px 4px 24px; - left: -4px; - - &:before { - left: 4px; - top: 7px; - } - - &.checked { - background: @gray90; - border-radius: @baseBorderRadius; - } - } - } - - - /* for keyboard tabbing */ - input[type="checkbox"]:focus + .checkbox-label { - color: @gray60; - } - - } - - label.checkbox-custom.checkbox-inline { - padding-left: 20px; - } - -} diff --git a/elgg_clean/bower_components/fuelux/less/combobox.less b/elgg_clean/bower_components/fuelux/less/combobox.less deleted file mode 100644 index b4ee0b76..00000000 --- a/elgg_clean/bower_components/fuelux/less/combobox.less +++ /dev/null @@ -1,16 +0,0 @@ -.fuelux { - - .combobox { - &.disabled { - .input-group-btn { - cursor: not-allowed; - } - } - input { - &::-ms-clear { - display:none; - } - } - } - -} diff --git a/elgg_clean/bower_components/fuelux/less/datepicker.less b/elgg_clean/bower_components/fuelux/less/datepicker.less deleted file mode 100644 index 389b5395..00000000 --- a/elgg_clean/bower_components/fuelux/less/datepicker.less +++ /dev/null @@ -1,390 +0,0 @@ -.fuelux { - - .datepicker { - - &-calendar { - padding: 16px 16px 0; - min-height: 262px; - - button { - border: 0; - padding: 0; - background-color: transparent; - } - - &-days { - height: 182px; - margin: 10px 0 12px; - width: 100%; - - thead { - border-bottom: 1px solid @gray80; - } - - /* for spacing */ - tbody:before { - color: transparent; - content: "\200C"; - display: block; - line-height: 3px; - visibility: hidden; - } - - td, th { - font-size: 14px; - height: 32px; - text-align: center; - vertical-align: middle; - width: 14.29%; - } - - td { - b, button { - color: @gray20; - display: inline-block; - font-weight: normal; - height: 30px; - text-decoration: none; - width: 30px; - } - - b { - line-height: 30px; - } - - span { - display: block; - - border-radius: @baseBorderRadius; - - &:hover { - background: @selectableHover; - text-decoration: none; - } - } - - &.current-day { - span { - border: 1px solid @gray20; - } - } - - &.last-month, &.next-month { - background: darken(@selected, 10%); - &.first { - border-top-left-radius: @baseBorderRadius; - border-bottom-left-radius: @baseBorderRadius; - padding-left: 1px; - } - &.last { - border-top-right-radius: @baseBorderRadius; - border-bottom-right-radius: @baseBorderRadius; - padding-right: 1px; - } - } - - &.past { - b, button { - color: lighten(@gray20, 40%); - } - } - - &.restricted { - b, button { - cursor: no-drop; - position: relative; - - &:before { - border-top: 1px solid darken(@btnDangerBackground, 10%); - bottom: 0; - content: " "; - display: block; - left: 5px; - position: absolute; - right: 5px; - top: 50%; - } - - &:hover { - background: none; - } - } - } - - &.selected { - span { - background: @selected; - - &:hover { - background: @selectedHover; - } - } - - b, button { - color: @gray53; - } - - &.current-day { - box-shadow: 0 0 0 1px @true-white offset; - b, button { - color: @gray13; - } - - span { - &:hover { - b, button { - border-color: @datepickerHover; - } - } - } - } - } - } - - th { - font-weight: bold; - height: 22px; - vertical-align: top; - } - } - - &-header { - .clearfix; - - button { - border: 0; - padding: 0; - background-color: transparent; - } - - .title { - margin: 0 auto; - text-align: center; - display: block; - width: 174px; - color: @gray13; - font-size: 20px; - line-height: 30px; - text-decoration: underline; - vertical-align: middle; - - &:hover { - color: @datepickerHover; - text-decoration: underline; - } - - &.disabled { - cursor: default; - pointer-events: none; - text-decoration: none; - } - - .month { - display: inline; - margin: 0; - padding: 0; - - span { - display: none; - - &.current { - display: inline; - } - } - } - } - - .next, .prev { - background: @gray40; - background-clip: padding-box; - border-radius: 30px; - cursor: pointer; - float: left; - height: 30px; - text-align: center; - width: 30px; - - span.glyphicon { - color: @true-white; - font-size: 16px; - line-height: 30px; - } - - &:hover { - background: @datepickerHover; - } - } - - .next { - float: right; - - span.glyphicon { - line-height: 28px; - } - } - } - - &-footer { - background: @gray90; - background-clip: padding-box; - border-radius: 0 0 4px 4px; - border-top: 1px solid @gray80; - height: 30px; - margin: 0 -16px; - padding: 4px 14px; - - .datepicker-today { - color: @gray20; - font-size: 14px; - text-decoration: underline; - - &:hover { - color: @datepickerHoverAlt; - text-decoration: underline; - } - - &.disabled { - color: @gray53; - cursor: default; - pointer-events: none; - - &:hover { - color: @gray53; - } - } - } - } - } - - &-calendar-wrapper { - border: 1px solid @gray46; - min-height: 20px; - padding: 0; - width: 300px; - } - - &-wheels { - display: none; - - ul button { - border: 0; - padding: 0; - background-color: transparent; - } - - &-footer { - background: @gray90; - border-radius: 0 0 4px 4px; - border-top: 1px solid @gray80; - clear: both; - - .datepicker-wheels-back { - display: block; - color: @gray13; - float: left; - line-height: 22px; - border: 0; - background-color: transparent; - - &:hover { - color: @datepickerHoverAlt; - } - } - - .datepicker-wheels-select { - float: right; - background-color: transparent; - color: @focusColor; - - &:hover { - color: @datepickerHoverAlt; - } - } - } - - &-month, &-year { - float: left; - width: 50%; - - ul { - height: 217px; - list-style-type: none; - margin: 0; - overflow: auto; - padding: 0; - text-align: center; - - li { - margin: 4px 0; - - button { - display: block; - width: 100%; - text-align: center; - color: @gray27; - display: block; - font-size: 16px; - line-height: 24px; - text-decoration: none; - - &:hover { - background: @infoBackground; - text-decoration: none; - } - } - - &.selected { - button { - background: @datepickerHoverAlt; - color: @true-white; - - &:hover { - background: @datepickerHover; - } - } - } - } - } - - .header { - background: @gray90; - background-clip: padding-box; - border-bottom: 1px solid @gray80; - border-radius: 4px 0 0 0; - color: @gray13; - font-size: 20px; - font-weight: bold; - line-height: 30px; - margin-top: 0; - margin-bottom: 0; - text-align: center; - } - - &.full { - border-left: 0; - width: 100%; - - .header { - border-radius: 4px 4px 0 0; - } - } - } - - &-year { - border-left: 1px solid @gray80; - float: right; - - .header { - border-radius: 0 4px 0 0; - } - } - } - - input { - &::-ms-clear { - display:none; - } - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/forms.less b/elgg_clean/bower_components/fuelux/less/forms.less deleted file mode 100644 index a1d47f27..00000000 --- a/elgg_clean/bower_components/fuelux/less/forms.less +++ /dev/null @@ -1,204 +0,0 @@ -// mixins -.checkbox-radio-hover() { - box-shadow: inset 0px 0px 2px 1px rgba(91, 157, 217, .7), 0px 0px 5px 0px rgba(91, 157, 217, .7); -} - -.checkbox-radio-focus() { - box-shadow: inset 0px 0px 2px 1px rgb(91, 157, 217), 0px 0px 5px 0px rgb(91, 157, 217); -} - - -.fuelux .radio, .fuelux .checkbox { - - &-inline { - padding-left: 0; - - &.highlight { - left: -8px; - } - - // for checkboxes without text labels and alignment in .input-group-addon container - label { - margin-bottom: 0; - } - } - - // This handy trick allows us to make rules for .radio, .checkbox, .radio-inline, and, .checkbox-inline all at once. - &, &-inline { - - // Sometimes the wrapping containter is a div with .checkbox or .radio, and has a label within it. - // Sometimes the label itself is the wrapping container, and has .checkbox or .radio on it. - // The use of the amperstand "parent selector" here allows us to cover many scenarios at once, with terse, but elegant, code. - label&, .input-label&, & label, & .input-label { - &:hover:before { - .checkbox-radio-hover(); - } - } - - label, .input-label, label& { - cursor: pointer; - font-weight: normal; - } - - &.highlight { - - input[type="checkbox"]:not(.sr-only), input[type="radio"]:not(.sr-only) { - & ~ label { - padding: 4px; - border-radius: @baseBorderRadius; - } - &:checked ~ label { - background-color: @gray90; - opacity: 1; - z-index: 0; - } - } - } - - input[type="checkbox"]:not(.sr-only), input[type="radio"]:not(.sr-only) { - - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0,0,0,0); - border: 0; - - & ~ label { - padding-left: 0; - &:before { - font-family:"Glyphicons Halflings"; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - speak: none; - border: 1px solid @gray67; - color: @true-white; - font-size: 9px; - width: 14px; - height: 14px; - padding: 0; - margin-top: 0; - margin-bottom: -2px; - cursor: pointer; - display: inline-block; - text-align: left; - z-index: 2; - content: ""; - } - - } - - - - /* for keyboard tabbing */ - &:active ~ label, &:focus ~ label { - color: @text-color; - color: @checkboxPrimaryColor; - cursor: pointer; - - &:before { - .checkbox-radio-focus(); - outline: none; - } - - &, &:hover { - color: @text-color; - cursor: pointer; - } - } - &:active:hover ~ label, &:focus:hover ~ label, &:focus:hover ~ label, &:checked:hover ~ label { - &, &:hover { - color: @text-color; - cursor: pointer; - } - } - - - - - &[disabled="disabled"], &[disabled], &:disabled { - & ~ label, & ~ label:before { - color: @text-color; - opacity: .65; - cursor: not-allowed !important; - outline: none; - box-shadow: none; - } - } - - &:checked ~ label { - &:before { - background: @checkboxPrimaryColor; - border-color: @checkboxPrimaryColor; - } - } - - } - - &.highlight { - &:before { - left: 4px; - top: 7px; - } - } - } - - - &.highlight { - input[type="checkbox"]:not(.sr-only), input[type="radio"]:not(.sr-only) { - & ~ label { - left: -8px; - position: relative; - } - } - } - - - &-inline { - padding-left: 0; - &.highlight { - // left: -8px; - } - &:before { - left: 0; - top: 3px; - } - } - -} - - - -// Allows multiline labels next to checkboxes and radio -// Should be wrapped in `<form class="form-horizontal"><div class="form-group">` -.fuelux { - - .checkbox.multiline, .radio.multiline { - float: left; - margin-left: 15px; - } - -} - - -.fuelux { - - .checkbox.multiline ~ .control-label, .radio.multiline ~ .control-label { - float: left; - width: 80%; - margin-left: 10px; - text-align: left; - - & > label { - font-weight: normal; - cursor: pointer; - } - } - -} - diff --git a/elgg_clean/bower_components/fuelux/less/fuelux.less b/elgg_clean/bower_components/fuelux/less/fuelux.less deleted file mode 100644 index 1e6d781d..00000000 --- a/elgg_clean/bower_components/fuelux/less/fuelux.less +++ /dev/null @@ -1,34 +0,0 @@ -@charset "UTF-8"; - - -// Core variables, mixins, and icons -@import "variables.less"; // Modify this for custom colors, font-sizes, etc -@import "mixins.less"; -@import "icons.less"; - -// Fuel UX controls -@import "forms.less"; // forms.less contains code shared between form elements. -@import "checkbox.less"; // Checkbox styles that will be deprecated. -@import "checkbox-no-js.less"; // Checkbox styles that are not dependant upon custom javascript controls. -@import "radio.less"; // Radio styles that will be deprecated. -@import "radio-no-js.less"; // Radio styles that are not dependant upon custom javascript controls. -@import "combobox.less"; -@import "datepicker.less"; -@import "infinite-scroll.less"; -@import "intelligent-dropdown.less"; -@import "loader.less"; -@import "pillbox.less"; -@import "placard.less"; -@import "repeater.less"; -@import "repeater-list.less"; -@import "repeater-thumbnail.less"; -@import "spinbox.less"; -@import "scheduler.less"; -@import "search.less"; -@import "selectlist.less"; -@import "picker.less"; -@import "tree.less"; -@import "wizard.less"; -@import "utility.less"; - - diff --git a/elgg_clean/bower_components/fuelux/less/icons.less b/elgg_clean/bower_components/fuelux/less/icons.less deleted file mode 100644 index 88ddc96d..00000000 --- a/elgg_clean/bower_components/fuelux/less/icons.less +++ /dev/null @@ -1,67 +0,0 @@ -@font-face { - font-family: "fuelux"; - src:url("@{fueluxFontPath}fuelux.eot"); - src:url("@{fueluxFontPath}fuelux.eot?#iefix") format("embedded-opentype"), - url(data:font-woff;base64,d09GRk9UVE8AAAUUAAsAAAAABuAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAAAegAAAIisWS2RkZGVE0AAALwAAAAGQAAABxvEtzhR0RFRgAAAwwAAAAdAAAAIAA4AARPUy8yAAADLAAAAEoAAABgL7lMbGNtYXAAAAN4AAAAPAAAAUrAGiK3aGVhZAAAA7QAAAAvAAAANgDSVuNoaGVhAAAD5AAAABwAAAAkBCkCA2htdHgAAAQAAAAAGgAAABoHmgL4bWF4cAAABBwAAAAGAAAABgALUABuYW1lAAAEJAAAAN0AAAF3kxoWmXBvc3QAAAUEAAAAEAAAACAAAwABeJw90M9rE0EUB/D30uzusLtuNTqiGIs/+gt6ifVHtgfRHqQHLTYumEsrpSSWRVNozNJc2t6S2K2bBATbS0tLe9jDUlJ6aS85hFT8H6SCFPwTZiCIbpnq6fMe8+Y7j0GIRgERlbdO9r1TBIwAwijvi/D+Ln4tuqqjq3e5erRHhetW7I/r/i90xfN4ndelOHztjgNcjMP3S3HQ41iIgX4WQ6AbrsJN6IUhGIYReApjMA6WM2c/SyQSgnuCYcF9wQPBQ8EjQVJgCkbEvudbA2AZK/gRV9DFVfyEHlaxBhpiJPlk7GX6TebdhxWDDfEb9JbaGezI9Laa74zTOyqTn9O7KosFtFdlg0ymfeE5e0X7VTZaogOqwXz+OOwM/pqbZz2vs+VwyGC/2YXwjsGWf4YBxrdfYZjhMT9M/veQwU7ZHD3MNianstmpyUb28KjROOox+OcrLnV1Nfysy0AQ6YD5Yjpf+jJxLB0Eza2WR0zFruSW5otEq7W2m3v7pJ2SFvKLubJNNPvAaVZa5ET27LXcxjzRkopVS29n9ki7Le0s+ItBmWjHE9KMnXasCjlRAs9f290gWskqpGczJNWWNnfW/WpAtB9Kq9Qs7M+SVErKb+bW7SrRgpmttGcRU64ES35xl2h/Ac9Ys4h4nGNgYGBkAILzccd+gelbXJ9hNABYswg7AAAAeJxjYGRgYOADYgkGEGBiYARCLiBmAfMYAAS4AD0AAAB4nGNgZmJgnMDAysDB6MOYxsDA4A6lvzJIMrQwMDAxsHIywIEAgskQkOaawuDwgOEBJ+OD/w8Y9Bj//v8LFGaEK1AAQkYALokNlwAAeJxjYGBgZoBgGQZGBhBwAfIYwXwWBg0gzQakGRmYGBgecP7/D1LwgAFEKzBC1QMBIxsDgjNCAQBlrAaweJxjYGRgYADiH2cX2sfz23xl4GZiAIHzt7g+w2lmBmbGv4x/gVwOBrA0AFSyC6wAeJxjYGRgYPzLwMCgx8QAAkA2IwMqYAIANwYCMQIAAAACAAADARUBhwGDAQ8AWAADAAMAXACnAAAAAFAAAAsAAHicbY49asNAEIU/2bJMsEmX1JsipYS0BAwuU/gAKdy7WAuDkPDagtzDkD5djpED5AQ5TZ7kKVJ4l9n59vHmB1jyQcJwEjLujSfMeTae8sTROJXn03jGgm/jTPdXziS9k7IcqwaeqOOD8ZRXcuNUnovxjEe+jDPpP+zpCTR632Hfh6ZXfpNUS2rYEfUNdd/sBBs6Ws5jjnIEHJ6CUnmt+N/sqnitsVJ4eSpe1KJrz5su1sH5onRrdx0p8Pkq92Uly82VtpIiJw7jCk7NhrFsQzwdutZVRXm78A9U7zY2AAAAeJxjYGZABowMaAAAAI4ABQ==) format("woff"), - url("@{fueluxFontPath}fuelux.ttf") format("truetype"), - url("@{fueluxFontPath}fuelux.svg#fuelux") format("svg"); - font-weight: normal; - font-style: normal; -} - -//This could be an interesting addition... -//[data-icon]:before { -// #fuelux > .icon-base-styles(); -// content: attr(data-icon); -//} - -.fuelux { - - [class^="fueluxicon-"]:before, - [class*=" fueluxicon-"]:before { - #fuelux > .icon-base-styles(); - } - - .fueluxicon-loader-full:before { - content: "\e000"; - } - - .fueluxicon-loader-1:before { - content: "\e001"; - } - - .fueluxicon-loader-2:before { - content: "\e002"; - } - - .fueluxicon-loader-3:before { - content: "\e003"; - } - - .fueluxicon-loader-4:before { - content: "\e004"; - } - - .fueluxicon-loader-5:before { - content: "\e005"; - } - - .fueluxicon-loader-6:before { - content: "\e006"; - } - - .fueluxicon-loader-7:before { - content: "\e007"; - } - - .fueluxicon-loader-8:before { - content: "\e008"; - } - - //tree - - .fueluxicon-bullet:before { - content: "\e009"; - } - -} diff --git a/elgg_clean/bower_components/fuelux/less/infinite-scroll.less b/elgg_clean/bower_components/fuelux/less/infinite-scroll.less deleted file mode 100644 index 96ed8790..00000000 --- a/elgg_clean/bower_components/fuelux/less/infinite-scroll.less +++ /dev/null @@ -1,31 +0,0 @@ -.fuelux { - - .infinitescroll { - overflow-y: auto; - - .infinitescroll-end { - clear: both; - font-style: italic; - padding: 6px; - text-align: center; - } - - .infinitescroll-load { - clear: both; - padding: 6px; - - button { - padding: 5px 12px; - width: 100%; - } - - .loader { - font-size: 32px; - height: 32px; - margin: 0 auto; - width: 32px; - } - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/intelligent-dropdown.less b/elgg_clean/bower_components/fuelux/less/intelligent-dropdown.less deleted file mode 100644 index 8f3cdf4f..00000000 --- a/elgg_clean/bower_components/fuelux/less/intelligent-dropdown.less +++ /dev/null @@ -1,9 +0,0 @@ -.fuelux { - - .dropUp { - -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/loader.less b/elgg_clean/bower_components/fuelux/less/loader.less deleted file mode 100644 index dae9b16e..00000000 --- a/elgg_clean/bower_components/fuelux/less/loader.less +++ /dev/null @@ -1,63 +0,0 @@ -.fuelux { - - .loader { - height: 64px; - font-size: 64px; - position: relative; - width: 64px; - - &:after, &:before { - #fuelux > .icon-base-styles(); - - bottom: 0; - display: block; - left: 0; - position: absolute; - right: 0; - top: 0; - } - - &:before { - content: '\e000'; - opacity: 0.33; - } - - &.iefix:before{ - color: @gray74; - opacity: 1; - } - - &[data-frame="1"]:after { - content: '\e001'; - } - - &[data-frame="2"]:after { - content: '\e002'; - } - - &[data-frame="3"]:after { - content: '\e003'; - } - - &[data-frame="4"]:after { - content: '\e004'; - } - - &[data-frame="5"]:after { - content: '\e005'; - } - - &[data-frame="6"]:after { - content: '\e006'; - } - - &[data-frame="7"]:after { - content: '\e007'; - } - - &[data-frame="8"]:after { - content: '\e008'; - } - } - -} diff --git a/elgg_clean/bower_components/fuelux/less/mixins.less b/elgg_clean/bower_components/fuelux/less/mixins.less deleted file mode 100644 index 95d8c027..00000000 --- a/elgg_clean/bower_components/fuelux/less/mixins.less +++ /dev/null @@ -1,121 +0,0 @@ -// For clearing floats -.clearfix { - *zoom: 1; - &:before, - &:after { - display: table; - content: ""; - // Fixes Opera/contenteditable bug: - // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 - line-height: 0; - } - &:after { - clear: both; - } -} - -#fuelux { - // Single side border-radius - .border-top-radius(@radius) { - border-top-right-radius: @radius; - border-top-left-radius: @radius; - } - .border-right-radius(@radius) { - border-bottom-right-radius: @radius; - border-top-right-radius: @radius; - } - .border-bottom-radius(@radius) { - border-bottom-right-radius: @radius; - border-bottom-left-radius: @radius; - } - .border-left-radius(@radius) { - border-bottom-left-radius: @radius; - border-top-left-radius: @radius; - } - - // Gradient Bar Colors for buttons and alerts - .gradient-bar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) { - color: @textColor; - text-shadow: @textShadow; - #gradient > .vertical(@primaryColor, @secondaryColor); - border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%); - border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%); - } - - // Gradients - .vertical(@startColor: @gray33, @endColor: @gray20) { - background-color: mix(@startColor, @endColor, 60%); - background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+ - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+ - background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+ - background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10 - background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10 - background-repeat: repeat-x; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down - } - - // Icon Base Styles - .icon-base-styles(@fontFamily: "fuelux"){ - font-family: @fontFamily !important; - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - line-height: 1; - speak: none; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - - // Disables selection of text - .no-selection-allowed(){ - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; - } - - // Opacity - .opacity(@opacity) { - opacity: @opacity / 100; - filter: ~"alpha(opacity=@{opacity})"; - } - - // Helpers - // ------------------------- - .data-label() { - text-transform: uppercase; - font-size: 10px; - margin-bottom: 2px; - text-shadow: 0 1px @true-white; - color: @gray40; - } - - .data-value() { - font-size: 14px; - } - - .section-heading() { - font-size: 16px; - color: @gray20; - margin: 0 0 10px; - padding: 0; - text-shadow: 0 1px @true-white; - } - - .text-emphasis-variant(@color) { - color: @color; - &:hover { - color: darken(@color, 10%); - } - } - - .vertical-align() { - margin: auto; - position: absolute; - top: 0; - bottom: 0; - } - -} diff --git a/elgg_clean/bower_components/fuelux/less/picker.less b/elgg_clean/bower_components/fuelux/less/picker.less deleted file mode 100644 index 807b6c6c..00000000 --- a/elgg_clean/bower_components/fuelux/less/picker.less +++ /dev/null @@ -1,166 +0,0 @@ -.fuelux { - - .picker { - display: inline-block; - position: relative; - - &[data-ellipsis="true"] { - &.showing { - input.picker-field { - overflow: visible; - text-overflow: clip; - white-space: normal; - } - } - - input.picker-field { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - - &::-ms-clear { - display:none; - } - } - - textarea.picker-field { - &[readonly] { - overflow: hidden; - } - } - } - - &.showing { - .picker-footer, - .picker-header, - .picker-popup { - display: block; - z-index: 1; - } - - input.picker-field, textarea.picker-field { - background: @true-white; - border: 1px solid @gray80; - box-shadow: none; - position: relative; - z-index: 1; - } - } - - input.picker-field, textarea.picker-field { - resize: none; - - &[readonly] { - background: @true-white; - cursor: auto; - - &.glass { - background: none; - - &:hover { - background: @infoBackground; - cursor: pointer; - } - } - } - - &:focus { - border: 1px solid @gray80; - box-shadow: none; - } - } - - &-cancel { - font-size: 12px; - margin-right: 4px; - vertical-align: middle; - } - - &-footer, - &-header { - display: none; - left: 0; - line-height: 1; - right: 0; - } - - &-footer { - padding: 8px 10px 8px 0; - text-align: right; - bottom: 0; - position: absolute; - } - - &-header { - height: 31px; - padding: 8px 0 0px 10px; - - h1, h2, h3, h4, h5, h6 { - margin: 0; - } - } - - &-popup { - background: @infoBackground; - background-clip: padding-box; - border: 1px solid @gray80; - border-radius: 4px; - box-shadow: 0 0 0 1px @true-white inset; - display: none; - position: absolute; - padding-left: 6px; - padding-right: 6px; - height: 234px; - width: 350px; - margin: 4px 0; - - } - - .picker-body.well { - background-color: #fff; - overflow: scroll; - padding: 0; - height: 165px; - } - - .tree { - border: none; - } - - .glass { - background: transparent; - border: 1px solid @true-white; - box-shadow: none; - - &:hover { - background: @infoBackground; - border-color: @focusColor; - cursor: pointer; - - &[disabled] { - background: transparent; - border-color: @true-white; - cursor: not-allowed; - } - } - - &:focus { - background: @true-white; - border-color: @focusColor; - box-shadow: inset 0 1px 1px fade(@true-black, 75%), 0 0 8px fade(@focusColor, 60%); - cursor: auto; - - &[disabled] { - background: transparent; - border-color: @true-white; - cursor: not-allowed; - } - } - - &[disabled] { - cursor: not-allowed; - } - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/pillbox.less b/elgg_clean/bower_components/fuelux/less/pillbox.less deleted file mode 100644 index 1557c5f4..00000000 --- a/elgg_clean/bower_components/fuelux/less/pillbox.less +++ /dev/null @@ -1,167 +0,0 @@ -.fuelux { - - .pillbox { - border: 1px solid @gray74; - border-radius: 4px; - cursor: text; - padding: 3px; - - &[data-readonly] { - border: 1px solid transparent; - - &.truncate { - .pillbox-input-wrap { - display: inline-block; - - &.truncated { - display: none; - } - } - - .pillbox-more { - display: inline; - } - } - - .pill { - span.glyphicon-close { - display: none; - } - } - - .pillbox-add-item { - display: none; - } - - .pillbox-input-wrap { - display: none; - - button.dropdown-toggle { - display: none; - } - } - } - - &.pills-editable { - .pill-group { - .pill { - span { - cursor: text; - - &.glyphicon-close { - cursor: pointer; - } - } - } - } - } - - > .pill-group { - margin: 0; - padding: 0; - width: 100%; - - > .pill { - margin: 2px; - cursor: default; - float:left; - word-break: break-all; - - &.pillbox-highlight { - outline: 1px dotted @gray60; - } - - &.truncated { - display: none; - } - - .pillbox-list-edit { - border: none; - color: @gray20; - font-weight: normal; - border-radius: 2px; - - &:focus { - outline: none; - border: none; - } - } - - .glyphicon-close { - cursor: pointer; - top: -1px; - left: 2px; - - &:before { - content: " \00d7"; - } - - &:hover { - opacity: .4; - } - } - - } - } - - .pillbox-input-wrap { - position: relative; - margin: 4px 0 3px 3px; - float: left; - - &.editing { - border: 1px solid @gray80; - border-radius: 4px; - margin: 2px 0 3px 3px; - - input.pillbox-add-item { - border-radius: 4px; - color: @gray20; - height: 32px; - } - } - } - - .pillbox-add-item { - border: none; - box-shadow: none; - - &:focus { - outline: none; - border: none; - } - } - - .pillbox-more { - cursor: pointer; - display: none; - line-height: 30px; - } - - .suggest { - max-height: 166px; // arbitrary number - overflow-y: auto; - - > li { - white-space: nowrap; - cursor: pointer; - padding: 3px 20px; - - &.pillbox-suggest-sel { - background-color: @gray93; - } - - &:hover { - background-color: @gray93; - } - } - } - input { - - &::-ms-clear { - display:none; - } - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/placard.less b/elgg_clean/bower_components/fuelux/less/placard.less deleted file mode 100644 index b045f977..00000000 --- a/elgg_clean/bower_components/fuelux/less/placard.less +++ /dev/null @@ -1,153 +0,0 @@ -.fuelux { - - .placard { - display: inline-block; - position: relative; - - &[data-ellipsis="true"] { - &.showing { - input.placard-field { - overflow: visible; - text-overflow: clip; - white-space: normal; - } - } - - input.placard-field { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - - &::-ms-clear { - display:none; - } - } - - textarea.placard-field { - &[readonly] { - overflow: hidden; - } - } - } - - &.showing { - .placard-footer, - .placard-header, - .placard-popup { - display: block; - z-index: 1; - } - - input.placard-field, textarea.placard-field { - background: @true-white; - border: 1px solid @gray80; - box-shadow: none; - position: relative; - z-index: 1; - } - } - - input.placard-field, textarea.placard-field { - resize: none; - - &[readonly] { - background: @true-white; - cursor: auto; - - &.glass { - background: none; - - &:hover { - background: @infoBackground; - cursor: pointer; - } - } - } - - &:focus { - border: 1px solid @gray80; - box-shadow: none; - } - } - - &-cancel { - font-size: 12px; - margin-right: 4px; - vertical-align: middle; - } - - &-footer, - &-header { - display: none; - left: 0; - line-height: 1; - position: absolute; - right: 0; - } - - &-footer { - padding: 4px 0 8px 0; - text-align: right; - top: 100%; - } - - &-header { - bottom: 100%; - padding: 8px 0 4px 0; - - h1, h2, h3, h4, h5, h6 { - margin: 0; - } - } - - &-popup { - background: @infoBackground; - background-clip: padding-box; - border: 1px solid @gray80; - border-radius: 4px; - bottom: -8px; - box-shadow: 0 0 0 1px @true-white inset; - display: none; - left: -8px; - position: absolute; - right: -8px; - top: -8px; - } - - .glass { - background: transparent; - border: 1px solid @true-white; - box-shadow: none; - - &:hover { - background: @infoBackground; - border-color: @focusColor; - cursor: pointer; - - &[disabled] { - background: transparent; - border-color: @true-white; - cursor: not-allowed; - } - } - - &:focus { - background: @true-white; - border-color: @focusColor; - box-shadow: inset 0 1px 1px fade(@true-black, 75%), 0 0 8px fade(@focusColor, 60%); - cursor: auto; - - &[disabled] { - background: transparent; - border-color: @true-white; - cursor: not-allowed; - } - } - - &[disabled] { - cursor: not-allowed; - } - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/preloader.less b/elgg_clean/bower_components/fuelux/less/preloader.less deleted file mode 100644 index 745d9777..00000000 --- a/elgg_clean/bower_components/fuelux/less/preloader.less +++ /dev/null @@ -1,290 +0,0 @@ -@keyframes fuelux-preloader-1 -{ - 0% {opacity: 1;} - 12.4% {opacity: 1;} - 12.5% {opacity: 0;} - 100% {opacity: 0;} -} -@-webkit-keyframes fuelux-preloader-1 -{ - 0% {opacity: 1;} - 12.4% {opacity: 1;} - 12.5% {opacity: 0;} - 100% {opacity: 0;} -} - - -@keyframes fuelux-preloader-2 -{ - 0% {opacity: 0;} - 12.4% {opacity: 0;} - 12.5% {opacity: 1;} - 24.9% {opacity: 1;} - 25% {opacity: 0;} - 100% {opacity: 0;} -} -@-webkit-keyframes fuelux-preloader-2 -{ - 0% {opacity: 0;} - 12.4% {opacity: 0;} - 12.5% {opacity: 1;} - 24.9% {opacity: 1;} - 25% {opacity: 0;} - 100% {opacity: 0;} -} - - -@keyframes fuelux-preloader-3 -{ - 0% {opacity: 0;} - 24.9% {opacity: 0;} - 25% {opacity: 1;} - 37.4% {opacity: 1;} - 37.5% {opacity: 0;} - 100% {opacity: 0;} -} -@-webkit-keyframes fuelux-preloader-3 -{ - 0% {opacity: 0;} - 24.9% {opacity: 0;} - 25% {opacity: 1;} - 37.4% {opacity: 1;} - 37.5% {opacity: 0;} - 100% {opacity: 0;} -} - - -@keyframes fuelux-preloader-4 -{ - 0% {opacity: 0;} - 37.4% {opacity: 0;} - 37.5% {opacity: 1;} - 49.4% {opacity: 1;} - 50% {opacity: 0;} - 100% {opacity: 0;} -} -@-webkit-keyframes fuelux-preloader-4 -{ - 0% {opacity: 0;} - 37.4% {opacity: 0;} - 37.5% {opacity: 1;} - 49.4% {opacity: 1;} - 50% {opacity: 0;} - 100% {opacity: 0;} -} - - -@keyframes fuelux-preloader-5 -{ - 0% {opacity: 0;} - 49.4% {opacity: 0;} - 50% {opacity: 1;} - 62.4% {opacity: 1;} - 62.5% {opacity: 0;} - 100% {opacity: 0;} -} -@-webkit-keyframes fuelux-preloader-5 -{ - 0% {opacity: 0;} - 49.4% {opacity: 0;} - 50% {opacity: 1;} - 62.4% {opacity: 1;} - 62.5% {opacity: 0;} - 100% {opacity: 0;} -} - - -@keyframes fuelux-preloader-6 -{ - 0% {opacity: 0;} - 62.4% {opacity: 0;} - 62.5% {opacity: 1;} - 74.9% {opacity: 1;} - 75% {opacity: 0;} - 100% {opacity: 0;} -} -@-webkit-keyframes fuelux-preloader-6 -{ - 0% {opacity: 0;} - 62.4% {opacity: 0;} - 62.5% {opacity: 1;} - 74.9% {opacity: 1;} - 75% {opacity: 0;} - 100% {opacity: 0;} -} - - -@keyframes fuelux-preloader-7 -{ - 0% {opacity: 0;} - 74.9% {opacity: 0;} - 75% {opacity: 1;} - 87.4% {opacity: 1;} - 87.5% {opacity: 0;} - 100% {opacity: 0;} -} -@-webkit-keyframes fuelux-preloader-7 -{ - 0% {opacity: 0;} - 74.9% {opacity: 0;} - 75% {opacity: 1;} - 87.4% {opacity: 1;} - 87.5% {opacity: 0;} - 100% {opacity: 0;} -} - - -@keyframes fuelux-preloader-8 -{ - 0% {opacity: 0;} - 87.4% {opacity: 0;} - 87.5% {opacity: 1;} - 87.6% {opacity: 1;} - 100% {opacity: 0;} - 100% {opacity: 0;} -} -@-webkit-keyframes fuelux-preloader-8 -{ - 0% {opacity: 0;} - 87.4% {opacity: 0;} - 87.5% {opacity: 1;} - 87.6% {opacity: 1;} - 100% {opacity: 0;} - 100% {opacity: 0;} -} - - -.fuelux { - - .preloader { - height: 64px; - font-size: 64px; - position: relative; - width: 64px; - - &.iefix span, &:before, b, i { - #fuelux > .icon-base-styles(); - } - - &:before { - content: "\e00b"; /*.fueluxicon-loader-full:before*/ - left: 0; - opacity: 0.33; - position: absolute; - top: 0; - } - - &.iefix { - &:before { - display: none; - } - - b { - display: block; - left: 0; - position: absolute; - top: 0; - } - - i { - display: none; - - &:after, - &:before - { - display: none; - } - } - - span { - display: block; - font-size: inherit; - height: 100%; - left: 0; - opacity: 0.33; - position: absolute; - top: 0; - width: 100%; - - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=33)"; - filter: alpha(opacity=33); - } - } - - i { - &:after, - &:before - { - display: block; - left: 0; - opacity: 0; - position: absolute; - top: 0; - - animation: 1s steps(8) infinite normal running; - animation-timing-function: linear; - animation-play-state: running; - -webkit-animation: 1s steps(8) infinite normal running; - -webkit-animation-timing-function: linear; - -webkit-animation-play-state: running; - } - - &:nth-child(1){ - &:before { - content: "\e003"; /*.fueluxicon-loader-1:before*/ - animation-name: fuelux-preloader-1; - -webkit-animation-name: fuelux-preloader-1; - } - - &:after { - content: "\e004"; /*.fueluxicon-loader-2:before*/ - animation-name: fuelux-preloader-2; - -webkit-animation-name: fuelux-preloader-2; - } - } - - &:nth-child(2){ - &:before { - content: "\e005"; /*.fueluxicon-loader-3:before*/ - animation-name: fuelux-preloader-3; - -webkit-animation-name: fuelux-preloader-3; - } - - &:after { - content: "\e006"; /*.fueluxicon-loader-4:before*/ - animation-name: fuelux-preloader-4; - -webkit-animation-name: fuelux-preloader-4; - } - } - - &:nth-child(3){ - &:before { - content: "\e007"; /*.fueluxicon-loader-5:before*/ - animation-name: fuelux-preloader-5; - -webkit-animation-name: fuelux-preloader-5; - } - - &:after { - content: "\e008"; /*.fueluxicon-loader-6:before*/ - animation-name: fuelux-preloader-6; - -webkit-animation-name: fuelux-preloader-6; - } - } - - &:nth-child(4){ - &:before { - content: "\e009"; /*.fueluxicon-loader-7:before*/ - animation-name: fuelux-preloader-7; - -webkit-animation-name: fuelux-preloader-7; - } - - &:after { - content: "\e00a"; /*.fueluxicon-loader-8:before*/ - animation-name: fuelux-preloader-8; - -webkit-animation-name: fuelux-preloader-8; - } - } - } - } - -} diff --git a/elgg_clean/bower_components/fuelux/less/radio-no-js.less b/elgg_clean/bower_components/fuelux/less/radio-no-js.less deleted file mode 100644 index 7f791bb0..00000000 --- a/elgg_clean/bower_components/fuelux/less/radio-no-js.less +++ /dev/null @@ -1,59 +0,0 @@ -@import "forms.less"; - -.fuelux { - .radio, .radio-inline { - - input[type="radio"]:not(.sr-only) { - - & ~ label { - &:before { - border-radius: 8px; - z-index: 1; - } - } - - &:checked { - - & ~ label { - &:before { - background: @checkboxPrimaryColor; /* Old browsers */ - background: -moz-radial-gradient(center, ellipse cover, @true-white 0%, @true-white 40%, @checkboxPrimaryColor 41%, @checkboxPrimaryColor 100%); /* FF3.6+ */ - background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,@true-white), color-stop(40%,@true-white), color-stop(41%,@checkboxPrimaryColor), color-stop(100%,@checkboxPrimaryColor)); /* Chrome,Safari4+ */ - background: -webkit-radial-gradient(center, ellipse cover, @true-white 0%, @true-white 40%, @checkboxPrimaryColor 41%, @checkboxPrimaryColor 100%); /* Chrome10+,Safari5.1+ */ - background: -o-radial-gradient(center, ellipse cover, @true-white 0%, @true-white 40%, @checkboxPrimaryColor 41%, @checkboxPrimaryColor 100%); /* Opera 12+ */ - background: -ms-radial-gradient(center, ellipse cover, @true-white 0%, @true-white 40%, @checkboxPrimaryColor 41%, @checkboxPrimaryColor 100%); /* IE10+ */ - background: radial-gradient(ellipse at center, @true-white 0%, @true-white 40%, @checkboxPrimaryColor 41%, @checkboxPrimaryColor 100%); /* W3C */ - filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr='@{true-white}', endColorstr='@{checkboxPrimaryColor}', GradientType=1)"; /* IE6-9 fallback on horizontal gradient */ - } - } - } - - - /* for keyboard tabbing */ - &:hover ~ label, &:active ~ label, &:focus ~ label { - - &:before { - .checkbox-radio-focus(); - } - - } - /* for keyboard tabbing */ - &:active:hover ~ label, &:focus:hover ~ label, &:focus:hover ~ label, &:checked:hover ~ label { - &:before { - outline-color: none; - outline-offset: 0; - outline-style: none; - outline-width: 0; - cursor: default; - } - - &, &:hover { - color: @text-color; - cursor: default; - } - } - - } - } - -} diff --git a/elgg_clean/bower_components/fuelux/less/radio.less b/elgg_clean/bower_components/fuelux/less/radio.less deleted file mode 100644 index c266168d..00000000 --- a/elgg_clean/bower_components/fuelux/less/radio.less +++ /dev/null @@ -1,152 +0,0 @@ -.radioTabbing() { - - /* for keyboard tabbing */ - input[type="radio"]:focus + .radio-label, - input[type="radio"]:hover + .radio-label, - .radio-label:hover { - color: @gray60; - } -} - -.fuelux { - .radio { - &.highlight { - padding: 4px; - margin: 0 0 5px 0; - - & + .radio.highlight { - margin-top: -9px; - } - & label.radio-custom { - left: -8px; - padding: 4px 4px 4px 24px; - border-radius: @baseBorderRadius; - &:before { - left: 5px; - top: 7px; - } - &:after { - left: 9px; - top: 11px; - } - } - &.checked label.radio-custom, - & label.radio-custom.checked { - background: @gray90; - border-radius: @baseBorderRadius; - } - } - - /* for keyboard tabbing */ - input[type="radio"]:focus + .radio-label, - input[type="radio"]:hover + .radio-label, - .radio-label:hover { - color: @gray60; - } - } - .form-horizontal .radio-inline { - padding-top: 0; - } - .input-group-addon.radio-custom.radio-inline { - &:before { - left: 11px; - top: 9px; - } - &:after { - left: 15px; - top: 13px; - } - } - .radio-custom { - position: relative; - - .highlight { - padding: 4px; - margin: 0 0 5px 0; - - &.checked { - background: @gray90; - border-radius: @baseBorderRadius; - } - } - &:after { - background: transparent; - border-radius: 6px; - content: " "; - height: 6px; - left: 4px; - position: absolute; - top: 7px; - width: 6px; - } - &:before { - border: 1px solid @gray67; - border-radius: 14px; - content: " "; - height: 14px; - left: 0px; - position: absolute; - top: 3px; - width: 14px; - } - &.checked { - &:after { - background: @true-white; - } - &:before { - background: @checkboxPrimaryColor; - border-color: @checkboxPrimaryColor; - } - } - &.disabled { - cursor: not-allowed; - opacity: .65; - - &:after { - cursor: not-allowed; - } - &:before { - cursor: not-allowed; - opacity: .65; - } - } - &.radio-inline { - &:after { - left: 4px; - top: 7px; - } - &:before { - left: 0; - top: 3px; - } - &.highlight { - left: -3px; - - padding: 4px 4px 4px 24px; - - &:after { - left: 8px; - top: 11px; - } - &:before { - left: 4px; - top: 7px; - } - &.checked { - background: @gray90; - border-radius: @baseBorderRadius; - } - } - } - - /* for keyboard tabbing */ - input[type="radio"]:focus + .radio-label { - color: @gray60; - } - } - - label.radio-custom.radio-inline { - padding-left: 20px; - } - -} diff --git a/elgg_clean/bower_components/fuelux/less/repeater-list.less b/elgg_clean/bower_components/fuelux/less/repeater-list.less deleted file mode 100755 index 05329e36..00000000 --- a/elgg_clean/bower_components/fuelux/less/repeater-list.less +++ /dev/null @@ -1,434 +0,0 @@ -@mutli-select-enabled-width: 37px; -.selectable() { - &.selectable { - &:hover td, &.hovered td { - background: @selectableHover; - cursor: pointer; - } - .checkbox-custom:before { - margin-top: -4px; - top: 0 - } - } - &.selected { - td { - background: @selected; - color: @gray20; - - &:first-child { - padding-left: 30px; - } - } - } -} - -.fuelux { - .repeater[data-viewtype="list"] { - .repeater-canvas { - &.scrolling { - overflow: visible; - - .repeater-list { - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; - } - - .repeater-list-wrapper { - height: 100%; - overflow: auto; - } - } - - .repeater-list { - position: relative; - - table { - margin-bottom: 0; - width: 100%; - - tbody { - td { - border-bottom: 1px solid @gray87; - border-left: 1px solid @gray87; - border-top: none; - - &:first-child { - border-left: none; - } - - &.sorted { - background: @gray98; - } - } - - tr { - &:focus { - outline: 1px dotted @gray87; - } - - &.empty { - td { - border-bottom: none; - font-size: 14px; - font-style: italic; - padding: 20px; - text-align: center; - width: 100%; - } - } - - .selectable(); - } - } - - thead > tr > th { - background: @gray98; - border-bottom: 1px solid @gray87; - border-left: 1px solid transparent; - border-top: none; - color: fade(@true-black, 0); // transparent - line-height: 1.42857; - padding: 8px; - - #fuelux > .no-selection-allowed(); - - &:first-child { - border-left: none; - .header-checkbox { - width: @mutli-select-enabled-width; - } - } - - &.sortable { - &:hover, &.sorted { - background: @selectableHover; - cursor: pointer; - #fuelux > .vertical(@startColor: @gray98; @endColor: @gray90); - } - } - - &.sorted { - span.glyphicon { - display: block; - visibility: hidden; - } - } - - span.glyphicon { - display: none; - float: right; - margin-top: 2px; - } - - .actions-hidden { - visibility: hidden; - } - } - } - - &-check { - display: inline-block; - height: 0; - line-height: 0; - position: relative; - vertical-align: top; - width: 0; - - span.glyphicon { - left: -22px; - position: absolute; - top: 2px; - } - } - - &-heading { - background: @gray98; - border-bottom: 1px solid @gray87; - border-left: 1px solid @gray87; - border-top: none; - color: @gray20; - line-height: 1.42857; - margin-left: -9px; - padding: 8px; - position: absolute; - top: 0; - z-index: 1; - - #fuelux > .no-selection-allowed(); - - &.shifted { - margin-left: -1px; - - //Webkit override - @media screen and (-webkit-min-device-pixel-ratio: 0) { - margin-left: 0; - } - } - - &.sortable { - &:hover, &.sorted { - background: @gray96; - cursor: pointer; - #fuelux > .vertical(@startColor: @gray98; @endColor: @gray90); - } - - &.sorted { - span.glyphicon { - display: block; - visibility: visible; - } - } - } - - span.glyphicon { - display: none; - float: right; - margin-top: 2px; - } - } - } - - //Frozen Column Class that gets added if frozen enabled - &.frozen-enabled { - overflow: auto; - .repeater-list-wrapper { - overflow: visible; - } - .repeater-list { - .frozen-column-wrapper { - position: absolute; - z-index: 2; - left: 0; - th, td { - //position: relative; - } - } - .frozen-thead-wrapper { - position: absolute; - top: 0; - left: 0; - z-index: 3; - table { - border-right: 1px solid @gray87; - } - } - table { - table-layout: fixed; - word-wrap: break-word; - - &.table-frozen{ - border-right: 1px solid @gray87; - z-index: 2; - background: @true-white; - border-collapse: collapse; - table-layout: fixed; - float: left; - td, th { - border-collapse: collapse; - word-wrap: break-word; - } - .repeater-frozen-heading { - background: @gray98; - &.shifted { - left: -1px; - } - } - } - } - } - - } - - &.actions-enabled { - overflow: auto; - .repeater-list-wrapper { - overflow: visible; - } - .repeater-list { - .actions-column-wrapper { - position: absolute; - z-index: 2; - right: 0; - table { - table-layout: fixed; - word-wrap: break-word; - - &.table-actions { - border-left: 1px solid @gray87; - z-index: 2; - border-collapse: collapse; - table-layout: fixed; - float: right; - tr { - border-left: 1px solid @gray87; - &.empty-heading { - background: transparent; - border-left: 1px solid transparent; - th { - background: transparent; - padding-left: 0; - } - } - td { - background: @true-white; - } - .selectable(); - - td, th { - border-collapse: collapse; - word-wrap: break-word; - padding-bottom: 5px; - .btn-group { - width: 100%; - text-align: center; - .btn { - float: none; - } - } - } - &.selected td:first-child { - padding-left: 8px; - } - th { - border-bottom: 1px solid @gray87; - padding-bottom: 7px; - .repeater-list-heading { - padding: 8px 0 7px; - border-left: 1px solid @gray98; - margin-left: -9px; - width: 100%; - .glyphicon { - display: inline-block; - float: none; - margin-top: 0; - } - } - } - } - - .caret { - margin-left: 0; - } - } - } - } - .actions-thead-wrapper { - position: absolute; - top: 0; - right: 0; - z-index: 3; - } - table { - table-layout: fixed; - word-wrap: break-word; - thead { - tr { - th { - &:last-child { - .repeater-list-heading { - border-left: 1px solid transparent; - } - } - } - } - } - } - &.firefox { - .actions-column-wrapper { - table { - &.table-actions { - td { - - } - } - } - } - } - &.ie-9 { - .actions-column-wrapper { - table { - &.table-actions { - background-color: @true-white; - tr { - background-color: transparent; - &.empty-heading { - border-left: 1px solid @gray98; - } - th { - padding-bottom: 8px; - } - td { - padding-bottom: 6px; - line-height: 1.39; - } - } - } - } - } - } - } - } - - &.multi-select-enabled { - .repeater-list { - thead { - tr:first-child { - .header-checkbox { - width: @mutli-select-enabled-width; - label { - top: -10px; - left: 4px; - padding-left: 0; - } - } - } - } - tbody { - tr { - .body-checkbox { - left: 4px; - top: -3px; - } - } - } - tr { - &.selected { - td { - &:first-child { - padding-left: 8px; - } - } - } - } - } - } - - &.multi-select-enabled.actions-enabled { - .repeater-list .actions-column-wrapper table.table-actions tr th .repeater-list-heading { - border-left: 1px solid @gray87 - } - } - } - - .repeater-loader { - margin-top: -12px; - - &.noHeader { - margin-top: -32px; - } - } - - .repeater-viewport { - overflow: hidden; - } - - .actions-wrapper { - z-index: 10; - text-align: right; - } - } -} - diff --git a/elgg_clean/bower_components/fuelux/less/repeater-thumbnail.less b/elgg_clean/bower_components/fuelux/less/repeater-thumbnail.less deleted file mode 100755 index dce6e3fa..00000000 --- a/elgg_clean/bower_components/fuelux/less/repeater-thumbnail.less +++ /dev/null @@ -1,81 +0,0 @@ -.fuelux { - - .repeater-thumbnail { - border: 1px solid @gray87; - color: @gray40; - float: left; - font-size: 14px; - min-height: 110px; - min-width: 100px; - margin: 8px 7px; - text-align: center; - - img { - display: block; - margin-top: 10px; - margin-bottom: 3px; - } - - &-cont { - height: 100%; - overflow-y: auto; - padding: 6px; - width: 100%; - - &.align-center, &.align-justify, &.align-left, &.align-right { - position: relative; - font-size: 0.1px; - - &:after { - display: inline-block; - width: 100%; - content: ''; - } - - .infinitescroll { - &-end, &-load { - display: inline-block; - width: 100%; - } - } - - .repeater-thumbnail { - display: inline-block; - float: none; - font-size: 14px; - - &:after { - content: ' '; - } - } - } - &.align-center { text-align: center; } - &.align-justify { text-align: justify; } - &.align-left { text-align: left; } - &.align-right { text-align: right; } - - div.empty { - font-size: 14px; - font-style: italic; - padding: 14px 10px 20px; - text-align: center; - } - - .selectable { - &:hover { - background: @selectableHover; - cursor: pointer; - } - - &.selected { - background: @selected; - - &:hover { - background: @selectedHover; - } - } - } - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/repeater.less b/elgg_clean/bower_components/fuelux/less/repeater.less deleted file mode 100755 index 624b641e..00000000 --- a/elgg_clean/bower_components/fuelux/less/repeater.less +++ /dev/null @@ -1,126 +0,0 @@ -.fuelux { - - .repeater { - border: 1px solid @gray87; - border-radius: 4px; - - &-canvas { - &.scrolling{ - bottom: 0; - left: 0; - overflow-y: auto; - position: absolute; - right: 0; - top: 0; - } - } - - &-header, - &-footer - { - background: @gray98; - min-height: 50px; - padding: 8px; - .clearfix; - - &-left { - float: left; - } - - &-right { - float: right; - } - - @media (max-width: 625px) { - &-left, - &-right { - float: none; - .clearfix; - } - - &-left { - margin-bottom: 8px; - } - } - } - - &-header { - border-bottom: 1px solid @gray87; - #fuelux > .border-top-radius(4px); - } - - &-footer { - border-top: 1px solid @gray87; - #fuelux > .border-bottom-radius(4px); - } - - &-loader { - display: none; - left: 50%; - position: absolute; - margin: -32px 0 0 -32px; - top: 50%; - } - - &-viewport { - min-height: 80px; - position: relative; - } - - &-pagination { - - label { - font-weight: normal; - } - - .repeater-primaryPaging { - display: none; - vertical-align: middle; - width: 116px; - - &.active { - display: inline-block; - } - - ul.dropdown-menu { - min-width: 116px; - } - } - - .repeater-secondaryPaging { - display: none; - width: 82px; - - &.active { - display: inline-block; - } - } - } - - &-search { - float: left; - width: 200px; - } - - &-title { - display: block; - float: left; - line-height: 34px; - margin-right: 10px; - } - - /* - * reinforce spacing around control buttons - */ - &-itemization .selectlist, // TODO add specfic class for page size dropdown - &-filters, - &-secondaryPaging, - &-primaryPaging, - &-next, - &-prev - { - margin: auto 0.3em; - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/scheduler.less b/elgg_clean/bower_components/fuelux/less/scheduler.less deleted file mode 100644 index 4eac408f..00000000 --- a/elgg_clean/bower_components/fuelux/less/scheduler.less +++ /dev/null @@ -1,254 +0,0 @@ -.fuelux { - - .scheduler { - - .control-label { - min-width: 7em; - } - - .inline-form-text { - float: left; - line-height: 27px; - margin-top:4px; - } - - /* ------------------------------- - START DATE/TIME - ------------------------------- */ - - .start-datetime { - - &.form-group { - margin-bottom: 0; - } - - .form-group { - margin-left: 0; - } - - .combobox { - max-width: 9em; - - .dropdown-menu { - max-height: 200px; - overflow: auto; - } - - } - - .dropdown { - float: left; - margin: 0 10px 0 0; - } - - } - - /* ------------------------------- - TIMEZONE - ------------------------------- */ - - .timezone-container { - .input-group { - max-width: 20em; - } - - .dropdown-label { - height: 18px; - white-space: nowrap; - max-width: 20em; - overflow: hidden; - text-overflow: ellipsis; - } - - .dropdown-menu { - max-height: 200px; - overflow: auto; - } - - } - - /* ------------------------------- - REPEAT PANELS - ------------------------------- */ - - .repeat-panel { - margin-left: 0; - - label { - font-weight: normal; - } - - .radio { - margin-right: 10px; - } - - .form-group { - margin-left: 0; - } - - } - - // EVERY - - .repeat-interval { - margin-left: 0; - - .clearfix; - - .form-group { - margin-left: 0; - } - - .dropdown-menu { - max-height: 200px; - overflow: auto; - } - - .repeat-every-panel { - float: left; - - .repeat-every-pretext { - padding: 0 10px; - } - - .spinbox { - float: left; - margin-right: 10px; - - input { - margin-bottom: 0; - } - } - - } - - } - - // MONTHLY - - .repeat-monthly { - - .repeat-monthly-date { - margin-top: 10px; - .clearfix; - - .selectlist { - margin-left: 5px; - } - } - - .repeat-monthly-day { - margin-top: 10px; - .clearfix; - } - - .month-days { - margin-left: 10px; - } - - } - - // YEARLY - - .repeat-yearly { - - .repeat-yearly-date { - margin-top: 10px; - .clearfix; - - .year-month-day { - margin-left: 10px; - } - } - - .year-month-days { - margin-left: 10px; - } - - .year-month { - margin-left: 10px; - - } - - .repeat-yearly-day { - margin-top: 10px; - .clearfix; - - .repeat-yearly-day-text { - margin-left: 10px; - } - - } - - } - - // WEEKLY - - .repeat-weekly { - - button:not(.active) { - background-color: @true-white; - } - - .btn-group { - &.disabled { - position: relative; - opacity: 0.65; - - &:before { - background: transparent; - bottom: 0; - content: ""; - left: 0; - position: absolute; - right: 0; - top: 0; - z-index: 5; - } - } - } - } - - .selectlist { - float: left; - } - - label.radio { - float: left; - line-height: 27px; - - input { - margin-top: 8px; - } - } - - /* ------------------------------- - END - ------------------------------- */ - - .repeat-end { - - .end-after { - float: left; - display: inline-block; - margin-right: 10px; - } - - .form-group { - margin-left: 0; - } - - .end-option-panel { - - } - - } - - input { - &::-ms-clear { - display:none; - } - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/search.less b/elgg_clean/bower_components/fuelux/less/search.less deleted file mode 100644 index 68eb99e4..00000000 --- a/elgg_clean/bower_components/fuelux/less/search.less +++ /dev/null @@ -1,16 +0,0 @@ -.fuelux { - - .search { - &.disabled { - .input-group-btn { - cursor: not-allowed; - } - } - input { - &::-ms-clear { - display:none; - } - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/selectlist.less b/elgg_clean/bower_components/fuelux/less/selectlist.less deleted file mode 100644 index 6d9c8964..00000000 --- a/elgg_clean/bower_components/fuelux/less/selectlist.less +++ /dev/null @@ -1,53 +0,0 @@ -// TODO use bs base variables if possible -@selectlist-horizontal-padding: 12px; -@selectlist-caret-width: 4px; - -.fuelux { - - .selectlist { - - &.disabled { - cursor: not-allowed; - } - - .selected-label { - overflow: hidden; // helps with text flow on small screens - min-width: 2em; - } - - .dropdown-menu { - min-width: inherit; - overflow-y: auto; - } - .btn.dropdown-toggle { - text-align: left; - padding-right: unit((2 * @selectlist-horizontal-padding + @selectlist-caret-width), px); - - .caret { - #fuelux > .vertical-align(); - right: @selectlist-horizontal-padding; - - } - } - - } - - .button-sizer, .selectlist-sizer{ - display: inline-block; - position: absolute; - visibility: hidden; - top: 0; - float: left; - .selectlist { - display: block !important; - } - .dropdown-menu { - display: block; - min-width: inherit; - } - .selected-label { - width: auto !important; - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/spinbox.less b/elgg_clean/bower_components/fuelux/less/spinbox.less deleted file mode 100644 index 32bb206a..00000000 --- a/elgg_clean/bower_components/fuelux/less/spinbox.less +++ /dev/null @@ -1,82 +0,0 @@ -.fuelux { - - .spinbox { - display: inline-block; - position: relative; - - &.digits-3 { - width: 60px; - } - - &.disabled { - .spinbox-buttons { - cursor: not-allowed; - } - } - - .spinbox-input { - float: left; - padding-bottom: 3px; /* Magic number */ - padding: 0px 25px 0px 7px; - - &::-ms-clear { - display:none; - } - } - - .btn { - position: relative; - width: 20px; - height: 13px; - padding-top: 0; - padding-right: 9px; - padding-left: 9px; - overflow-y: hidden; - - &.disabled { - cursor: not-allowed; - } - } - - .spinbox-buttons { - position: absolute; - height: 28px; - width: 20px; - right: 2px; - } - - .spinbox-up { - padding: 0 0 14px 1px; - top: 2px; - - .glyphicon-chevron-up { - position:relative; - top: 0px; - } - } - - // fix radius from BS btn-group - .btn-group > .btn.spinbox-up { - border-top-right-radius: 4px; - } - - .spinbox-down { - padding: 0 0 8px 1px; - top: 2px; - height: 15px; - border-bottom-left-radius: 4px; - - .glyphicon-chevron-down { - position: relative; - left: 0; - top: 0; - } - } - input { - &::-ms-clear { - display:none; - } - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/tree.less b/elgg_clean/bower_components/fuelux/less/tree.less deleted file mode 100644 index 45db7cfa..00000000 --- a/elgg_clean/bower_components/fuelux/less/tree.less +++ /dev/null @@ -1,177 +0,0 @@ -.fuelux { - - .tree { - border: 1px solid @gray60; - border-radius: 4px 4px 4px 4px; - padding: 10px 15px 0 15px; - overflow-x: auto; - overflow-y: auto; - position: relative; - list-style: none; - - *:focus { - outline: none; - } - - button:focus { - color: @treeHoverText; - } - - ul { - padding-left: 0; - margin-top: 0; - margin-bottom: 0; - list-style: none; - } - - li { - margin: 0; - margin-top: 5px; - margin-bottom: 5px; - } - - .tree-loader { - // make even with tree-branch-children - margin-left: 45px; - } - - .tree-open > .tree-branch-header .glyphicon-play { - transform:rotate(90deg); - -ms-transform:rotate(90deg); - -webkit-transform:rotate(90deg); - position: relative; - } - - [data-children=false] > .tree-branch-header .icon-caret:before { - content: '\00a0'; //space - } - - .tree-branch { - - .tree-branch-header { - position: relative; - border-radius: 6px; - white-space: nowrap; - - .tree-branch-name:hover { - color: @treeHoverText; - } - - .glyphicon-play { - font-size: 10px; - padding-right: 5px; - padding-left: 7px; - - &:before { - position: relative; - top: -2px; - } - - } - - .tree-branch-name { - white-space: nowrap; - border-radius: 6px; - background-color: transparent; - border: 0; - } - - label { - font-weight: normal; - padding-left: 3px; - margin-bottom: 0; - cursor: pointer; - } - - } - - .tree-branch-children { - margin-left: 14px; - } - &[haschildren='false'], &[data-has-children='false'] { - .icon-caret { - visibility: hidden; - } - } - - } - - .tree-item { - white-space: nowrap; - position: relative; - cursor: pointer; - border-radius: 6px; - margin-left: 26px; - - .tree-item-name { - white-space: nowrap; - border-radius: 6px; - background-color: transparent; - border: 0; - } - - .tree-item-name:hover { - color: @treeHoverText; - } - - &.tree-selected .tree-item-name { - background-color: @treeSelectBackground; - color: @gray20; - } - - label { - font-weight: normal; - padding-left: 7px; - margin-bottom: 0; - cursor: pointer; - } - - } - - .icon-caret:hover + .tree-branch-name { - color: @treeHoverText; - } - - // - - - - - - - - - - - - - - - // folder selectable option - // - - - - - - - - - - - - - - - - &.tree-folder-select { - - .tree-branch { - - .icon-caret { - background-color: transparent; - border: 0; - } - - .icon-caret:hover { - cursor: pointer; - color: @treeHoverText; - } - - > .tree-branch-name { - padding: 1px 5px 0 5px; - border-radius: 6px; - - - &.tree-selected { - background-color: @treeSelectBackground; - } - } - - } - - .tree-branch.tree-selected > .tree-branch-header .tree-branch-name { - background-color: @treeSelectBackground; - - &:hover { - background-color: @treeSelectBackground; - } - } - - } - - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/utility.less b/elgg_clean/bower_components/fuelux/less/utility.less deleted file mode 100644 index a87fd655..00000000 --- a/elgg_clean/bower_components/fuelux/less/utility.less +++ /dev/null @@ -1,210 +0,0 @@ -.fuelux { - - // Font Family - // ------------------------- - .serif { - font-family: @serifFontFamily; - } - .monospace { - font-family: @monoFontFamily; - } - - .text-sm { - font-size: @fontSizeSmall; - } - .text-lg { - font-size: @fontSizeLarge; - } - - // Padding - // ------------------------- - .padding { - &-xs { - padding: @padding-xs; - &-horizontal { - padding: 0 @padding-xs; - } - &-vertical { - padding: @padding-xs 0; - } - &-top { - padding-top: @padding-xs; - } - &-bottom { - padding-bottom: @padding-xs; - } - &-left { - padding-left: @padding-xs; - } - &-right { - padding-right: @padding-xs; - } - } - &-sm { - padding: @padding-sm; - &-horizontal { - padding: 0 @padding-sm; - } - &-vertical { - padding: @padding-sm 0; - } - &-top { - padding-top: @padding-sm; - } - &-bottom { - padding-bottom: @padding-sm; - } - &-left { - padding-left: @padding-sm; - } - &-right { - padding-right: @padding-sm; - } - } - &-md { - padding: @padding-md; - &-horizontal { - padding: 0 @padding-md; - } - &-vertical { - padding: @padding-md 0; - } - &-top { - padding-top: @padding-md; - } - &-bottom { - padding-bottom: @padding-md; - } - &-left { - padding-left: @padding-md; - } - &-right { - padding-right: @padding-md; - } - } - &-lg { - padding: @padding-lg; - &-horizontal { - padding: 0 @padding-lg; - } - &-vertical { - padding: @padding-lg 0; - } - &-top { - padding-top: @padding-lg; - } - &-bottom { - padding-bottom: @padding-lg; - } - &-left { - padding-left: @padding-lg; - } - &-right { - padding-right: @padding-lg; - } - } - } - - // Margin - // ------------------------- - .margin { - &-xs { - margin: @margin-xs; - - &-horizontal { - margin: 0 @margin-xs; - } - &-vertical { - margin: @margin-xs 0; - } - &-top { - margin-top: @margin-xs; - } - &-bottom { - margin-bottom: @margin-xs; - } - &-left { - margin-left: @margin-xs; - } - &-right { - margin-right: @margin-xs; - } - } - &-sm { - margin: @margin-sm; - &-horizontal { - margin: 0 @margin-sm; - } - &-vertical { - margin: @margin-sm 0; - } - &-top { - margin-top: @margin-sm; - } - &-bottom { - margin-bottom: @margin-sm; - } - &-left { - margin-left: @margin-sm; - } - &-right { - margin-right: @margin-sm; - } - } - &-md { - margin: @margin-md; - &-horizontal { - margin: 0 @margin-md; - } - &-vertical { - margin: @margin-md 0; - } - &-top { - margin-top: @margin-md; - } - &-bottom { - margin-bottom: @margin-md; - } - &-left { - margin-left: @margin-md; - } - &-right { - margin-right: @margin-md; - } - } - &-lg { - margin: @margin-lg; - &-horizontal { - margin: 0 @margin-lg; - } - &-vertical { - margin: @margin-lg 0; - } - &-top { - margin-top: @margin-lg; - } - &-bottom { - margin-bottom: @margin-lg; - } - &-left { - margin-left: @margin-lg; - } - &-right { - margin-right: @margin-lg; - } - } - } - - // Helpers - // ------------------------- - .data-label { - #fuelux > .data-label(); - } - .data-value { - #fuelux > .data-value(); - } - .section-heading { - #fuelux > .section-heading(); - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/less/variables.less b/elgg_clean/bower_components/fuelux/less/variables.less deleted file mode 100644 index af10fa73..00000000 --- a/elgg_clean/bower_components/fuelux/less/variables.less +++ /dev/null @@ -1,392 +0,0 @@ -// -// Variables -// -------------------------------------------------- - - -// Global values -// -------------------------------------------------- - -@true-black: #000; -@true-white: #FFF; - -// Grays -// ------------------------- -@gray07: lighten(@true-black, 7%); // #111 -@gray13: lighten(@true-black, 13.5%); // #222 -@gray15: lighten(@true-black, 15%); // #252525 -@gray20: lighten(@true-black, 20%); // #333 -@gray27: lighten(@true-black, 27%); // #444 -@gray33: lighten(@true-black, 33.5%); // #555 -@gray40: lighten(@true-black, 40%); // #666 -@gray46: lighten(@true-black, 46%); // #757575 -//@gray47: lighten(@true-black, 46.7%); // #777 -@gray53: lighten(@true-black, 53%); // #888 -@gray60: lighten(@true-black, 60%); // #999 -@gray67: lighten(@true-black, 66.5%); // #AAA -@gray74: lighten(@true-black, 73.5%); // #BBB -//@gray75: lighten(@true-black, 75%); // #4b4b4b -@gray80: lighten(@true-black, 80%); // #CCC -@gray87: lighten(@true-black, 86.5%); // #DDD -@gray90: lighten(@true-black, 90%); // #E5E5E5 -@gray93: lighten(@true-black, 93.5%); // #EEE -@gray96: lighten(@true-black, 96%); // #F5F5F5 -@gray98: lighten(@true-black, 98%); // #f9f9f9 -@gray99: lighten(@true-black, 99%); // #FCFCFC - -@black: @true-black; -@grayDarker: @gray13; -@grayDark: @gray20; -@gray: @gray33; -@grayLight: @gray60; -@grayLighter: @gray93; -@white: @true-white; - - -// Accent colors -// ------------------------- -@blue: #049cdb; -@blueDark: #0064cd; -@green: #46a546; -@red: #9d261d; -@yellow: #ffc40d; -@orange: #f89406; -@pink: #c3325f; -@purple: #7a43b6; - -// Text Colors -// ------------------------- -@text-primary: #428bca; -@text-success: #3c763d; -@text-info: #31708f; -@text-warning: #8a6d3b; -@text-danger: #a94442; -@text-dimmed: @gray40; -@text-muted: @gray60; - -// Scaffolding -// ------------------------- -@bodyBackground: @white; -@textColor: @grayDark; -@text-color: @textColor; -@focusColor: #5B9DD9; - -// Links -// ------------------------- -@linkColor: #0088cc; -@linkColorHover: darken(@linkColor, 15%); - - -// Typography -// ------------------------- -@sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif; -@serifFontFamily: Georgia, "Times New Roman", Times, serif; -@monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace; - -@baseFontSize: 14px; -@baseFontFamily: @sansFontFamily; -@baseLineHeight: 20px; -@altFontFamily: @serifFontFamily; - -@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily -@headingsFontWeight: bold; // instead of browser default, bold -@headingsColor: inherit; // empty to use BS default, @textColor - - -// Component sizing -// ------------------------- -// Based on 14px font-size and 20px line-height - -@fontSizeLarge: @baseFontSize * 1.25; // ~18px -@fontSizeSmall: @baseFontSize * 0.85; // ~12px -@fontSizeMini: @baseFontSize * 0.75; // ~11px - -@font-size-h1: floor((@baseFontSize * 2.6)); // ~36px -@font-size-h2: floor((@baseFontSize * 2.15)); // ~30px -@font-size-h3: ceil((@baseFontSize * 1.7)); // ~24px -@font-size-h4: ceil((@baseFontSize * 1.25)); // ~18px -@font-size-h5: @baseFontSize; -@font-size-h6: ceil((@baseFontSize * 0.85)); // ~12pxgr - -@paddingLarge: 11px 19px; // 44px -@paddingSmall: 2px 10px; // 26px -@paddingMini: 0 6px; // 22px - -@baseBorderRadius: 4px; -@borderRadiusLarge: 6px; -@borderRadiusSmall: 3px; - - -// Tables -// ------------------------- -@tableBackground: transparent; // overall background-color -@tableBackgroundAccent: @gray98; // for striping -@tableBackgroundHover: @gray96; // for hover -@tableBorder: @gray87; // table and cell border - -// Buttons -// ------------------------- -@btnBackground: @white; -@btnBackgroundHighlight: darken(@white, 10%); -@btnBorder: @gray80; - -@btnPrimaryBackground: @linkColor; -@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%); - -@btnInfoBackground: #5bc0de; -@btnInfoBackgroundHighlight: #2f96b4; - -@btnSuccessBackground: #62c462; -@btnSuccessBackgroundHighlight: #51a351; - -@btnWarningBackground: lighten(@orange, 15%); -@btnWarningBackgroundHighlight: @orange; - -@btnDangerBackground: #ee5f5b; -@btnDangerBackgroundHighlight: #bd362f; - -@btnInverseBackground: @gray27; -@btnInverseBackgroundHighlight: @grayDarker; - -@btnPaddingVertical: 6px; -@btnPaddingHorizontal: 12px; - - -// Forms -// ------------------------- -@inputBackground: @white; -@inputBorder: @gray80; -@inputBorderRadius: @baseBorderRadius; -@inputDisabledBackground: @gray93; -@formActionsBackground: @gray96; -@inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border - - -// Dropdowns -// ------------------------- -@dropdownBackground: @white; -@dropdownBorder: rgba(0,0,0,.2); -@dropdownDividerTop: @gray90; -@dropdownDividerBottom: @white; - -@dropdownLinkColor: @grayDark; -@dropdownLinkColorHover: @white; -@dropdownLinkColorActive: @white; - -@dropdownLinkBackgroundActive: @linkColor; -@dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive; - - - -// COMPONENT VARIABLES -// -------------------------------------------------- - - -// Z-index master list -// ------------------------- -// Used for a bird's eye view of components dependent on the z-axis -// Try to avoid customizing these :) -@zindexDropdown: 1000; -@zindexPopover: 1010; -@zindexTooltip: 1030; -@zindexFixedNavbar: 1030; -@zindexModalBackdrop: 1040; -@zindexModal: 1050; - -//Selectable Hover, Selected, Selected Hover -// ------------------------- -@selectableHover: @gray96; -@selected: @gray93; -@selectedHover: @gray87; - - - -// Sprite icons path -// ------------------------- -@iconSpritePath: "../img/glyphicons-halflings.png"; -@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png"; - - -// Input placeholder text color -// ------------------------- -@placeholderText: @gray60; - - -// Hr border color -// ------------------------- -@hrBorder: @gray93; - - -// Horizontal forms & lists -// ------------------------- -@horizontalComponentOffset: 180px; - - -// Wells -// ------------------------- -@wellBackground: @gray96; - - -// Navbar -// ------------------------- -@navbarCollapseWidth: 979px; -@navbarCollapseDesktopWidth: @navbarCollapseWidth + 1; - -@navbarHeight: 40px; -@navbarBackgroundHighlight: @true-white; -@navbarBackground: darken(@navbarBackgroundHighlight, 5%); -@navbarBorder: darken(@navbarBackground, 12%); - -@navbarText: @gray40;; -@navbarLinkColor: @gray40;; -@navbarLinkColorHover: @grayDark; -@navbarLinkColorActive: @gray; -@navbarLinkBackgroundHover: transparent; -@navbarLinkBackgroundActive: darken(@navbarBackground, 5%); - -@navbarBrandColor: @navbarLinkColor; - -// Inverted navbar -@navbarInverseBackground: @gray07; -@navbarInverseBackgroundHighlight: @gray13; -@navbarInverseBorder: @gray15; - -@navbarInverseText: @gray60; -@navbarInverseLinkColor: @gray60; -@navbarInverseLinkColorHover: @white; -@navbarInverseLinkColorActive: @navbarInverseLinkColorHover; -@navbarInverseLinkBackgroundHover: transparent; -@navbarInverseLinkBackgroundActive: @navbarInverseBackground; - -@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%); -@navbarInverseSearchBackgroundFocus: @white; -@navbarInverseSearchBorder: @navbarInverseBackground; -@navbarInverseSearchPlaceholderColor: @gray80; - -@navbarInverseBrandColor: @navbarInverseLinkColor; - - -// Pagination -// ------------------------- -@paginationBackground: @true-white; -@paginationBorder: @gray87; -@paginationActiveBackground: @gray96; - - -// Hero unit -// ------------------------- -@heroUnitBackground: @gray93; -@heroUnitHeadingColor: inherit; -@heroUnitLeadColor: inherit; - - -// Form states and alerts -// ------------------------- -@warningText: #c09853; -@warningBackground: #fcf8e3; -@warningBorder: darken(spin(@warningBackground, -10), 3%); - -@errorText: #b94a48; -@errorBackground: #f2dede; -@errorBorder: darken(spin(@errorBackground, -10), 3%); - -@successText: #468847; -@successBackground: #dff0d8; -@successBorder: darken(spin(@successBackground, -10), 5%); - -@infoText: #3a87ad; -@infoBackground: #d9edf7; -@infoBorder: darken(spin(@infoBackground, -10), 7%); - - -// Tooltips and popovers -// ------------------------- -@tooltipColor: @true-white; -@tooltipBackground: @true-black; -@tooltipArrowWidth: 5px; -@tooltipArrowColor: @tooltipBackground; - -@popoverBackground: @true-white; -@popoverArrowWidth: 10px; -@popoverArrowColor: @true-white; -@popoverTitleBackground: darken(@popoverBackground, 3%); - -// Special enhancement for popovers -@popoverArrowOuterWidth: @popoverArrowWidth + 1; -@popoverArrowOuterColor: rgba(0,0,0,.25); - - - -// GRID -// -------------------------------------------------- - - -// Default 940px grid -// ------------------------- -@gridColumns: 12; -@gridColumnWidth: 60px; -@gridGutterWidth: 20px; -@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1)); - -// 1200px min -@gridColumnWidth1200: 70px; -@gridGutterWidth1200: 30px; -@gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1)); - -// 768px-979px -@gridColumnWidth768: 42px; -@gridGutterWidth768: 20px; -@gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1)); - - -// Fluid grid -// ------------------------- -@fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth); -@fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth); - -// 1200px min -@fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200); -@fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200); - -// 768px-979px -@fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768); -@fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768); - - -// Controls -// -------------------------------------------------- - -// Checkbox -// ------------------------- -@checkboxPrimaryColor: #39b3d7; - -// Datepicker -// ------------------------- -@datepickerHover: #0f5f9f; -@datepickerHoverAlt: #1b75bb; - -// Tree -// ------------------------- -@treeHoverText: @gray60; -@treeSelectBackground: @selected; - - -// Icons -// ------------------------- -@fueluxFontPath: "../fonts/"; - - - -// -------------------------------------------------- -// Padding / Margin -// -------------------------------------------------- -@padding-xs: 5px; -@padding-sm: 10px; -@padding-md: 15px; -@padding-lg: 20px; - -@margin-xs: 5px; -@margin-sm: 10px; -@margin-md: 15px; -@margin-lg: 20px; - - diff --git a/elgg_clean/bower_components/fuelux/less/wizard.less b/elgg_clean/bower_components/fuelux/less/wizard.less deleted file mode 100644 index 5f16907a..00000000 --- a/elgg_clean/bower_components/fuelux/less/wizard.less +++ /dev/null @@ -1,295 +0,0 @@ -.fuelux { - - .wizard { - - .clearfix; - - border: 1px solid @navbarBorder; - border-radius: @baseBorderRadius; - background-color: @tableBackgroundAccent; - position: relative; - min-height: 48px; - - &.no-steps-container { // maintains backwards compatibility with < 3.8, will be removed in the future - overflow: hidden; - } - - .steps-container { - border-radius: @baseBorderRadius @baseBorderRadius 0 0; - overflow: hidden; - - } - - > ul.steps, > .steps-container > ul.steps { - list-style: none outside none; - padding: 0; - margin: 0; - width: 999999px; //using a ridiculously giant width here to allow practically infinite space for the li's to flow horizontally - - &.previous-disabled { - li { - &.complete { - cursor: default; - - &:hover { - background: @gray96; - color: @successText; - cursor: default; - - .chevron:before { - border-left-color: @gray96; - } - } - } - } - } - - li { - float: left; - margin: 0; - padding: 0 20px 0 30px; - height: 46px; - line-height: 46px; - position: relative; - background: @gray93; - color: @gray60; - font-size: 16px; - cursor: not-allowed; - - .chevron { - border: 24px solid transparent; - border-left: 14px solid @navbarBorder; - border-right: 0; - display: block; - position: absolute; - right: -14px; - top: 0; - z-index: 1; - } - - .chevron:before { - border: 24px solid transparent; - border-left: 14px solid @gray93; - border-right: 0; - content: ""; - display: block; - position: absolute; - right: 1px; - top: -24px; - } - - &.complete { - background: @gray96; - color: @successText; - - &:hover { - background: desaturate(@infoBackground, 40%); - cursor: pointer; - - .chevron:before { - border-left: 14px solid desaturate(@infoBackground, 40%); - } - } - - .chevron:before { - border-left: 14px solid @gray96; - } - } - - &.active { - background: lighten(@infoBackground, 5%); - color: @infoText; - cursor: default; - - .chevron:before { - border-left: 14px solid lighten(@infoBackground, 5%); - } - - .badge { - background-color: @infoText; - } - } - - .badge { - margin-right: 8px; - } - - .badge-success { - background-color: @successText; - } - } - - li:first-child { - border-radius: 4px 0 0 0; - padding-left: 20px; - } - } - - &.rtl { - direction: rtl; - - > ul.steps, > .steps-container > ul.steps { - right: 0; - left: auto; - float: right; - - &.previous-disabled { - li { - &.complete { - &:hover { - .chevron:before { - border-right-color: @gray96; - } - } - } - } - } - - li { - float: right; - - .chevron { - right: auto; - left: -14px; - border-right: 14px solid @gray80; - border-left: 0; - - - &:before { - right: auto; - left: 1px; - border-right: 14px solid @gray93; - border-left: 0; - } - } - - &.active { - .chevron { - &:before { - border-right: 14px solid lighten(@infoBackground, 5%); - } - } - } - - &.complete { - .chevron { - &:before { - border-right: 14px solid @gray96; - } - } - - &:hover { - .chevron { - &:before { - border-right: 14px solid desaturate(@infoBackground, 40%); - border-left: none; - } - } - } - } - - .badge { - margin-left: 8px; - } - } - } - - >.actions { - right: auto; - left: 0; - float: left; - border-left: none; - border-right: 1px solid @navbarBorder; - border-radius: @baseBorderRadius 0 0 0; - - .btn-prev { - span { - margin-left: 5px; - margin-right: 0; - } - } - - .btn-next { - span { - margin-left: 0; - margin-right: 5px; - } - } - } - } - - > .actions { - z-index: 1000; - position: absolute; - right: 0; - top: 0; - line-height: 46px; - float: right; - padding-left: 15px; - padding-right: 15px; - vertical-align: middle; - background-color: @gray90; - border-left: 1px solid @navbarBorder; - border-radius: 0 @baseBorderRadius 0 0; - - a { - line-height: 45px; - font-size: 12px; - margin-right: 8px; - } - - .btn-prev { - &[disabled] { - cursor: not-allowed; - } - - span { - margin-right: 5px; - } - } - - .btn-next { - &[disabled] { - cursor: not-allowed; - } - - span { - margin-left: 5px; - } - } - } - - .step-content { - border-top: 1px solid @gray80; - padding: 10px; - float: left; - width: 100%; - - .step-pane { - display: none; - } - - > .active { - display: block; - - .btn-group { - .active { - display: inline-block; - } - } - } - } - - // when complete - &.complete { - >.actions { - .btn-next { - .glyphicon { - display: none; - } - } - } - } - } - -} \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/checkbox-inline-no-js.html b/elgg_clean/bower_components/fuelux/markup/checkbox-inline-no-js.html deleted file mode 100644 index caba5469..00000000 --- a/elgg_clean/bower_components/fuelux/markup/checkbox-inline-no-js.html +++ /dev/null @@ -1,18 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="checkbox-inline"> - <input - type="checkbox" - id="checkboxes-new-inline--1" - name="checkboxes-new-inline--1" - checked="checked" - value="" - > - <label for="checkboxes-new-inline--1"> - Inline Checkbox - </label> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/checkbox-inline.html b/elgg_clean/bower_components/fuelux/markup/checkbox-inline.html deleted file mode 100644 index 4bd93421..00000000 --- a/elgg_clean/bower_components/fuelux/markup/checkbox-inline.html +++ /dev/null @@ -1,9 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<label class="checkbox-custom checkbox-inline" data-initialize="checkbox" id="myCustomCheckbox"> - <input class="sr-only" type="checkbox" value=""> <span class="checkbox-label">1</span> -</label> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/checkbox-no-js-variations.txt b/elgg_clean/bower_components/fuelux/markup/checkbox-no-js-variations.txt deleted file mode 100644 index deecfb6c..00000000 --- a/elgg_clean/bower_components/fuelux/markup/checkbox-no-js-variations.txt +++ /dev/null @@ -1,14 +0,0 @@ -// Checked on page load: -- add 'checked="checked"' attribute to input - -// Disabled on page load: -- add 'disabled="disabled"' attribute to input - -// Toggling with checkboxes uses plain old Bootstrap Collapse: -- See: http://getbootstrap.com/javascript/#collapse -- add `data-toggle="collapse"` -- add `data-target="{{selector}}"` -- optionally consider adding aria attributes `aria-expanded` and `aria-controls` - -// Highlighting checkboxes: -- add 'highlight' class to the `.checkbox` or `.checkbox-inline` wrapper. This will highlight the checkbox on check / uncheck. \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/checkbox-no-js.html b/elgg_clean/bower_components/fuelux/markup/checkbox-no-js.html deleted file mode 100644 index 2fab9acf..00000000 --- a/elgg_clean/bower_components/fuelux/markup/checkbox-no-js.html +++ /dev/null @@ -1,18 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="checkbox"> - <input - type="checkbox" - id="checkboxes-new-block--1" - name="checkboxes-new-block--1" - value="" - > - <label for="checkboxes-new-block--1"> - Checkbox: unchecked on page load - </label> -</div> - -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/checkbox-variations.txt b/elgg_clean/bower_components/fuelux/markup/checkbox-variations.txt deleted file mode 100644 index 1776789f..00000000 --- a/elgg_clean/bower_components/fuelux/markup/checkbox-variations.txt +++ /dev/null @@ -1,13 +0,0 @@ -//Checked when initialized: -- add 'checked' class to input -- add 'checked="checked"' attribute to input - -//Disabled when initialized: -- add 'disabled="disabled"' attribute to input - -//Toggling checkboxes: -- add 'data-toggle="{{selector}}"' attribute to input. This will toggle the matching selector's visibility on check / uncheck - (ex: 'data-toggle="#myTogglingBox"') - -//Highlighting checkboxes: -- add 'highlight' class to block wrapper or label for inline. This will highlight the checkbox on check / uncheck. \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/checkbox.html b/elgg_clean/bower_components/fuelux/markup/checkbox.html deleted file mode 100644 index 1c124ae9..00000000 --- a/elgg_clean/bower_components/fuelux/markup/checkbox.html +++ /dev/null @@ -1,12 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="checkbox"> - <label class="checkbox-custom" data-initialize="checkbox" id="myCustomCheckbox"> - <input class="sr-only" type="checkbox" value=""> - <span class="checkbox-label">Custom checkbox unchecked on page load</span> - </label> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/combobox-variations.txt b/elgg_clean/bower_components/fuelux/markup/combobox-variations.txt deleted file mode 100644 index 695a7764..00000000 --- a/elgg_clean/bower_components/fuelux/markup/combobox-variations.txt +++ /dev/null @@ -1,2 +0,0 @@ -//Has selected item upon initialization -- add 'data-selected="true"' to desired 'ul.dropdown-menu li' tag \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/combobox.html b/elgg_clean/bower_components/fuelux/markup/combobox.html deleted file mode 100644 index eda78b10..00000000 --- a/elgg_clean/bower_components/fuelux/markup/combobox.html +++ /dev/null @@ -1,19 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="input-group input-append dropdown combobox" data-initialize="combobox" id="myCombobox"> - <input type="text" class="form-control"> - <div class="input-group-btn"> - <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button> - <ul class="dropdown-menu dropdown-menu-right" role="menu"> - <li data-value="1"><a href="#">One</a></li> - <li data-value="2"><a href="#">Two</a></li> - <li data-value="3"><a href="#">Three</a></li> - <li data-value="4" ><a href="#">Four</a></li> - <li data-value="Item Five" data-foo="bar" data-fizz="buzz"><a href="#">Item Five</a></li> - </ul> - </div> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/datepicker.html b/elgg_clean/bower_components/fuelux/markup/datepicker.html deleted file mode 100644 index ec839945..00000000 --- a/elgg_clean/bower_components/fuelux/markup/datepicker.html +++ /dev/null @@ -1,85 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="datepicker" data-initialize="datepicker" id="myDatepicker"> - <div class="input-group"> - <input class="form-control" id="myDatepickerInput" type="text"/> - <div class="input-group-btn"> - <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> - <span class="glyphicon glyphicon-calendar"></span> - <span class="sr-only">Toggle Calendar</span> - </button> - <div class="dropdown-menu dropdown-menu-right datepicker-calendar-wrapper" role="menu"> - <div class="datepicker-calendar"> - <div class="datepicker-calendar-header"> - <button type="button" class="prev"><span class="glyphicon glyphicon-chevron-left"></span><span class="sr-only">Previous Month</span></button> - <button type="button" class="next"><span class="glyphicon glyphicon-chevron-right"></span><span class="sr-only">Next Month</span></button> - <button type="button" class="title"> - <span class="month"> - <span data-month="0">January</span> - <span data-month="1">February</span> - <span data-month="2">March</span> - <span data-month="3">April</span> - <span data-month="4">May</span> - <span data-month="5">June</span> - <span data-month="6">July</span> - <span data-month="7">August</span> - <span data-month="8">September</span> - <span data-month="9">October</span> - <span data-month="10">November</span> - <span data-month="11">December</span> - </span> <span class="year"></span> - </button> - </div> - <table class="datepicker-calendar-days"> - <thead> - <tr> - <th>Su</th> - <th>Mo</th> - <th>Tu</th> - <th>We</th> - <th>Th</th> - <th>Fr</th> - <th>Sa</th> - </tr> - </thead> - <tbody></tbody> - </table> - <div class="datepicker-calendar-footer"> - <button type="button" class="datepicker-today">Today</button> - </div> - </div> - <div class="datepicker-wheels" aria-hidden="true"> - <div class="datepicker-wheels-month"> - <h2 class="header">Month</h2> - <ul> - <li data-month="0"><button type="button">Jan</button></li> - <li data-month="1"><button type="button">Feb</button></li> - <li data-month="2"><button type="button">Mar</button></li> - <li data-month="3"><button type="button">Apr</button></li> - <li data-month="4"><button type="button">May</button></li> - <li data-month="5"><button type="button">Jun</button></li> - <li data-month="6"><button type="button">Jul</button></li> - <li data-month="7"><button type="button">Aug</button></li> - <li data-month="8"><button type="button">Sep</button></li> - <li data-month="9"><button type="button">Oct</button></li> - <li data-month="10"><button type="button">Nov</button></li> - <li data-month="11"><button type="button">Dec</button></li> - </ul> - </div> - <div class="datepicker-wheels-year"> - <h2 class="header">Year</h2> - <ul></ul> - </div> - <div class="datepicker-wheels-footer clearfix"> - <button type="button" class="btn datepicker-wheels-back"><span class="glyphicon glyphicon-arrow-left"></span><span class="sr-only">Return to Calendar</span></button> - <button type="button" class="btn datepicker-wheels-select">Select <span class="sr-only">Month and Year</span></button> - </div> - </div> - </div> - </div> - </div> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/infinite-scroll.html b/elgg_clean/bower_components/fuelux/markup/infinite-scroll.html deleted file mode 100644 index 523bde2f..00000000 --- a/elgg_clean/bower_components/fuelux/markup/infinite-scroll.html +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="infinitescroll" id="myInfiniteScroll"></div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/loader-variations.txt b/elgg_clean/bower_components/fuelux/markup/loader-variations.txt deleted file mode 100644 index ae02198a..00000000 --- a/elgg_clean/bower_components/fuelux/markup/loader-variations.txt +++ /dev/null @@ -1,13 +0,0 @@ -//Starting frame -- add 'data-frame="{{number}}"' to 'loader' classed div. - (ex: 'data-frame="5"') - -//Controlling speed (default is 150) -- add 'data-delay="{{milliseconds}}"' to 'loader' classed div - (ex: 'data-delay="500"') - -//Animation range -- add 'data-begin="{{number}}"' to 'loader' classed div to specify beginning frame - (ex: 'data-begin="3"') -- add 'data-end="{{number}}"' to 'loader' classed div to specify ending frame - (ex: 'data-end="6"') \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/loader.html b/elgg_clean/bower_components/fuelux/markup/loader.html deleted file mode 100644 index 9b7404bf..00000000 --- a/elgg_clean/bower_components/fuelux/markup/loader.html +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="loader" data-initialize="loader" id="myLoader"></div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/pillbox-variations.txt b/elgg_clean/bower_components/fuelux/markup/pillbox-variations.txt deleted file mode 100644 index c100485c..00000000 --- a/elgg_clean/bower_components/fuelux/markup/pillbox-variations.txt +++ /dev/null @@ -1,2 +0,0 @@ -//Read Only -- can be set via options, or by adding 'data-readonly="readonly"' to 'pillbox' classed div \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/pillbox-with-pills.html b/elgg_clean/bower_components/fuelux/markup/pillbox-with-pills.html deleted file mode 100644 index f058ca18..00000000 --- a/elgg_clean/bower_components/fuelux/markup/pillbox-with-pills.html +++ /dev/null @@ -1,51 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="pillbox" data-initialize="pillbox" id="myPillbox"> - <ul class="clearfix pill-group"> - - <li class="btn btn-default pill" data-value="foo"> - <span>Item 1</span> - <span class="glyphicon glyphicon-close"> - <span class="sr-only">Remove</span> - </span> - </li> - <li class="btn pill btn-success"> - <span>Item 2</span> - <span class="glyphicon glyphicon-close"> - <span class="sr-only">Remove</span> - </span> - </li> - <li class="btn pill btn-warning" data-value="three-value"> - <span>Item 3</span> - <span class="glyphicon glyphicon-close"> - <span class="sr-only">Remove</span> - </span> - </li> - <li class="btn pill btn-danger"> - <span>Item 4</span> - <span class="glyphicon glyphicon-close"> - <span class="sr-only">Remove</span> - </span> - </li> - <li class="btn pill btn-info"> - <span>Item 5</span> - <span class="glyphicon glyphicon-close"> - <span class="sr-only">Remove</span> - </span> - </li> - - <li class="pillbox-input-wrap btn-group"> - <a class="pillbox-more">and <span class="pillbox-more-count"></span> more...</a> - <input type="text" class="form-control dropdown-toggle pillbox-add-item" placeholder="add item"> - <button type="button" class="dropdown-toggle sr-only"> - <span class="caret"></span> - <span class="sr-only">Toggle Dropdown</span> - </button> - <ul class="suggest dropdown-menu" role="menu" data-toggle="dropdown" data-flip="auto"></ul> - </li> - </ul> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/pillbox.html b/elgg_clean/bower_components/fuelux/markup/pillbox.html deleted file mode 100644 index 0affd04c..00000000 --- a/elgg_clean/bower_components/fuelux/markup/pillbox.html +++ /dev/null @@ -1,19 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="pillbox" data-initialize="pillbox" id="myPillbox"> - <ul class="clearfix pill-group"> - <li class="pillbox-input-wrap btn-group"> - <a class="pillbox-more">and <span class="pillbox-more-count"></span> more...</a> - <input type="text" class="form-control dropdown-toggle pillbox-add-item" placeholder="add item"> - <button type="button" class="dropdown-toggle sr-only"> - <span class="caret"></span> - <span class="sr-only">Toggle Dropdown</span> - </button> - <ul class="suggest dropdown-menu" role="menu" data-toggle="dropdown" data-flip="auto"></ul> - </li> - </ul> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/placard-header-footer.html b/elgg_clean/bower_components/fuelux/markup/placard-header-footer.html deleted file mode 100644 index 06d8b710..00000000 --- a/elgg_clean/bower_components/fuelux/markup/placard-header-footer.html +++ /dev/null @@ -1,15 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="placard" data-ellipsis="true" data-initialize="placard" id="myPlacard"> - <div class="placard-popup"></div> - <div class="placard-header"><h5>Header</h5></div> - <input class="form-control placard-field" type="text"/> - <div class="placard-footer"> - <a class="placard-cancel" href="#">Cancel</a> - <button class="btn btn-primary btn-xs placard-accept" type="button">Save</button> - </div> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/placard-variations.txt b/elgg_clean/bower_components/fuelux/markup/placard-variations.txt deleted file mode 100644 index d98c497e..00000000 --- a/elgg_clean/bower_components/fuelux/markup/placard-variations.txt +++ /dev/null @@ -1,6 +0,0 @@ -//Text area placard -- replace input element classed '.placard-field' with the following: - '<textarea class="form-control placard-field" readonly="readonly"></textarea>' - -//Glass styling -- add the class 'glass' to the '.placard-field' element \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/placard.html b/elgg_clean/bower_components/fuelux/markup/placard.html deleted file mode 100644 index c7806425..00000000 --- a/elgg_clean/bower_components/fuelux/markup/placard.html +++ /dev/null @@ -1,10 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="placard" data-initialize="placard" id="myPlacard"> - <div class="placard-popup"></div> - <input class="form-control placard-field" type="text"/> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/radio-inline-no-js.html b/elgg_clean/bower_components/fuelux/markup/radio-inline-no-js.html deleted file mode 100644 index 84067191..00000000 --- a/elgg_clean/bower_components/fuelux/markup/radio-inline-no-js.html +++ /dev/null @@ -1,18 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="radio-inline"> - <input - type="radio" - id="radiobuttons-new-inline--1" - name="radiobuttons-new-inline" - checked="checked" - value="" - > - <label for="radiobuttons-new-inline--1"> - Inline Radio Button - </label> -</div> -</body> -</html> diff --git a/elgg_clean/bower_components/fuelux/markup/radio-inline.html b/elgg_clean/bower_components/fuelux/markup/radio-inline.html deleted file mode 100644 index 7276eb0f..00000000 --- a/elgg_clean/bower_components/fuelux/markup/radio-inline.html +++ /dev/null @@ -1,9 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<label class="radio-custom radio-inline" data-initialize="radio" id="myCustomRadio"> - <input class="sr-only" name="radio1" type="radio" value="option1"> <span class="radio-label">1</span> -</label> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/radio-no-js-variations.txt b/elgg_clean/bower_components/fuelux/markup/radio-no-js-variations.txt deleted file mode 100644 index f87fc670..00000000 --- a/elgg_clean/bower_components/fuelux/markup/radio-no-js-variations.txt +++ /dev/null @@ -1,14 +0,0 @@ -// Checked on page load: -- add 'checked="checked"' attribute to input - -// Disabled on page load: -- add 'disabled="disabled"' attribute to input - -// Toggling with radio buttons uses plain old Bootstrap Collapse: -- See: http://getbootstrap.com/javascript/#collapse -- add `data-toggle="collapse"` -- add `data-target="{{selector}}"` -- optionally consider adding aria attributes `aria-expanded` and `aria-controls` - -// Highlighting radio buttons: -- add 'highlight' class to the `.radio` or `.radio-inline` wrapper. This will highlight the radio buttons on check / uncheck. diff --git a/elgg_clean/bower_components/fuelux/markup/radio-no-js.html b/elgg_clean/bower_components/fuelux/markup/radio-no-js.html deleted file mode 100644 index fce1c8f4..00000000 --- a/elgg_clean/bower_components/fuelux/markup/radio-no-js.html +++ /dev/null @@ -1,17 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="radio"> - <input - type="radio" - id="radiobuttons-new-block--1" - name="radiobuttons-new-block" - value="" - > - <label for="radiobuttons-new-block--1"> - Radio Button: unchecked on page load - </label> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/radio-variations.txt b/elgg_clean/bower_components/fuelux/markup/radio-variations.txt deleted file mode 100644 index e00bb4ce..00000000 --- a/elgg_clean/bower_components/fuelux/markup/radio-variations.txt +++ /dev/null @@ -1,13 +0,0 @@ -//Checked when initialized: -- add 'checked' class to input -- add 'checked="checked"' attribute to input - -//Disabled when initialized: -- add 'disabled="disabled"' attribute to input - -//Toggling radios: -- add 'data-toggle="{{selector}}"' attribute to input. This will toggle the matching selector's visibility on check / uncheck - (ex: 'data-toggle="#myTogglingBox"') - -//Highlighting radios: -- add 'highlight' class to block wrapper or label for inline. This will highlight the radio on check / uncheck. \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/radio.html b/elgg_clean/bower_components/fuelux/markup/radio.html deleted file mode 100644 index 32d3d2aa..00000000 --- a/elgg_clean/bower_components/fuelux/markup/radio.html +++ /dev/null @@ -1,12 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="radio"> - <label class="radio-custom" data-initialize="radio" id="myCustomRadio"> - <input class="sr-only" name="radio1" type="radio" value=""> - <span class="radio-label">Custom radio unchecked on page load</span> - </label> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/repeater-variations.txt b/elgg_clean/bower_components/fuelux/markup/repeater-variations.txt deleted file mode 100644 index 099f44e0..00000000 --- a/elgg_clean/bower_components/fuelux/markup/repeater-variations.txt +++ /dev/null @@ -1,3 +0,0 @@ -//Static height -- add 'data-staticheight="{{string}}"' to element classed '.repeater' to set the repeater's height - (ex: 'data-staticheight="400"' or 'data-staticheight="true") \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/repeater.html b/elgg_clean/bower_components/fuelux/markup/repeater.html deleted file mode 100644 index 504f932c..00000000 --- a/elgg_clean/bower_components/fuelux/markup/repeater.html +++ /dev/null @@ -1,100 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="repeater" id="myRepeater"> - <div class="repeater-header"> - <div class="repeater-header-left"> - <span class="repeater-title">Awesome Repeater</span> - <div class="repeater-search"> - <div class="search input-group"> - <input type="search" class="form-control" placeholder="Search"/> - <span class="input-group-btn"> - <button class="btn btn-default" type="button"> - <span class="glyphicon glyphicon-search"></span> - <span class="sr-only">Search</span> - </button> - </span> - </div> - </div> - </div> - <div class="repeater-header-right"> - <div class="btn-group selectlist repeater-filters" data-resize="auto"> - <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> - <span class="selected-label"> </span> - <span class="caret"></span> - <span class="sr-only">Toggle Filters</span> - </button> - <ul class="dropdown-menu" role="menu"> - <li data-value="all" data-selected="true"><a href="#">All</a></li> - <li data-value="some"><a href="#">Some</a></li> - <li data-value="others"><a href="#">Others</a></li> - </ul> - <input class="hidden hidden-field" name="filterSelection" readonly="readonly" aria-hidden="true" type="text"/> - </div> - <div class="btn-group repeater-views" data-toggle="buttons"> - <label class="btn btn-default active"> - <input name="repeaterViews" type="radio" value="list"><span class="glyphicon glyphicon-list"></span> - </label> - <label class="btn btn-default"> - <input name="repeaterViews" type="radio" value="thumbnail"><span class="glyphicon glyphicon-th"></span> - </label> - </div> - </div> - </div> - <div class="repeater-viewport"> - <div class="repeater-canvas"></div> - <div class="loader repeater-loader"></div> - </div> - <div class="repeater-footer"> - <div class="repeater-footer-left"> - <div class="repeater-itemization"> - <span><span class="repeater-start"></span> - <span class="repeater-end"></span> of <span class="repeater-count"></span> items</span> - <div class="btn-group selectlist" data-resize="auto"> - <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> - <span class="selected-label"> </span> - <span class="caret"></span> - <span class="sr-only">Toggle Dropdown</span> - </button> - <ul class="dropdown-menu" role="menu"> - <li data-value="5"><a href="#">5</a></li> - <li data-value="10" data-selected="true"><a href="#">10</a></li> - <li data-value="20"><a href="#">20</a></li> - <li data-value="50"><a href="#">50</a></li> - </ul> - <input class="hidden hidden-field" name="itemsPerPage" readonly="readonly" aria-hidden="true" type="text"/> - </div> - <span>Per Page</span> - </div> - </div> - <div class="repeater-footer-right"> - <div class="repeater-pagination"> - <button type="button" class="btn btn-default btn-sm repeater-prev"> - <span class="glyphicon glyphicon-chevron-left"></span> - <span class="sr-only">Previous Page</span> - </button> - <label id="myPageLabel1" class="page-label">Page</label> - <div class="repeater-primaryPaging active"> - <div class="input-group input-append dropdown combobox"> - <input type="text" class="form-control" aria-labelledby="myPageLabel1"> - <div class="input-group-btn"> - <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> - <span class="caret"></span> - <span class="sr-only">Toggle Dropdown</span> - </button> - <ul class="dropdown-menu dropdown-menu-right"></ul> - </div> - </div> - </div> - <input type="text" class="form-control repeater-secondaryPaging" aria-labelledby="myPageLabel1"> - <span>of <span class="repeater-pages"></span></span> - <button type="button" class="btn btn-default btn-sm repeater-next"> - <span class="glyphicon glyphicon-chevron-right"></span> - <span class="sr-only">Next Page</span> - </button> - </div> - </div> - </div> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/scheduler.html b/elgg_clean/bower_components/fuelux/markup/scheduler.html deleted file mode 100644 index 11afe483..00000000 --- a/elgg_clean/bower_components/fuelux/markup/scheduler.html +++ /dev/null @@ -1,697 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="form-horizontal container-fluid scheduler" data-initialize="scheduler" role="form" id="myScheduler"> - <div class="form-group start-datetime"> - <label class="col-sm-2 control-label scheduler-label" for="myStartDate">Start Date</label> - <div class="row col-sm-10"> - <div class="col-sm-8 form-group"> - <div class="datepicker start-date"> - <div class="input-group"> - <input class="form-control" id="myStartDate" type="text"/> - <div class="input-group-btn"> - <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> - <span class="glyphicon glyphicon-calendar"></span> - <span class="sr-only">Toggle Calendar</span> - </button> - <div class="dropdown-menu dropdown-menu-right datepicker-calendar-wrapper" role="menu"> - <div class="datepicker-calendar"> - <div class="datepicker-calendar-header"> - <button type="button" class="prev"><span class="glyphicon glyphicon-chevron-left"></span><span class="sr-only">Previous Month</span></button> - <button type="button" class="next"><span class="glyphicon glyphicon-chevron-right"></span><span class="sr-only">Next Month</span></button> - <button type="button" class="title"> - <span class="month"> - <span data-month="0">January</span> - <span data-month="1">February</span> - <span data-month="2">March</span> - <span data-month="3">April</span> - <span data-month="4">May</span> - <span data-month="5">June</span> - <span data-month="6">July</span> - <span data-month="7">August</span> - <span data-month="8">September</span> - <span data-month="9">October</span> - <span data-month="10">November</span> - <span data-month="11">December</span> - </span> <span class="year"></span> - </button> - </div> - <table class="datepicker-calendar-days"> - <thead> - <tr> - <th>Su</th> - <th>Mo</th> - <th>Tu</th> - <th>We</th> - <th>Th</th> - <th>Fr</th> - <th>Sa</th> - </tr> - </thead> - <tbody></tbody> - </table> - <div class="datepicker-calendar-footer"> - <button type="button" class="datepicker-today">Today</button> - </div> - </div> - <div class="datepicker-wheels" aria-hidden="true"> - <div class="datepicker-wheels-month"> - <h2 class="header">Month</h2> - <ul> - <li data-month="0"><button type="button">Jan</button></li> - <li data-month="1"><button type="button">Feb</button></li> - <li data-month="2"><button type="button">Mar</button></li> - <li data-month="3"><button type="button">Apr</button></li> - <li data-month="4"><button type="button">May</button></li> - <li data-month="5"><button type="button">Jun</button></li> - <li data-month="6"><button type="button">Jul</button></li> - <li data-month="7"><button type="button">Aug</button></li> - <li data-month="8"><button type="button">Sep</button></li> - <li data-month="9"><button type="button">Oct</button></li> - <li data-month="10"><button type="button">Nov</button></li> - <li data-month="11"><button type="button">Dec</button></li> - </ul> - </div> - <div class="datepicker-wheels-year"> - <h2 class="header">Year</h2> - <ul></ul> - </div> - <div class="datepicker-wheels-footer clearfix"> - <button type="button" class="btn datepicker-wheels-back"><span class="glyphicon glyphicon-arrow-left"></span><span class="sr-only">Return to Calendar</span></button> - <button type="button" class="btn datepicker-wheels-select">Select <span class="sr-only">Month and Year</span></button> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - - <div class="col-sm-4 form-group"> - <label class="sr-only" for="myStartTime">Start Time</label> - <div class="input-group combobox start-time"> - <input id="myStartTime" type="text" class="form-control" /> - <div class="input-group-btn"> - <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> - <span class="caret"></span> - <span class="sr-only">Toggle Dropdown</span> - </button> - <ul class="dropdown-menu dropdown-menu-right" role="menu"> - <li data-value="12:00 AM"><a href="#">12:00 AM</a></li> - <li data-value="12:30 AM"><a href="#">12:30 AM</a></li> - <li data-value="1:00 AM"><a href="#">1:00 AM</a></li> - <li data-value="1:30 AM"><a href="#">1:30 AM</a></li> - <li data-value="2:00 AM"><a href="#">2:00 AM</a></li> - <li data-value="2:30 AM"><a href="#">2:30 AM</a></li> - <li data-value="3:00 AM"><a href="#">3:00 AM</a></li> - <li data-value="3:30 AM"><a href="#">3:30 AM</a></li> - <li data-value="4:00 AM"><a href="#">4:00 AM</a></li> - <li data-value="4:30 AM"><a href="#">4:30 AM</a></li> - <li data-value="5:00 AM"><a href="#">5:00 AM</a></li> - <li data-value="5:30 AM"><a href="#">5:30 AM</a></li> - <li data-value="6:00 AM"><a href="#">6:00 AM</a></li> - <li data-value="6:30 AM"><a href="#">6:30 AM</a></li> - <li data-value="7:00 AM"><a href="#">7:00 AM</a></li> - <li data-value="7:30 AM"><a href="#">7:30 AM</a></li> - <li data-value="8:00 AM"><a href="#">8:00 AM</a></li> - <li data-value="8:30 AM"><a href="#">8:30 AM</a></li> - <li data-value="9:00 AM"><a href="#">9:00 AM</a></li> - <li data-value="9:30 AM"><a href="#">9:30 AM</a></li> - <li data-value="10:00 AM"><a href="#">10:00 AM</a></li> - <li data-value="10:30 AM"><a href="#">10:30 AM</a></li> - <li data-value="11:00 AM"><a href="#">11:00 AM</a></li> - <li data-value="11:30 AM"><a href="#">11:30 AM</a></li> - <li data-value="12:00 PM"><a href="#">12:00 PM</a></li> - <li data-value="12:30 PM"><a href="#">12:30 PM</a></li> - <li data-value="1:00 PM"><a href="#">1:00 PM</a></li> - <li data-value="1:30 PM"><a href="#">1:30 PM</a></li> - <li data-value="2:00 PM"><a href="#">2:00 PM</a></li> - <li data-value="2:30 PM"><a href="#">2:30 PM</a></li> - <li data-value="3:00 PM"><a href="#">3:00 PM</a></li> - <li data-value="3:30 PM"><a href="#">3:30 PM</a></li> - <li data-value="4:00 PM"><a href="#">4:00 PM</a></li> - <li data-value="4:30 PM"><a href="#">4:30 PM</a></li> - <li data-value="5:00 PM"><a href="#">5:00 PM</a></li> - <li data-value="5:30 PM"><a href="#">5:30 PM</a></li> - <li data-value="6:00 PM"><a href="#">6:00 PM</a></li> - <li data-value="6:30 PM"><a href="#">6:30 PM</a></li> - <li data-value="7:00 PM"><a href="#">7:00 PM</a></li> - <li data-value="7:30 PM"><a href="#">7:30 PM</a></li> - <li data-value="8:00 PM"><a href="#">8:00 PM</a></li> - <li data-value="8:30 PM"><a href="#">8:30 PM</a></li> - <li data-value="9:00 PM"><a href="#">9:00 PM</a></li> - <li data-value="9:30 PM"><a href="#">9:30 PM</a></li> - <li data-value="10:00 PM"><a href="#">10:00 PM</a></li> - <li data-value="10:30 PM"><a href="#">10:30 PM</a></li> - <li data-value="11:00 PM"><a href="#">11:00 PM</a></li> - <li data-value="11:30 PM"><a href="#">11:30 PM</a></li> - </ul> - </div> - </div> - </div> - - </div> - </div> - - <div class="row form-group timezone-container"> - <label class="col-sm-2 control-label scheduler-label">Timezone</label> - <div class="col-xs-12 col-sm-10 col-md-10"> - <div data-resize="auto" class="btn-group selectlist timezone"> - <button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> - <span class="selected-label" style="width: 67px;">(GMT-06:00) Central Standard Time</span> - <span class="caret"></span> - <span class="sr-only">Toggle Dropdown</span> - </button> - <ul class="dropdown-menu" role="menu"> - <li data-name="Central Standard Time (no DST)" data-offset="-06:00"><a href="#">(GMT-06:00) Central Standard Time</a></li> - <li data-name="Morocco Standard Time" data-offset="+00:00"><a href="#">(GMT) Casablanca *</a></li> - <li data-name="GMT Standard Time" data-offset="+00:00"><a href="#">(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London *</a></li> - <li data-name="Greenwich Standard Time" data-offset="+00:00"><a href="#">(GMT) Monrovia, Reykjavik</a></li> - <li data-name="W. Europe Standard Time" data-offset="+01:00"><a href="#">(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna *</a></li> - <li data-name="Central Europe Standard Time" data-offset="+01:00"><a href="#">(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague *</a></li> - <li data-name="Romance Standard Time" data-offset="+01:00"><a href="#">(GMT+01:00) Brussels, Copenhagen, Madrid, Paris *</a></li> - <li data-name="Central European Standard Time" data-offset="+01:00"><a href="#">(GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb *</a></li> - <li data-name="W. Central Africa Standard Time" data-offset="+01:00"><a href="#">(GMT+01:00) West Central Africa</a></li> - <li data-name="Jordan Standard Time" data-offset="+02:00"><a href="#">(GMT+02:00) Amman *</a></li> - <li data-name="GTB Standard Time" data-offset="+02:00"><a href="#">(GMT+02:00) Athens, Bucharest, Istanbul *</a></li> - <li data-name="Middle East Standard Time" data-offset="+02:00"><a href="#">(GMT+02:00) Beirut *</a></li> - <li data-name="Egypt Standard Time" data-offset="+02:00"><a href="#">(GMT+02:00) Cairo *</a></li> - <li data-name="South Africa Standard Time" data-offset="+02:00"><a href="#">(GMT+02:00) Harare, Pretoria</a></li> - <li data-name="FLE Standard Time" data-offset="+02:00"><a href="#">(GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius *</a></li> - <li data-name="Israel Standard Time" data-offset="+02:00"><a href="#">(GMT+02:00) Jerusalem *</a></li> - <li data-name="E. Europe Standard Time" data-offset="+02:00"><a href="#">(GMT+02:00) Minsk *</a></li> - <li data-name="Namibia Standard Time" data-offset="+02:00"><a href="#">(GMT+02:00) Windhoek *</a></li> - <li data-name="Arabic Standard Time" data-offset="+03:00"><a href="#">(GMT+03:00) Baghdad *</a></li> - <li data-name="Arab Standard Time" data-offset="+03:00"><a href="#">(GMT+03:00) Kuwait, Riyadh</a></li> - <li data-name="Russian Standard Time" data-offset="+03:00"><a href="#">(GMT+03:00) Moscow, St. Petersburg, Volgograd *</a></li> - <li data-name="E. Africa Standard Time" data-offset="+03:00"><a href="#">(GMT+03:00) Nairobi</a></li> - <li data-name="Georgian Standard Time" data-offset="+03:00"><a href="#">(GMT+03:00) Tbilisi</a></li> - <li data-name="Iran Standard Time" data-offset="+03:30"><a href="#">(GMT+03:30) Tehran *</a></li> - <li data-name="Arabian Standard Time" data-offset="+04:00"><a href="#">(GMT+04:00) Abu Dhabi, Muscat</a></li> - <li data-name="Azerbaijan Standard Time" data-offset="+04:00"><a href="#">(GMT+04:00) Baku *</a></li> - <li data-name="Caucasus Standard Time" data-offset="+04:00"><a href="#">(GMT+04:00) Caucasus Standard Time</a></li> - <li data-name="Mauritius Standard Time" data-offset="+04:00"><a href="#">(GMT+04:00) Port Louis *</a></li> - <li data-name="Caucasus Standard Time" data-offset="+04:00"><a href="#">(GMT+04:00) Yerevan</a></li> - <li data-name="Afghanistan Standard Time" data-offset="+04:30"><a href="#">(GMT+04:30) Kabul</a></li> - <li data-name="Ekaterinburg Standard Time" data-offset="+05:00"><a href="#">(GMT+05:00) Ekaterinburg *</a></li> - <li data-name="Pakistan Standard Time" data-offset="+05:00"><a href="#">(GMT+05:00) Islamabad, Karachi *</a></li> - <li data-name="West Asia Standard Time" data-offset="+05:00"><a href="#">(GMT+05:00) Tashkent</a></li> - <li data-name="India Standard Time" data-offset="+05:30"><a href="#">(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi</a></li> - <li data-name="Sri Lanka Standard Time" data-offset="+05:30"><a href="#">(GMT+05:30) Sri Jayawardenepura</a></li> - <li data-name="Nepal Standard Time" data-offset="+05:45"><a href="#">(GMT+05:45) Kathmandu</a></li> - <li data-name="N. Central Asia Standard Time" data-offset="+06:00"><a href="#">(GMT+06:00) Almaty, Novosibirsk *</a></li> - <li data-name="Central Asia Standard Time" data-offset="+06:00"><a href="#">(GMT+06:00) Astana, Dhaka</a></li> - <li data-name="Myanmar Standard Time" data-offset="+06:00"><a href="#">(GMT+06:30) Yangon (Rangoon)</a></li> - <li data-name="SE Asia Standard Time" data-offset="+07:00"><a href="#">(GMT+07:00) Bangkok, Hanoi, Jakarta</a></li> - <li data-name="North Asia Standard Time" data-offset="+07:00"><a href="#">(GMT+07:00) Krasnoyarsk *</a></li> - <li data-name="China Standard Time" data-offset="+08:00"><a href="#">(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi</a></li> - <li data-name="North Asia East Standard Time" data-offset="+08:00"><a href="#">(GMT+08:00) Irkutsk, Ulaan Bataar *</a></li> - <li data-name="Singapore Standard Time" data-offset="+08:00"><a href="#">(GMT+08:00) Kuala Lumpur, Singapore</a></li> - <li data-name="W. Australia Standard Time" data-offset="+08:00"><a href="#">(GMT+08:00) Perth *</a></li> - <li data-name="Taipei Standard Time" data-offset="+08:00"><a href="#">(GMT+08:00) Taipei</a></li> - <li data-name="Tokyo Standard Time" data-offset="+09:00"><a href="#">(GMT+09:00) Osaka, Sapporo, Tokyo</a></li> - <li data-name="Korea Standard Time" data-offset="+09:00"><a href="#">(GMT+09:00) Seoul</a></li> - <li data-name="Yakutsk Standard Time" data-offset="+09:00"><a href="#">(GMT+09:00) Yakutsk *</a></li> - <li data-name="Cen. Australia Standard Time" data-offset="+09:30"><a href="#">(GMT+09:30) Adelaide *</a></li> - <li data-name="AUS Central Standard Time" data-offset="+09:30"><a href="#">(GMT+09:30) Darwin</a></li> - <li data-name="E. Australia Standard Time" data-offset="+10:00"><a href="#">(GMT+10:00) Brisbane</a></li> - <li data-name="AUS Eastern Standard Time" data-offset="+10:00"><a href="#">(GMT+10:00) Canberra, Melbourne, Sydney *</a></li> - <li data-name="West Pacific Standard Time" data-offset="+10:00"><a href="#">(GMT+10:00) Guam, Port Moresby</a></li> - <li data-name="Tasmania Standard Time" data-offset="+10:00"><a href="#">(GMT+10:00) Hobart *</a></li> - <li data-name="Vladivostok Standard Time" data-offset="+10:00"><a href="#">(GMT+10:00) Vladivostok *</a></li> - <li data-name="Central Pacific Standard Time" data-offset="+11:00"><a href="#">(GMT+11:00) Magadan, Solomon Is., New Caledonia</a></li> - <li data-name="New Zealand Standard Time" data-offset="+12:00"><a href="#">(GMT+12:00) Auckland, Wellington *</a></li> - <li data-name="Fiji Standard Time" data-offset="+12:00"><a href="#">(GMT+12:00) Fiji, Kamchatka, Marshall Is.</a></li> - <li data-name="Tonga Standard Time" data-offset="+12:00"><a href="#">(GMT+13:00) Nukualofa</a></li> - <li data-name="Azores Standard Time" data-offset="+12:00"><a href="#">(GMT-01:00) Azores *</a></li> - <li data-name="Cape Verde Standard Time" data-offset="-01:00"><a href="#">(GMT-01:00) Cape Verde Is.</a></li> - <li data-name="Mid-Atlantic Standard Time" data-offset="-02:00"><a href="#">(GMT-02:00) Mid-Atlantic *</a></li> - <li data-name="E. South America Standard Time" data-offset="-03:00"><a href="#">(GMT-03:00) Brasilia *</a></li> - <li data-name="Argentina Standard Time" data-offset="-03:00"><a href="#">(GMT-03:00) Buenos Aires *</a></li> - <li data-name="SA Western Standard Time" data-offset="-03:00"><a href="#">(GMT-03:00) Georgetown</a></li> - <li data-name="Greenland Standard Time" data-offset="-03:00"><a href="#">(GMT-03:00) Greenland *</a></li> - <li data-name="Montevideo Standard Time" data-offset="-03:00"><a href="#">(GMT-03:00) Montevideo *</a></li> - <li data-name="Newfoundland Standard Time" data-offset="-03:00"><a href="#">(GMT-03:30) Newfoundland *</a></li> - <li data-name="Atlantic Standard Time" data-offset="-04:00"><a href="#">(GMT-04:00) Atlantic Time (Canada) *</a></li> - <li data-name="SA Western Standard Time" data-offset="-04:00"><a href="#">(GMT-04:00) La Paz</a></li> - <li data-name="Central Brazilian Standard Time" data-offset="-04:00"><a href="#">(GMT-04:00) Manaus *</a></li> - <li data-name="Pacific SA Standard Time" data-offset="-04:00"><a href="#">(GMT-04:00) Santiago *</a></li> - <li data-name="Venezuela Standard Time" data-offset="-04:30"><a href="#">(GMT-04:30) Caracas</a></li> - <li data-name="SA Pacific Standard Time" data-offset="-05:00"><a href="#">(GMT-05:00) Bogota, Lima, Quito, Rio Branco</a></li> - <li data-name="Eastern Standard Time" data-offset="-05:00"><a href="#">(GMT-05:00) Eastern Time (US & Canada) *</a></li> - <li data-name="US Eastern Standard Time" data-offset="-05:00"><a href="#">(GMT-05:00) Indiana (East)</a></li> - <li data-name="Central America Standard Time" data-offset="-06:00"><a href="#">(GMT-06:00) Central America</a></li> - <li data-name="Central Standard Time" data-offset="-06:00"><a href="#">(GMT-06:00) Central Time (US & Canada) *</a></li> - <li data-name="Central Standard Time (Mexico)" data-offset="-06:00"><a href="#">(GMT-06:00) Guadalajara, Mexico City, Monterrey - New *</a></li> - <li data-name="Central Standard Time (Mexico)" data-offset="-06:00"><a href="#">(GMT-06:00) Guadalajara, Mexico City, Monterrey - Old</a></li> - <li data-name="Canada Central Standard Time" data-offset="-06:00"><a href="#">(GMT-06:00) Saskatchewan</a></li> - <li data-name="US Mountain Standard Time" data-offset="-07:00"><a href="#">(GMT-07:00) Arizona</a></li> - <li data-name="Mountain Standard Time (Mexico)" data-offset="-07:00"><a href="#">(GMT-07:00) Chihuahua, La Paz, Mazatlan - New *</a></li> - <li data-name="Mountain Standard Time (Mexico)" data-offset="-07:00"><a href="#">(GMT-07:00) Chihuahua, La Paz, Mazatlan - Old</a></li> - <li data-name="Mountain Standard Time" data-offset="-07:00"><a href="#">(GMT-07:00) Mountain Time (US & Canada) *</a></li> - <li data-name="Pacific Standard Time" data-offset="-08:00"><a href="#">(GMT-08:00) Pacific Time (US & Canada) *</a></li> - <li data-name="Pacific Standard Time (Mexico)" data-offset="-08:00"><a href="#">(GMT-08:00) Tijuana, Baja California *</a></li> - <li data-name="Alaskan Standard Time" data-offset="-09:00"><a href="#">(GMT-09:00) Alaska *</a></li> - <li data-name="Hawaiian Standard Time" data-offset="-10:00"><a href="#">(GMT-10:00) Hawaii</a></li> - <li data-name="Samoa Standard Time" data-offset="-11:00"><a href="#">(GMT-11:00) Midway Island, Samoa</a></li> - <li data-name="Dateline Standard Time" data-offset="-12:00"><a href="#">(GMT-12:00) International Date Line West</a></li> - </ul> - <input type="text" aria-hidden="true" readonly="readonly" name="TimeZoneSelectlist" class="hidden hidden-field"> - </div> - </div> - </div> - - <div class="form-group repeat-container"> - <label class="col-sm-2 control-label scheduler-label">Repeat</label> - <div class="col-sm-10"> - - <div class="form-group repeat-interval"> - <div data-resize="auto" class="btn-group selectlist pull-left repeat-options"> - <button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> - <span class="selected-label">None (run once)</span> - <span class="caret"></span> - </button> - <ul class="dropdown-menu" role="menu"> - <li data-value="none"><a href="#">None (run once)</a></li> - <li data-value="secondly" data-text="second(s)"><a href="#">Per Second</a> - <li data-value="minutely" data-text="minute(s)"><a href="#">Per Minute</a> - <li data-value="hourly" data-text="hour(s)"><a href="#">Hourly</a></li> - <li data-value="daily" data-text="day(s)"><a href="#">Daily</a></li> - <li data-value="weekdays"><a href="#">Weekdays</a></li> - <li data-value="weekly" data-text="week(s)"><a href="#">Weekly</a></li> - <li data-value="monthly" data-text="month(s)"><a href="#">Monthly</a></li> - <li data-value="yearly"><a href="#">Yearly</a></li> - </ul> - <input type="text" aria-hidden="true" readonly="readonly" name="intervalSelectlist" class="hidden hidden-field"> - </div> - - <div class="repeat-panel repeat-every-panel repeat-secondly repeat-minutely repeat-hourly repeat-daily repeat-weekly hidden" aria-hidden="true"> - <label id="MySchedulerEveryLabel" class="inline-form-text repeat-every-pretext">every</label> - - <div class="spinbox digits-3 repeat-every"> - <input type="text" class="form-control input-mini spinbox-input" aria-labelledby="MySchedulerEveryLabel"> - <div class="spinbox-buttons btn-group btn-group-vertical"> - <button type="button" class="btn btn-default spinbox-up btn-xs"> - <span class="glyphicon glyphicon-chevron-up"></span><span class="sr-only">Increase</span> - </button> - <button type="button" class="btn btn-default spinbox-down btn-xs"> - <span class="glyphicon glyphicon-chevron-down"></span><span class="sr-only">Decrease</span> - </button> - </div> - </div> - - <div class="inline-form-text repeat-every-text"></div> - </div> - </div> - - <div class="form-group repeat-panel repeat-weekly repeat-days-of-the-week hidden" aria-hidden="true"> - <fieldset class="btn-group" data-toggle="buttons"> - <label class="btn btn-default"> - <input type="checkbox" data-value="SU">Sun - </label> - <label class="btn btn-default"> - <input type="checkbox" data-value="MO">Mon - </label> - <label class="btn btn-default"> - <input type="checkbox" data-value="TU">Tue - </label> - <label class="btn btn-default"> - <input type="checkbox" data-value="WE"> Wed - </label> - <label class="btn btn-default"> - <input type="checkbox" data-value="TH"> Thu - </label> - <label class="btn btn-default"> - <input type="checkbox" data-value="FR"> Fri - </label> - <label class="btn btn-default"> - <input type="checkbox" data-value="SA"> Sat - </label> - </fieldset> - </div> - - - <div class="repeat-panel repeat-monthly hidden" aria-hidden="true"> - <div class="form-group repeat-monthly-date"> - <div class="radio pull-left"> - <label class="radio-custom"> - <input class="sr-only" type="radio" checked="checked" name="repeat-monthly" value="bymonthday"> - <span class="radio-label">on day</span> - </label> - </div> - - <div data-resize="auto" class="btn-group selectlist pull-left"> - <button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> - <span class="selected-label">1</span> - <span class="caret"></span> - </button> - <ul class="dropdown-menu" role="menu" style="height:200px; overflow:auto;"> - <li data-value="1"><a href="#">1</a></li> - <li data-value="2"><a href="#">2</a></li> - <li data-value="3"><a href="#">3</a></li> - <li data-value="4"><a href="#">4</a></li> - <li data-value="5"><a href="#">5</a></li> - <li data-value="6"><a href="#">6</a></li> - <li data-value="7"><a href="#">7</a></li> - <li data-value="8"><a href="#">8</a></li> - <li data-value="9"><a href="#">9</a></li> - <li data-value="10"><a href="#">10</a></li> - <li data-value="11"><a href="#">11</a></li> - <li data-value="12"><a href="#">12</a></li> - <li data-value="13"><a href="#">13</a></li> - <li data-value="14"><a href="#">14</a></li> - <li data-value="15"><a href="#">15</a></li> - <li data-value="16"><a href="#">16</a></li> - <li data-value="17"><a href="#">17</a></li> - <li data-value="18"><a href="#">18</a></li> - <li data-value="19"><a href="#">19</a></li> - <li data-value="20"><a href="#">20</a></li> - <li data-value="21"><a href="#">21</a></li> - <li data-value="22"><a href="#">22</a></li> - <li data-value="23"><a href="#">23</a></li> - <li data-value="24"><a href="#">24</a></li> - <li data-value="25"><a href="#">25</a></li> - <li data-value="26"><a href="#">26</a></li> - <li data-value="27"><a href="#">27</a></li> - <li data-value="28"><a href="#">28</a></li> - <li data-value="29"><a href="#">29</a></li> - <li data-value="30"><a href="#">30</a></li> - <li data-value="31"><a href="#">31</a></li> - </ul> - <input type="text" aria-hidden="true" readonly="readonly" name="monthlySelectlist" class="hidden hidden-field"> - </div> - </div> - - <div class="repeat-monthly-day form-group"> - <div class="radio pull-left"> - <label class="radio-custom"> - <input class="sr-only" type="radio" checked="checked" name="repeat-monthly" value="bysetpos"> - <span class="radio-label">on the</span> - </label> - </div> - - <div data-resize="auto" class="btn-group selectlist month-day-pos pull-left"> - <button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> - <span class="selected-label">First</span> - <span class="caret"></span> - </button> - <ul class="dropdown-menu" role="menu"> - <li data-value="1"><a href="#">First</a></li> - <li data-value="2"><a href="#">Second</a></li> - <li data-value="3"><a href="#">Third</a></li> - <li data-value="4"><a href="#">Fourth</a></li> - <li data-value="-1"><a href="#">Last</a></li> - </ul> - <input type="text" aria-hidden="true" readonly="readonly" name="monthlySelectlist" class="hidden hidden-field"> - </div> - - <div data-resize="auto" class="btn-group selectlist month-days pull-left"> - <button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> - <span class="selected-label">Sunday</span> - <span class="caret"></span> - </button> - <ul class="dropdown-menu" role="menu"> - <li data-value="SU"><a href="#">Sunday</a></li> - <li data-value="MO"><a href="#">Monday</a></li> - <li data-value="TU"><a href="#">Tuesday</a></li> - <li data-value="WE"><a href="#">Wednesday</a></li> - <li data-value="TH"><a href="#">Thursday</a></li> - <li data-value="FR"><a href="#">Friday</a></li> - <li data-value="SA"><a href="#">Saturday</a></li> - <li data-value="SU,MO,TU,WE,TH,FR,SA"><a href="#">Day</a></li> - <li data-value="MO,TU,WE,TH,FR"><a href="#">Weekday</a></li> - <li data-value="SU,SA"><a href="#">Weekend day</a></li> - </ul> - <input type="text" aria-hidden="true" readonly="readonly" name="monthlySelectlist" class="hidden hidden-field"> - </div> - - </div> - </div> - - <div class="repeat-panel repeat-yearly hidden" aria-hidden="true"> - - <div class="form-group repeat-yearly-date"> - - <div class="radio pull-left"> - <label class="radio-custom"> - <input class="sr-only" type="radio" checked="checked" name="repeat-yearly" value="bymonthday"> - <span class="radio-label">on</span> - </label> - </div> - - <div data-resize="auto" class="btn-group selectlist year-month pull-left"> - <button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> - <span class="selected-label">January</span> - <span class="caret"></span> - </button> - <ul class="dropdown-menu" role="menu"> - <li data-value="1"><a href="#">January</a></li> - <li data-value="2"><a href="#">February</a></li> - <li data-value="3"><a href="#">March</a></li> - <li data-value="4"><a href="#">April</a></li> - <li data-value="5"><a href="#">May</a></li> - <li data-value="6"><a href="#">June</a></li> - <li data-value="7"><a href="#">July</a></li> - <li data-value="8"><a href="#">August</a></li> - <li data-value="9"><a href="#">September</a></li> - <li data-value="10"><a href="#">October</a></li> - <li data-value="11"><a href="#">November</a></li> - <li data-value="12"><a href="#">December</a></li> - </ul> - <input type="text" aria-hidden="true" readonly="readonly" name="monthlySelectlist" class="hidden hidden-field"> - </div> - - <div data-resize="auto" class="btn-group selectlist year-month-day pull-left"> - <button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> - <span class="selected-label">1</span> - <span class="caret"></span> - </button> - <ul class="dropdown-menu" role="menu" style="height:200px; overflow:auto;"> - <li data-value="1"><a href="#">1</a></li> - <li data-value="2"><a href="#">2</a></li> - <li data-value="3"><a href="#">3</a></li> - <li data-value="4"><a href="#">4</a></li> - <li data-value="5"><a href="#">5</a></li> - <li data-value="6"><a href="#">6</a></li> - <li data-value="7"><a href="#">7</a></li> - <li data-value="8"><a href="#">8</a></li> - <li data-value="9"><a href="#">9</a></li> - <li data-value="10"><a href="#">10</a></li> - <li data-value="11"><a href="#">11</a></li> - <li data-value="12"><a href="#">12</a></li> - <li data-value="13"><a href="#">13</a></li> - <li data-value="14"><a href="#">14</a></li> - <li data-value="15"><a href="#">15</a></li> - <li data-value="16"><a href="#">16</a></li> - <li data-value="17"><a href="#">17</a></li> - <li data-value="18"><a href="#">18</a></li> - <li data-value="19"><a href="#">19</a></li> - <li data-value="20"><a href="#">20</a></li> - <li data-value="21"><a href="#">21</a></li> - <li data-value="22"><a href="#">22</a></li> - <li data-value="23"><a href="#">23</a></li> - <li data-value="24"><a href="#">24</a></li> - <li data-value="25"><a href="#">25</a></li> - <li data-value="26"><a href="#">26</a></li> - <li data-value="27"><a href="#">27</a></li> - <li data-value="28"><a href="#">28</a></li> - <li data-value="29"><a href="#">29</a></li> - <li data-value="30"><a href="#">30</a></li> - <li data-value="31"><a href="#">31</a></li> - </ul> - <input type="text" aria-hidden="true" readonly="readonly" name="monthlySelectlist" class="hidden hidden-field"> - </div> - </div> - - <div class="form-group repeat-yearly-day"> - - <div class="radio pull-left"><label class="radio-custom"><input class="sr-only" type="radio" name="repeat-yearly" value="bysetpos"> on the</label></div> - - <div data-resize="auto" class="btn-group selectlist year-month-day-pos pull-left"> - <button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> - <span class="selected-label">First</span> - <span class="caret"></span> - <span class="sr-only">First</span> - </button> - <ul class="dropdown-menu" role="menu"> - <li data-value="1"><a href="#">First</a></li> - <li data-value="2"><a href="#">Second</a></li> - <li data-value="3"><a href="#">Third</a></li> - <li data-value="4"><a href="#">Fourth</a></li> - <li data-value="-1"><a href="#">Last</a></li> - </ul> - <input type="text" aria-hidden="true" readonly="readonly" name="yearlyDateSelectlist" class="hidden hidden-field"> - </div> - - <div data-resize="auto" class="btn-group selectlist year-month-days pull-left"> - <button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> - <span class="selected-label">Sunday</span> - <span class="caret"></span> - <span class="sr-only">Sunday</span> - </button> - <ul class="dropdown-menu" role="menu" style="height:200px; overflow:auto;"> - <li data-value="SU"><a href="#">Sunday</a></li> - <li data-value="MO"><a href="#">Monday</a></li> - <li data-value="TU"><a href="#">Tuesday</a></li> - <li data-value="WE"><a href="#">Wednesday</a></li> - <li data-value="TH"><a href="#">Thursday</a></li> - <li data-value="FR"><a href="#">Friday</a></li> - <li data-value="SA"><a href="#">Saturday</a></li> - <li data-value="SU,MO,TU,WE,TH,FR,SA"><a href="#">Day</a></li> - <li data-value="MO,TU,WE,TH,FR"><a href="#">Weekday</a></li> - <li data-value="SU,SA"><a href="#">Weekend day</a></li> - </ul> - <input type="text" aria-hidden="true" readonly="readonly" name="yearlyDaySelectlist" class="hidden hidden-field"> - </div> - <div class="inline-form-text repeat-yearly-day-text"> of </div> - - <div data-resize="auto" class="btn-group selectlist year-month pull-left"> - <button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> - <span class="selected-label">January</span> - <span class="caret"></span> - <span class="sr-only">January</span> - </button> - <ul class="dropdown-menu" role="menu" style="height:200px; overflow:auto;"> - <li data-value="1"><a href="#">January</a></li> - <li data-value="2"><a href="#">February</a></li> - <li data-value="3"><a href="#">March</a></li> - <li data-value="4"><a href="#">April</a></li> - <li data-value="5"><a href="#">May</a></li> - <li data-value="6"><a href="#">June</a></li> - <li data-value="7"><a href="#">July</a></li> - <li data-value="8"><a href="#">August</a></li> - <li data-value="9"><a href="#">September</a></li> - <li data-value="10"><a href="#">October</a></li> - <li data-value="11"><a href="#">November</a></li> - <li data-value="12"><a href="#">December</a></li> - </ul> - <input type="text" aria-hidden="true" readonly="readonly" name="yearlyDaySelectlist" class="hidden hidden-field"> - </div> - </div> - </div> - - </div> - </div> - - <div class="form-group repeat-end hidden" aria-hidden="true"> - <label class="col-sm-2 control-label scheduler-label">End</label> - <div class="col-sm-10 row"> - <div class="col-sm-3 form-group"> - <div data-resize="auto" class="btn-group selectlist end-options pull-left"> - <button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> - <span class="selected-label">Never</span> - <span class="caret"></span> - <span class="sr-only">Never</span> - </button> - <ul class="dropdown-menu" role="menu"> - <li data-value="never"><a href="#">Never</a></li> - <li data-value="after"><a href="#">After</a></li> - <li data-value="date"><a href="#">On date</a></li> - </ul> - <input type="text" aria-hidden="true" readonly="readonly" name="EndSelectlist" class="hidden hidden-field"> - </div> - </div> - - <div class="col-sm-6 form-group end-option-panel end-after-panel pull-left hidden" aria-hidden="true"> - <div class="spinbox digits-3 end-after"> - <label id="MyEndAfter" class="sr-only">End After</label> - <input type="text" class="form-control input-mini spinbox-input" aria-labelledby="MyEndAfter"> - <div class="spinbox-buttons btn-group btn-group-vertical"> - <button type="button" class="btn btn-default spinbox-up btn-xs"> - <span class="glyphicon glyphicon-chevron-up"></span><span class="sr-only">Increase</span> - </button> - <button type="button" class="btn btn-default spinbox-down btn-xs"> - <span class="glyphicon glyphicon-chevron-down"></span><span class="sr-only">Decrease</span> - </button> - </div> - </div> - <div class="inline-form-text end-after-text">occurrence(s)</div> - </div> - - <div class="col-sm-8 form-group end-option-panel end-on-date-panel pull-left hidden" aria-hidden="true"> - <div class="datepicker input-group end-on-date"> - <div class="input-group"> - <input class="form-control" type="text"/> - <div class="input-group-btn"> - <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> - <span class="glyphicon glyphicon-calendar"></span> - <span class="sr-only">Toggle Calendar</span> - </button> - <div class="dropdown-menu dropdown-menu-right datepicker-calendar-wrapper" role="menu"> - <div class="datepicker-calendar"> - <div class="datepicker-calendar-header"> - <button type="button" class="prev"><span class="glyphicon glyphicon-chevron-left"></span><span class="sr-only">Previous Month</span></button> - <button type="button" class="next"><span class="glyphicon glyphicon-chevron-right"></span><span class="sr-only">Next Month</span></button> - <button type="button" class="title"> - <span class="month"> - <span data-month="0">January</span> - <span data-month="1">February</span> - <span data-month="2">March</span> - <span data-month="3">April</span> - <span data-month="4">May</span> - <span data-month="5">June</span> - <span data-month="6">July</span> - <span data-month="7">August</span> - <span data-month="8">September</span> - <span data-month="9">October</span> - <span data-month="10">November</span> - <span data-month="11">December</span> - </span> <span class="year"></span> - </button> - </div> - <table class="datepicker-calendar-days"> - <thead> - <tr> - <th>Su</th> - <th>Mo</th> - <th>Tu</th> - <th>We</th> - <th>Th</th> - <th>Fr</th> - <th>Sa</th> - </tr> - </thead> - <tbody></tbody> - </table> - <div class="datepicker-calendar-footer"> - <button type="button" class="datepicker-today">Today</button> - </div> - </div> - <div class="datepicker-wheels" aria-hidden="true"> - <div class="datepicker-wheels-month"> - <h2 class="header">Month</h2> - <ul> - <li data-month="0"><button>Jan</button></li> - <li data-month="1"><button>Feb</button></li> - <li data-month="2"><button>Mar</button></li> - <li data-month="3"><button>Apr</button></li> - <li data-month="4"><button>May</button></li> - <li data-month="5"><button>Jun</button></li> - <li data-month="6"><button>Jul</button></li> - <li data-month="7"><button>Aug</button></li> - <li data-month="8"><button>Sep</button></li> - <li data-month="9"><button>Oct</button></li> - <li data-month="10"><button>Nov</button></li> - <li data-month="11"><button>Dec</button></li> - </ul> - </div> - <div class="datepicker-wheels-year"> - <h2 class="header">Year</h2> - <ul></ul> - </div> - <div class="datepicker-wheels-footer clearfix"> - <button type="button" class="btn datepicker-wheels-back"><span class="glyphicon glyphicon-arrow-left"></span><span class="sr-only">Return to Calendar</span></button> - <button type="button" class="btn datepicker-wheels-select">Select <span class="sr-only">Month and Year</span></button> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/search.html b/elgg_clean/bower_components/fuelux/markup/search.html deleted file mode 100644 index 18825122..00000000 --- a/elgg_clean/bower_components/fuelux/markup/search.html +++ /dev/null @@ -1,15 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="search input-group" data-initialize="search" role="search" id="mySearch"> - <input type="search" class="form-control" placeholder="Search"/> - <span class="input-group-btn"> - <button class="btn btn-default" type="button"> - <span class="glyphicon glyphicon-search"></span> - <span class="sr-only">Search</span> - </button> - </span> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/selectlist-variations.txt b/elgg_clean/bower_components/fuelux/markup/selectlist-variations.txt deleted file mode 100644 index d1f2c76a..00000000 --- a/elgg_clean/bower_components/fuelux/markup/selectlist-variations.txt +++ /dev/null @@ -1,5 +0,0 @@ -//Has selected item upon initialization -- add 'data-selected="true"' to desired 'ul.dropdown-menu li' tag - -//Auto resizing -- add 'data-resize="auto"' to 'selectlist' classed element \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/selectlist.html b/elgg_clean/bower_components/fuelux/markup/selectlist.html deleted file mode 100644 index fdc864c4..00000000 --- a/elgg_clean/bower_components/fuelux/markup/selectlist.html +++ /dev/null @@ -1,21 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="btn-group selectlist" data-initialize="selectlist" data-resize="auto" id="mySelectlist"> - <button class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button"> - <span class="selected-label"> </span> - <span class="caret"></span> - <span class="sr-only">Toggle Dropdown</span> - </button> - <ul class="dropdown-menu" role="menu"> - <li data-value="1"><a href="#">One</a></li> - <li data-value="2"><a href="#">Two</a></li> - <li data-value="3"><a href="#">Three</a></li> - <li data-value="4"><a href="#">Buzz</a></li> - <li data-value="Item Five" data-foo="bar" data-fizz="buzz"><a href="#">Item Five</a></li> - </ul> - <input class="hidden hidden-field" name="mySelectlist" readonly="readonly" aria-hidden="true" type="text"/> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/spinbox-variations.txt b/elgg_clean/bower_components/fuelux/markup/spinbox-variations.txt deleted file mode 100644 index 0107c62f..00000000 --- a/elgg_clean/bower_components/fuelux/markup/spinbox-variations.txt +++ /dev/null @@ -1,3 +0,0 @@ -//Has default value to begin with -- add 'value="{{string}}"' to input classed 'spinbox-input' - (ex: 'value="10"') \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/spinbox.html b/elgg_clean/bower_components/fuelux/markup/spinbox.html deleted file mode 100644 index 8c754fbd..00000000 --- a/elgg_clean/bower_components/fuelux/markup/spinbox.html +++ /dev/null @@ -1,17 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="spinbox" data-initialize="spinbox" id="mySpinbox"> - <input id="mySpinboxInput" type="text" class="form-control input-mini spinbox-input"> - <div class="spinbox-buttons btn-group btn-group-vertical"> - <button type="button" class="btn btn-default spinbox-up btn-xs"> - <span class="glyphicon glyphicon-chevron-up"></span><span class="sr-only">Increase</span> - </button> - <button type="button" class="btn btn-default spinbox-down btn-xs"> - <span class="glyphicon glyphicon-chevron-down"></span><span class="sr-only">Decrease</span> - </button> - </div> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/tree-folders-selectable.html b/elgg_clean/bower_components/fuelux/markup/tree-folders-selectable.html deleted file mode 100644 index 029ce76a..00000000 --- a/elgg_clean/bower_components/fuelux/markup/tree-folders-selectable.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<ul class="tree tree-folder-select" id="myTree" role="tree"> - <li class="tree-branch hidden" data-template="treebranch" role="treeitem" aria-expanded="false"> - <div class="tree-branch-header"> - <button type="button" class="glyphicon icon-caret glyphicon-play"><span class="sr-only">Open</span></button> - <button type="button" class="tree-branch-name"> - <span class="glyphicon icon-folder glyphicon-folder-close"></span> - <span class="tree-label"></span> - </button> - </div> - <ul class="tree-branch-children" role="group"></ul> - <div class="tree-loader" role="alert">Loading...</div> - </li> - <li class="tree-item hidden" data-template="treeitem" role="treeitem"> - <button type="button" class="tree-item-name"> - <span class="glyphicon icon-item fueluxicon-bullet"></span> - <span class="tree-label"></span> - </button> - </li> -</ul> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/tree.html b/elgg_clean/bower_components/fuelux/markup/tree.html deleted file mode 100644 index 8e9d423b..00000000 --- a/elgg_clean/bower_components/fuelux/markup/tree.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<ul class="tree" id="myTree" role="tree"> - <li class="tree-branch hidden" data-template="treebranch" role="treeitem" aria-expanded="false"> - <div class="tree-branch-header"> - <button type="button" class="tree-branch-name"> - <span class="glyphicon icon-caret glyphicon-play"></span> - <span class="glyphicon icon-folder glyphicon-folder-close"></span> - <span class="tree-label"></span> - </button> - </div> - <ul class="tree-branch-children" role="group"></ul> - <div class="tree-loader" role="alert">Loading...</div> - </li> - <li class="tree-item hidden" data-template="treeitem" role="treeitem"> - <button type="button" class="tree-item-name"> - <span class="glyphicon icon-item fueluxicon-bullet"></span> - <span class="tree-label"></span> - </button> - </li> -</ul> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/wizard-variations.txt b/elgg_clean/bower_components/fuelux/markup/wizard-variations.txt deleted file mode 100644 index bb77be6d..00000000 --- a/elgg_clean/bower_components/fuelux/markup/wizard-variations.txt +++ /dev/null @@ -1,2 +0,0 @@ -//Active step -- add class 'active' to 'ul.steps li' element of choice to make that step active upon initialization \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/markup/wizard.html b/elgg_clean/bower_components/fuelux/markup/wizard.html deleted file mode 100644 index 6ba2fed1..00000000 --- a/elgg_clean/bower_components/fuelux/markup/wizard.html +++ /dev/null @@ -1,53 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head><title>Sample Markup</title></head> -<body> -<div class="wizard" data-initialize="wizard" id="myWizard"> - <div class="steps-container"> - <ul class="steps"> - <li data-step="1"><span class="badge">1</span>Campaign<span class="chevron"></span></li> - <li data-step="2"><span class="badge">2</span>Recipients<span class="chevron"></span></li> - <li data-step="3"><span class="badge">3</span>Template<span class="chevron"></span></li> - <li data-step="4"><span class="badge">4</span>Preview<span class="chevron"></span></li> - <li data-step="5"><span class="badge">5</span>Send<span class="chevron"></span></li> - </ul> - </div> - <div class="actions"> - <button type="button" class="btn btn-default btn-prev"><span class="glyphicon glyphicon-arrow-left"></span>Prev</button> - <button type="button" class="btn btn-default btn-next" data-last="Complete">Next<span class="glyphicon glyphicon-arrow-right"></span></button> - </div> - <div class="step-content"> - <div class="step-pane active sample-pane alert" data-step="1"> - <h4>Setup Campaign</h4> - <p>Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion daikon amaranth tatsoi tomatillo melon azuki bean garlic. Beetroot water spinach okra water chestnut ricebean pea catsear courgette.</p> - <p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke. Beetroot water spinach okra water chestnut ricebean pea catsear courgette.</p> - <p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini. </p> - </div> - <div class="step-pane sample-pane bg-info alert" data-step="2"> - <h4>Choose Recipients</h4> - <p>Celery quandong swiss chard chicory earthnut pea potato. Salsify taro catsear garlic gram celery bitterleaf wattle seed collard greens nori. Grape wattle seed kombu beetroot horseradish carrot squash brussels sprout chard. </p> - <p>Pea horseradish azuki bean lettuce avocado asparagus okra. Kohlrabi radish okra azuki bean corn fava bean mustard tigernut jÃcama green bean celtuce collard greens avocado quandong fennel gumbo black-eyed pea. Grape silver beet watercress potato tigernut corn groundnut. Chickweed okra pea winter purslane coriander yarrow sweet pepper radish garlic brussels sprout groundnut summer purslane earthnut pea tomato spring onion azuki bean gourd. Gumbo kakadu plum komatsuna black-eyed pea green bean zucchini gourd winter purslane silver beet rock melon radish asparagus spinach. </p> - <p>Beetroot water spinach okra water chestnut ricebean pea catsear courgette summer purslane. Water spinach arugula pea tatsoi aubergine spring onion bush tomato kale radicchio turnip chicory salsify pea sprouts fava bean. Dandelion zucchini burdock yarrow chickpea dandelion sorrel courgette turnip greens. </p> - </div> - <div class="step-pane sample-pane bg-danger alert" data-step="3"> - <h4>Design Template</h4> - <p>Nori grape silver beet broccoli kombu beet greens fava bean potato quandong celery. Bunya nuts black-eyed pea prairie turnip leek lentil turnip greens parsnip. Sea lettuce lettuce water chestnut eggplant winter purslane fennel azuki bean earthnut pea sierra leone bologi leek soko chicory celtuce parsley jÃcama salsify. </p> - <p>Celery quandong swiss chard chicory earthnut pea potato. Salsify taro catsear garlic gram celery bitterleaf wattle seed collard greens nori. Grape wattle seed kombu beetroot horseradish carrot squash brussels sprout chard. </p> - <p>Pea horseradish azuki bean lettuce avocado asparagus okra. Kohlrabi radish okra azuki bean corn fava bean mustard tigernut jÃcama green bean celtuce collard greens avocado quandong fennel gumbo black-eyed pea. Grape silver beet watercress potato tigernut corn groundnut. Chickweed okra pea winter purslane coriander yarrow sweet pepper radish garlic brussels sprout groundnut summer purslane earthnut pea tomato spring onion azuki bean gourd. Gumbo kakadu plum komatsuna black-eyed pea green bean zucchini gourd winter purslane silver beet rock melon radish asparagus spinach. </p> - </div> - <div class="step-pane sample-pane bg-warning alert" data-step="4"> - <h4>Preview Message</h4> - <p>Beetroot water spinach okra water chestnut ricebean pea catsear courgette summer purslane. Water spinach arugula pea tatsoi aubergine spring onion bush tomato kale radicchio turnip chicory salsify pea sprouts fava bean. Dandelion zucchini burdock yarrow chickpea dandelion sorrel courgette turnip greens tigernut soybean radish artichoke wattle seed endive groundnut broccoli arugula. Beetroot water spinach okra water chestnut ricebean pea catsear courgette.</p> - <p>Soko radicchio bunya nuts gram dulse silver beet parsnip napa cabbage lotus root sea lettuce brussels sprout cabbage. Catsear cauliflower garbanzo yarrow salsify chicory garlic bell pepper napa cabbage lettuce tomato kale arugula melon sierra leone bologi rutabaga tigernut. Sea lettuce gumbo grape kale kombu cauliflower salsify kohlrabi okra sea lettuce broccoli celery lotus root carrot winter purslane turnip greens garlic.</p> - <p>Jacama garlic courgette coriander radicchio plantain scallion cauliflower fava bean desert raisin spring onion chicory bunya nuts. Sea lettuce water spinach gram fava bean leek dandelion silver beet eggplant bush tomato. </p> - </div> - <div class="step-pane sample-pane bg-success alert" data-step="5"> - <h4>Send Message</h4> - <p>Soko radicchio bunya nuts gram dulse silver beet parsnip napa cabbage lotus root sea lettuce brussels sprout cabbage. Catsear cauliflower garbanzo yarrow salsify chicory garlic bell pepper napa cabbage lettuce tomato kale arugula melon sierra leone bologi rutabaga tigernut.</p> - <p>Sea lettuce gumbo grape kale kombu cauliflower salsify kohlrabi okra sea lettuce broccoli celery lotus root carrot winter purslane turnip greens garlic. JÃcama garlic courgette coriander radicchio plantain scallion cauliflower fava bean desert raisin spring onion chicory bunya nuts. Sea lettuce water spinach gram fava bean leek dandelion silver beet eggplant bush tomato. </p> - <p>Pea horseradish azuki bean lettuce avocado asparagus okra. Kohlrabi radish okra azuki bean corn fava bean mustard tigernut jÃcama green bean celtuce collard greens avocado quandong fennel gumbo black-eyed pea. Grape silver beet watercress potato tigernut corn groundnut. Chickweed okra pea winter purslane coriander yarrow sweet pepper radish garlic brussels sprout groundnut summer purslane earthnut pea tomato spring onion azuki bean gourd. </p> - </div> - </div> -</div> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/fuelux/package.js b/elgg_clean/bower_components/fuelux/package.js deleted file mode 100644 index fbcf4566..00000000 --- a/elgg_clean/bower_components/fuelux/package.js +++ /dev/null @@ -1,26 +0,0 @@ -// package metadata file for Meteor.js - -/* jshint strict:false */ -/* global Package:true */ - -Package.describe({ - name: 'exacttarget:fuelux', // http://atmospherejs.com/exacttarget/fuelux - summary: 'Base Fuel UX styles and controls', - version: '3.11.3', - git: 'https://github.com/ExactTarget/fuelux.git' -}); - -Package.onUse(function (api) { - api.versionsFrom('METEOR@1.0'); - api.use('jquery', 'client'); - api.addFiles([ - 'dist/fonts/fuelux.eot', - 'dist/fonts/fuelux.svg', - 'dist/fonts/fuelux.ttf', - 'dist/fonts/fuelux.woff' - ], 'client', { isAsset: true }); - api.addFiles([ - 'dist/css/fuelux.css', - 'dist/js/fuelux.js' - ], 'client'); -}); diff --git a/elgg_clean/bower_components/fuelux/package.json b/elgg_clean/bower_components/fuelux/package.json deleted file mode 100644 index 03b87692..00000000 --- a/elgg_clean/bower_components/fuelux/package.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "author": { - "email": "kparkerson@exacttarget.com", - "name": "ExactTarget", - "url": "http://code.exacttarget.com" - }, - "bugs": { - "url": "https://github.com/ExactTarget/fuelux/issues" - }, - "dependencies": { - "bootstrap": "3.x", - "jquery": "2.x", - "moment": "^2.10.6" - }, - "description": "Base Fuel UX styles and controls", - "devDependencies": { - "bower": "1.x", - "connect": "3.x", - "grunt": "0.x", - "grunt-banner": "0.x", - "grunt-blanket-qunit": "~0.2.0", - "grunt-browserify": "3.x", - "grunt-bump": "0.x", - "grunt-cli": "0.x", - "grunt-contrib-clean": "0.x", - "grunt-contrib-compress": "0.x", - "grunt-contrib-concat": "0.x", - "grunt-contrib-connect": "0.x", - "grunt-contrib-copy": "0.x", - "grunt-contrib-jshint": "0.x", - "grunt-contrib-less": "1.x", - "grunt-contrib-qunit": "0.5.x", - "grunt-contrib-uglify": "0.x", - "grunt-contrib-watch": "0.x", - "grunt-html": "^5.0.0", - "grunt-jsbeautifier": "0.x", - "grunt-prompt": "1.x", - "grunt-saucelabs": "8.x", - "grunt-shell": "1.x", - "grunt-text-replace": "0.x", - "grunt-umd": "2.x", - "grunt-zip": "0.x", - "load-grunt-config": "0.x", - "load-grunt-tasks": "3.x", - "qunitjs": "1.x", - "semver": "5.x", - "serve-static": ">=1.7.2" - }, - "engines": { - "node": "0.10.x" - }, - "homepage": "https://github.com/ExactTarget/fuelux", - "keywords": [ - "application", - "bootstrap", - "controls", - "css", - "exacttarget", - "exact target", - "front-end", - "fuelux", - "fuel ux", - "js", - "salesforce", - "user interface", - "web" - ], - "license": { - "type": "BSD-3-Clause", - "url": "https://github.com/ExactTarget/fuelux/blob/master/LICENSE" - }, - "main": "./dist/js/npm", - "name": "fuelux", - "private": false, - "repository": { - "type": "git", - "url": "git://github.com/ExactTarget/fuelux.git" - }, - "scripts": { - "main": "devserver.js", - "start": "grunt serve", - "test": "grunt travisci --verbose", - "postinstall": "node postinstall.js" - }, - "title": "Fuel UX", - "version": "3.11.4", - "volo": { - "baseDir": "lib", - "dependencies": { - "moment": "http://momentjs.com/downloads/moment-with-locales.js" - }, - "type": "directory", - "url": "https://raw.github.com/ExactTarget/fuelux/{version}/dist/fuelux.zip" - } -} diff --git a/elgg_clean/bower_components/fuelux/postinstall.js b/elgg_clean/bower_components/fuelux/postinstall.js deleted file mode 100755 index e5de2c7c..00000000 --- a/elgg_clean/bower_components/fuelux/postinstall.js +++ /dev/null @@ -1,4 +0,0 @@ - -if (process.env.INSTALL_BOWER === 'true') { - require("bower").commands.install(); -} diff --git a/elgg_clean/bower_components/jquery/.bower.json b/elgg_clean/bower_components/jquery/.bower.json deleted file mode 100644 index b45942fc..00000000 --- a/elgg_clean/bower_components/jquery/.bower.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "jquery", - "version": "2.1.4", - "main": "dist/jquery.js", - "license": "MIT", - "ignore": [ - "**/.*", - "build", - "dist/cdn", - "speed", - "test", - "*.md", - "AUTHORS.txt", - "Gruntfile.js", - "package.json" - ], - "devDependencies": { - "sizzle": "2.1.1-jquery.2.1.2", - "requirejs": "2.1.10", - "qunit": "1.14.0", - "sinon": "1.8.1" - }, - "keywords": [ - "jquery", - "javascript", - "library" - ], - "homepage": "https://github.com/jquery/jquery", - "_release": "2.1.4", - "_resolution": { - "type": "version", - "tag": "2.1.4", - "commit": "7751e69b615c6eca6f783a81e292a55725af6b85" - }, - "_source": "git://github.com/jquery/jquery.git", - "_target": ">= 1.9.1", - "_originalSource": "jquery" -} \ No newline at end of file diff --git a/elgg_clean/bower_components/jquery/MIT-LICENSE.txt b/elgg_clean/bower_components/jquery/MIT-LICENSE.txt deleted file mode 100644 index cdd31b5c..00000000 --- a/elgg_clean/bower_components/jquery/MIT-LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2014 jQuery Foundation and other contributors -http://jquery.com/ - -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/elgg_clean/bower_components/jquery/bower.json b/elgg_clean/bower_components/jquery/bower.json deleted file mode 100644 index 0c80cd53..00000000 --- a/elgg_clean/bower_components/jquery/bower.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "jquery", - "version": "2.1.4", - "main": "dist/jquery.js", - "license": "MIT", - "ignore": [ - "**/.*", - "build", - "dist/cdn", - "speed", - "test", - "*.md", - "AUTHORS.txt", - "Gruntfile.js", - "package.json" - ], - "devDependencies": { - "sizzle": "2.1.1-jquery.2.1.2", - "requirejs": "2.1.10", - "qunit": "1.14.0", - "sinon": "1.8.1" - }, - "keywords": [ - "jquery", - "javascript", - "library" - ] -} diff --git a/elgg_clean/bower_components/jquery/dist/jquery.js b/elgg_clean/bower_components/jquery/dist/jquery.js deleted file mode 100644 index eed17778..00000000 --- a/elgg_clean/bower_components/jquery/dist/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/elgg_clean/bower_components/jquery/dist/jquery.min.js b/elgg_clean/bower_components/jquery/dist/jquery.min.js deleted file mode 100644 index fad9ab12..00000000 --- a/elgg_clean/bower_components/jquery/dist/jquery.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={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,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)), -void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,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":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n}); -//# sourceMappingURL=jquery.min.map \ No newline at end of file diff --git a/elgg_clean/bower_components/jquery/dist/jquery.min.map b/elgg_clean/bower_components/jquery/dist/jquery.min.map deleted file mode 100644 index 95fc122f..00000000 --- a/elgg_clean/bower_components/jquery/dist/jquery.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jquery.min.js","sources":["jquery.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","support","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","call","get","num","pushStack","elems","ret","merge","prevObject","each","callback","args","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","parseFloat","nodeType","isEmptyObject","globalEval","code","script","indirect","eval","trim","createElement","text","head","appendChild","parentNode","removeChild","camelCase","string","nodeName","toLowerCase","value","isArraylike","makeArray","results","Object","inArray","second","grep","invert","callbackInverse","matches","callbackExpect","arg","guid","proxy","tmp","now","Date","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","pop","push_native","list","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","childNodes","e","els","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","div","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","is","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","next","prev","until","truncate","sibling","n","targets","l","closest","pos","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","reverse","rnotwhite","optionsCache","createOptions","object","flag","Callbacks","memory","fired","firing","firingStart","firingLength","firingIndex","stack","once","fire","data","stopOnFalse","disable","remove","lock","locked","fireWith","Deferred","func","tuples","state","promise","always","deferred","fail","then","fns","newDefer","tuple","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","resolveWith","progressContexts","resolveContexts","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","completed","removeEventListener","readyState","setTimeout","access","chainable","emptyGet","raw","bulk","acceptData","owner","Data","defineProperty","uid","accepts","descriptor","unlock","defineProperties","set","prop","stored","camel","hasData","discard","data_priv","data_user","rbrace","rmultiDash","dataAttr","parseJSON","removeData","_data","_removeData","camelKey","queue","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","cssExpand","isHidden","el","css","rcheckableType","fragment","createDocumentFragment","checkClone","cloneNode","noCloneChecked","strundefined","focusinBubbles","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","event","types","handleObjIn","eventHandle","events","t","handleObj","special","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","trigger","onlyHandlers","bubbleType","ontype","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","props","fixHooks","keyHooks","original","which","charCode","keyCode","mouseHooks","eventDoc","body","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","originalEvent","fixHook","load","blur","click","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","relatedTarget","attaches","on","one","origFn","rxhtmlTag","rtagName","rhtml","rnoInnerhtml","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","manipulationTarget","content","disableScript","restoreScript","setGlobalEval","refElements","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","getAll","fixInput","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","buildFragment","scripts","selection","wrap","nodes","createTextNode","cleanData","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","detach","hasScripts","iNoClone","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","actualDisplay","style","display","getDefaultComputedStyle","defaultDisplay","write","close","rmargin","rnumnonpx","getStyles","opener","getComputedStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","pixelPositionVal","boxSizingReliableVal","container","backgroundClip","clearCloneStyle","cssText","computePixelPositionAndBoxSizingReliable","divStyle","pixelPosition","boxSizingReliable","reliableMarginRight","marginDiv","marginRight","swap","rdisplayswap","rnumsplit","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","vendorPropName","capName","origName","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","showHide","show","hidden","cssHooks","opacity","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","margin","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","Tween","easing","unit","propHooks","run","percent","eased","duration","step","tween","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","*","createTween","scale","maxIterations","createFxNow","genFx","includeWidth","height","animation","collection","opts","oldfire","checkDisplay","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","Animation","properties","stopped","tick","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","rejectWith","timer","complete","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","optDisabled","radioValue","nodeHook","boolHook","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","rfocusable","removeProp","for","class","notxml","hasAttribute","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","valHooks","optionSet","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","JSON","parse","parseXML","DOMParser","parseFromString","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","transports","allTypes","ajaxLocation","ajaxLocParts","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","processData","async","contentType","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","status","abort","statusText","finalText","success","method","crossDomain","param","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","v","encodeURIComponent","serialize","serializeArray","xhr","XMLHttpRequest","xhrId","xhrCallbacks","xhrSuccessStatus",1223,"xhrSupported","cors","open","username","xhrFields","onload","onerror","responseText","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","left","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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"} \ No newline at end of file diff --git a/elgg_clean/bower_components/jquery/src/ajax.js b/elgg_clean/bower_components/jquery/src/ajax.js deleted file mode 100644 index 5c7b4add..00000000 --- a/elgg_clean/bower_components/jquery/src/ajax.js +++ /dev/null @@ -1,786 +0,0 @@ -define([ - "./core", - "./var/rnotwhite", - "./ajax/var/nonce", - "./ajax/var/rquery", - "./core/init", - "./ajax/parseJSON", - "./ajax/parseXML", - "./deferred" -], function( jQuery, rnotwhite, nonce, rquery ) { - -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 - }); - }; -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/ajax/jsonp.js b/elgg_clean/bower_components/jquery/src/ajax/jsonp.js deleted file mode 100644 index ff0d5389..00000000 --- a/elgg_clean/bower_components/jquery/src/ajax/jsonp.js +++ /dev/null @@ -1,89 +0,0 @@ -define([ - "../core", - "./var/nonce", - "./var/rquery", - "../ajax" -], function( jQuery, nonce, rquery ) { - -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"; - } -}); - -}); diff --git a/elgg_clean/bower_components/jquery/src/ajax/load.js b/elgg_clean/bower_components/jquery/src/ajax/load.js deleted file mode 100644 index bff25b1a..00000000 --- a/elgg_clean/bower_components/jquery/src/ajax/load.js +++ /dev/null @@ -1,75 +0,0 @@ -define([ - "../core", - "../core/parseHTML", - "../ajax", - "../traversing", - "../manipulation", - "../selector", - // Optional event/alias dependency - "../event/alias" -], function( jQuery ) { - -// 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; -}; - -}); diff --git a/elgg_clean/bower_components/jquery/src/ajax/parseJSON.js b/elgg_clean/bower_components/jquery/src/ajax/parseJSON.js deleted file mode 100644 index 3a96d15b..00000000 --- a/elgg_clean/bower_components/jquery/src/ajax/parseJSON.js +++ /dev/null @@ -1,13 +0,0 @@ -define([ - "../core" -], function( jQuery ) { - -// Support: Android 2.3 -// Workaround failure to string-cast null input -jQuery.parseJSON = function( data ) { - return JSON.parse( data + "" ); -}; - -return jQuery.parseJSON; - -}); diff --git a/elgg_clean/bower_components/jquery/src/ajax/parseXML.js b/elgg_clean/bower_components/jquery/src/ajax/parseXML.js deleted file mode 100644 index 9eeb625f..00000000 --- a/elgg_clean/bower_components/jquery/src/ajax/parseXML.js +++ /dev/null @@ -1,28 +0,0 @@ -define([ - "../core" -], function( jQuery ) { - -// 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; -}; - -return jQuery.parseXML; - -}); diff --git a/elgg_clean/bower_components/jquery/src/ajax/script.js b/elgg_clean/bower_components/jquery/src/ajax/script.js deleted file mode 100644 index f44329d4..00000000 --- a/elgg_clean/bower_components/jquery/src/ajax/script.js +++ /dev/null @@ -1,64 +0,0 @@ -define([ - "../core", - "../ajax" -], function( jQuery ) { - -// 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(); - } - } - }; - } -}); - -}); diff --git a/elgg_clean/bower_components/jquery/src/ajax/var/nonce.js b/elgg_clean/bower_components/jquery/src/ajax/var/nonce.js deleted file mode 100644 index 0871aae8..00000000 --- a/elgg_clean/bower_components/jquery/src/ajax/var/nonce.js +++ /dev/null @@ -1,5 +0,0 @@ -define([ - "../../core" -], function( jQuery ) { - return jQuery.now(); -}); diff --git a/elgg_clean/bower_components/jquery/src/ajax/var/rquery.js b/elgg_clean/bower_components/jquery/src/ajax/var/rquery.js deleted file mode 100644 index 500a77a0..00000000 --- a/elgg_clean/bower_components/jquery/src/ajax/var/rquery.js +++ /dev/null @@ -1,3 +0,0 @@ -define(function() { - return (/\?/); -}); diff --git a/elgg_clean/bower_components/jquery/src/ajax/xhr.js b/elgg_clean/bower_components/jquery/src/ajax/xhr.js deleted file mode 100644 index c2b43c92..00000000 --- a/elgg_clean/bower_components/jquery/src/ajax/xhr.js +++ /dev/null @@ -1,136 +0,0 @@ -define([ - "../core", - "../var/support", - "../ajax" -], function( jQuery, support ) { - -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(); - } - } - }; - } -}); - -}); diff --git a/elgg_clean/bower_components/jquery/src/attributes.js b/elgg_clean/bower_components/jquery/src/attributes.js deleted file mode 100644 index fa2ef1ed..00000000 --- a/elgg_clean/bower_components/jquery/src/attributes.js +++ /dev/null @@ -1,11 +0,0 @@ -define([ - "./core", - "./attributes/attr", - "./attributes/prop", - "./attributes/classes", - "./attributes/val" -], function( jQuery ) { - -// Return jQuery for attributes-only inclusion -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/attributes/attr.js b/elgg_clean/bower_components/jquery/src/attributes/attr.js deleted file mode 100644 index a4414d11..00000000 --- a/elgg_clean/bower_components/jquery/src/attributes/attr.js +++ /dev/null @@ -1,141 +0,0 @@ -define([ - "../core", - "../var/rnotwhite", - "../var/strundefined", - "../core/access", - "./support", - "../selector" -], function( jQuery, rnotwhite, strundefined, access, support ) { - -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; - }; -}); - -}); diff --git a/elgg_clean/bower_components/jquery/src/attributes/classes.js b/elgg_clean/bower_components/jquery/src/attributes/classes.js deleted file mode 100644 index 10113841..00000000 --- a/elgg_clean/bower_components/jquery/src/attributes/classes.js +++ /dev/null @@ -1,158 +0,0 @@ -define([ - "../core", - "../var/rnotwhite", - "../var/strundefined", - "../data/var/data_priv", - "../core/init" -], function( jQuery, rnotwhite, strundefined, data_priv ) { - -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; - } -}); - -}); diff --git a/elgg_clean/bower_components/jquery/src/attributes/prop.js b/elgg_clean/bower_components/jquery/src/attributes/prop.js deleted file mode 100644 index d4ee8b6b..00000000 --- a/elgg_clean/bower_components/jquery/src/attributes/prop.js +++ /dev/null @@ -1,94 +0,0 @@ -define([ - "../core", - "../core/access", - "./support" -], function( jQuery, access, support ) { - -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; -}); - -}); diff --git a/elgg_clean/bower_components/jquery/src/attributes/support.js b/elgg_clean/bower_components/jquery/src/attributes/support.js deleted file mode 100644 index 5db5c521..00000000 --- a/elgg_clean/bower_components/jquery/src/attributes/support.js +++ /dev/null @@ -1,35 +0,0 @@ -define([ - "../var/support" -], function( support ) { - -(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"; -})(); - -return support; - -}); diff --git a/elgg_clean/bower_components/jquery/src/attributes/val.js b/elgg_clean/bower_components/jquery/src/attributes/val.js deleted file mode 100644 index 4a1358a6..00000000 --- a/elgg_clean/bower_components/jquery/src/attributes/val.js +++ /dev/null @@ -1,161 +0,0 @@ -define([ - "../core", - "./support", - "../core/init" -], function( jQuery, support ) { - -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; - }; - } -}); - -}); diff --git a/elgg_clean/bower_components/jquery/src/callbacks.js b/elgg_clean/bower_components/jquery/src/callbacks.js deleted file mode 100644 index 17572bb9..00000000 --- a/elgg_clean/bower_components/jquery/src/callbacks.js +++ /dev/null @@ -1,205 +0,0 @@ -define([ - "./core", - "./var/rnotwhite" -], function( jQuery, rnotwhite ) { - -// 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; -}; - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/core.js b/elgg_clean/bower_components/jquery/src/core.js deleted file mode 100644 index 6f471eef..00000000 --- a/elgg_clean/bower_components/jquery/src/core.js +++ /dev/null @@ -1,502 +0,0 @@ -define([ - "./var/arr", - "./var/slice", - "./var/concat", - "./var/push", - "./var/indexOf", - "./var/class2type", - "./var/toString", - "./var/hasOwn", - "./var/support" -], function( arr, slice, concat, push, indexOf, class2type, toString, hasOwn, support ) { - -var - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - version = "@VERSION", - - // 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; -} - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/core/access.js b/elgg_clean/bower_components/jquery/src/core/access.js deleted file mode 100644 index b6110c8f..00000000 --- a/elgg_clean/bower_components/jquery/src/core/access.js +++ /dev/null @@ -1,60 +0,0 @@ -define([ - "../core" -], function( jQuery ) { - -// 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; -}; - -return access; - -}); diff --git a/elgg_clean/bower_components/jquery/src/core/init.js b/elgg_clean/bower_components/jquery/src/core/init.js deleted file mode 100644 index 7e83a049..00000000 --- a/elgg_clean/bower_components/jquery/src/core/init.js +++ /dev/null @@ -1,123 +0,0 @@ -// Initialize a jQuery object -define([ - "../core", - "./var/rsingleTag", - "../traversing/findFilter" -], function( jQuery, rsingleTag ) { - -// 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 ); - -return init; - -}); diff --git a/elgg_clean/bower_components/jquery/src/core/parseHTML.js b/elgg_clean/bower_components/jquery/src/core/parseHTML.js deleted file mode 100644 index 64cf2a18..00000000 --- a/elgg_clean/bower_components/jquery/src/core/parseHTML.js +++ /dev/null @@ -1,39 +0,0 @@ -define([ - "../core", - "./var/rsingleTag", - "../manipulation" // buildFragment -], function( jQuery, rsingleTag ) { - -// 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 ); -}; - -return jQuery.parseHTML; - -}); diff --git a/elgg_clean/bower_components/jquery/src/core/ready.js b/elgg_clean/bower_components/jquery/src/core/ready.js deleted file mode 100644 index db1a6e60..00000000 --- a/elgg_clean/bower_components/jquery/src/core/ready.js +++ /dev/null @@ -1,97 +0,0 @@ -define([ - "../core", - "../core/init", - "../deferred" -], function( jQuery ) { - -// 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(); - -}); diff --git a/elgg_clean/bower_components/jquery/src/core/var/rsingleTag.js b/elgg_clean/bower_components/jquery/src/core/var/rsingleTag.js deleted file mode 100644 index 7e7090b7..00000000 --- a/elgg_clean/bower_components/jquery/src/core/var/rsingleTag.js +++ /dev/null @@ -1,4 +0,0 @@ -define(function() { - // Match a standalone tag - return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); -}); diff --git a/elgg_clean/bower_components/jquery/src/css.js b/elgg_clean/bower_components/jquery/src/css.js deleted file mode 100644 index d4816175..00000000 --- a/elgg_clean/bower_components/jquery/src/css.js +++ /dev/null @@ -1,450 +0,0 @@ -define([ - "./core", - "./var/pnum", - "./core/access", - "./css/var/rmargin", - "./css/var/rnumnonpx", - "./css/var/cssExpand", - "./css/var/isHidden", - "./css/var/getStyles", - "./css/curCSS", - "./css/defaultDisplay", - "./css/addGetHookIf", - "./css/support", - "./data/var/data_priv", - - "./core/init", - "./css/swap", - "./core/ready", - "./selector" // contains -], function( jQuery, pnum, access, rmargin, rnumnonpx, cssExpand, isHidden, - getStyles, curCSS, defaultDisplay, addGetHookIf, support, data_priv ) { - -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(); - } - }); - } -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/css/addGetHookIf.js b/elgg_clean/bower_components/jquery/src/css/addGetHookIf.js deleted file mode 100644 index e12f3598..00000000 --- a/elgg_clean/bower_components/jquery/src/css/addGetHookIf.js +++ /dev/null @@ -1,22 +0,0 @@ -define(function() { - -function addGetHookIf( conditionFn, hookFn ) { - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return (this.get = hookFn).apply( this, arguments ); - } - }; -} - -return addGetHookIf; - -}); diff --git a/elgg_clean/bower_components/jquery/src/css/curCSS.js b/elgg_clean/bower_components/jquery/src/css/curCSS.js deleted file mode 100644 index 90e508cb..00000000 --- a/elgg_clean/bower_components/jquery/src/css/curCSS.js +++ /dev/null @@ -1,57 +0,0 @@ -define([ - "../core", - "./var/rnumnonpx", - "./var/rmargin", - "./var/getStyles", - "../selector" // contains -], function( jQuery, rnumnonpx, rmargin, getStyles ) { - -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; -} - -return curCSS; -}); diff --git a/elgg_clean/bower_components/jquery/src/css/defaultDisplay.js b/elgg_clean/bower_components/jquery/src/css/defaultDisplay.js deleted file mode 100644 index 046ae91b..00000000 --- a/elgg_clean/bower_components/jquery/src/css/defaultDisplay.js +++ /dev/null @@ -1,70 +0,0 @@ -define([ - "../core", - "../manipulation" // appendTo -], function( jQuery ) { - -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; -} - -return defaultDisplay; - -}); diff --git a/elgg_clean/bower_components/jquery/src/css/hiddenVisibleSelectors.js b/elgg_clean/bower_components/jquery/src/css/hiddenVisibleSelectors.js deleted file mode 100644 index c7f1c7ee..00000000 --- a/elgg_clean/bower_components/jquery/src/css/hiddenVisibleSelectors.js +++ /dev/null @@ -1,15 +0,0 @@ -define([ - "../core", - "../selector" -], function( jQuery ) { - -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 ); -}; - -}); diff --git a/elgg_clean/bower_components/jquery/src/css/support.js b/elgg_clean/bower_components/jquery/src/css/support.js deleted file mode 100644 index b9eaf140..00000000 --- a/elgg_clean/bower_components/jquery/src/css/support.js +++ /dev/null @@ -1,96 +0,0 @@ -define([ - "../core", - "../var/support" -], function( jQuery, support ) { - -(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; - } - }); - } -})(); - -return support; - -}); diff --git a/elgg_clean/bower_components/jquery/src/css/swap.js b/elgg_clean/bower_components/jquery/src/css/swap.js deleted file mode 100644 index ce164353..00000000 --- a/elgg_clean/bower_components/jquery/src/css/swap.js +++ /dev/null @@ -1,28 +0,0 @@ -define([ - "../core" -], function( jQuery ) { - -// 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; -}; - -return jQuery.swap; - -}); diff --git a/elgg_clean/bower_components/jquery/src/css/var/cssExpand.js b/elgg_clean/bower_components/jquery/src/css/var/cssExpand.js deleted file mode 100644 index 91e90a88..00000000 --- a/elgg_clean/bower_components/jquery/src/css/var/cssExpand.js +++ /dev/null @@ -1,3 +0,0 @@ -define(function() { - return [ "Top", "Right", "Bottom", "Left" ]; -}); diff --git a/elgg_clean/bower_components/jquery/src/css/var/getStyles.js b/elgg_clean/bower_components/jquery/src/css/var/getStyles.js deleted file mode 100644 index 413acd04..00000000 --- a/elgg_clean/bower_components/jquery/src/css/var/getStyles.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function() { - return 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 ); - }; -}); diff --git a/elgg_clean/bower_components/jquery/src/css/var/isHidden.js b/elgg_clean/bower_components/jquery/src/css/var/isHidden.js deleted file mode 100644 index 15ab81a9..00000000 --- a/elgg_clean/bower_components/jquery/src/css/var/isHidden.js +++ /dev/null @@ -1,13 +0,0 @@ -define([ - "../../core", - "../../selector" - // css is assumed -], function( jQuery ) { - - return 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 ); - }; -}); diff --git a/elgg_clean/bower_components/jquery/src/css/var/rmargin.js b/elgg_clean/bower_components/jquery/src/css/var/rmargin.js deleted file mode 100644 index da0438db..00000000 --- a/elgg_clean/bower_components/jquery/src/css/var/rmargin.js +++ /dev/null @@ -1,3 +0,0 @@ -define(function() { - return (/^margin/); -}); diff --git a/elgg_clean/bower_components/jquery/src/css/var/rnumnonpx.js b/elgg_clean/bower_components/jquery/src/css/var/rnumnonpx.js deleted file mode 100644 index c93be285..00000000 --- a/elgg_clean/bower_components/jquery/src/css/var/rnumnonpx.js +++ /dev/null @@ -1,5 +0,0 @@ -define([ - "../../var/pnum" -], function( pnum ) { - return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); -}); diff --git a/elgg_clean/bower_components/jquery/src/data.js b/elgg_clean/bower_components/jquery/src/data.js deleted file mode 100644 index f9af9ae6..00000000 --- a/elgg_clean/bower_components/jquery/src/data.js +++ /dev/null @@ -1,178 +0,0 @@ -define([ - "./core", - "./var/rnotwhite", - "./core/access", - "./data/var/data_priv", - "./data/var/data_user" -], function( jQuery, rnotwhite, access, data_priv, data_user ) { - -// 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 ); - }); - } -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/deferred.js b/elgg_clean/bower_components/jquery/src/deferred.js deleted file mode 100644 index 98f9c313..00000000 --- a/elgg_clean/bower_components/jquery/src/deferred.js +++ /dev/null @@ -1,149 +0,0 @@ -define([ - "./core", - "./var/slice", - "./callbacks" -], function( jQuery, slice ) { - -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(); - } -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/deprecated.js b/elgg_clean/bower_components/jquery/src/deprecated.js deleted file mode 100644 index 1b068bc3..00000000 --- a/elgg_clean/bower_components/jquery/src/deprecated.js +++ /dev/null @@ -1,13 +0,0 @@ -define([ - "./core", - "./traversing" -], function( jQuery ) { - -// The number of elements contained in the matched element set -jQuery.fn.size = function() { - return this.length; -}; - -jQuery.fn.andSelf = jQuery.fn.addBack; - -}); diff --git a/elgg_clean/bower_components/jquery/src/dimensions.js b/elgg_clean/bower_components/jquery/src/dimensions.js deleted file mode 100644 index e6cb04c0..00000000 --- a/elgg_clean/bower_components/jquery/src/dimensions.js +++ /dev/null @@ -1,50 +0,0 @@ -define([ - "./core", - "./core/access", - "./css" -], function( jQuery, access ) { - -// 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 ); - }; - }); -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/effects.js b/elgg_clean/bower_components/jquery/src/effects.js deleted file mode 100644 index 90226bd4..00000000 --- a/elgg_clean/bower_components/jquery/src/effects.js +++ /dev/null @@ -1,648 +0,0 @@ -define([ - "./core", - "./var/pnum", - "./css/var/cssExpand", - "./css/var/isHidden", - "./css/defaultDisplay", - "./data/var/data_priv", - - "./core/init", - "./effects/Tween", - "./queue", - "./css", - "./deferred", - "./traversing" -], function( jQuery, pnum, cssExpand, isHidden, defaultDisplay, data_priv ) { - -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 -}; - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/effects/Tween.js b/elgg_clean/bower_components/jquery/src/effects/Tween.js deleted file mode 100644 index 9acd8d0c..00000000 --- a/elgg_clean/bower_components/jquery/src/effects/Tween.js +++ /dev/null @@ -1,114 +0,0 @@ -define([ - "../core", - "../css" -], function( jQuery ) { - -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 = {}; - -}); diff --git a/elgg_clean/bower_components/jquery/src/effects/animatedSelector.js b/elgg_clean/bower_components/jquery/src/effects/animatedSelector.js deleted file mode 100644 index bc5a3d6c..00000000 --- a/elgg_clean/bower_components/jquery/src/effects/animatedSelector.js +++ /dev/null @@ -1,13 +0,0 @@ -define([ - "../core", - "../selector", - "../effects" -], function( jQuery ) { - -jQuery.expr.filters.animated = function( elem ) { - return jQuery.grep(jQuery.timers, function( fn ) { - return elem === fn.elem; - }).length; -}; - -}); diff --git a/elgg_clean/bower_components/jquery/src/event.js b/elgg_clean/bower_components/jquery/src/event.js deleted file mode 100644 index 8f04b89c..00000000 --- a/elgg_clean/bower_components/jquery/src/event.js +++ /dev/null @@ -1,868 +0,0 @@ -define([ - "./core", - "./var/strundefined", - "./var/rnotwhite", - "./var/hasOwn", - "./var/slice", - "./event/support", - "./data/var/data_priv", - - "./core/init", - "./data/accepts", - "./selector" -], function( jQuery, strundefined, rnotwhite, hasOwn, slice, support, data_priv ) { - -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 ); - } - } -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/event/ajax.js b/elgg_clean/bower_components/jquery/src/event/ajax.js deleted file mode 100644 index 278c403e..00000000 --- a/elgg_clean/bower_components/jquery/src/event/ajax.js +++ /dev/null @@ -1,13 +0,0 @@ -define([ - "../core", - "../event" -], function( jQuery ) { - -// Attach a bunch of functions for handling common AJAX events -jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) { - jQuery.fn[ type ] = function( fn ) { - return this.on( type, fn ); - }; -}); - -}); diff --git a/elgg_clean/bower_components/jquery/src/event/alias.js b/elgg_clean/bower_components/jquery/src/event/alias.js deleted file mode 100644 index 7e791750..00000000 --- a/elgg_clean/bower_components/jquery/src/event/alias.js +++ /dev/null @@ -1,39 +0,0 @@ -define([ - "../core", - "../event" -], function( jQuery ) { - -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 ); - } -}); - -}); diff --git a/elgg_clean/bower_components/jquery/src/event/support.js b/elgg_clean/bower_components/jquery/src/event/support.js deleted file mode 100644 index 85060db7..00000000 --- a/elgg_clean/bower_components/jquery/src/event/support.js +++ /dev/null @@ -1,9 +0,0 @@ -define([ - "../var/support" -], function( support ) { - -support.focusinBubbles = "onfocusin" in window; - -return support; - -}); diff --git a/elgg_clean/bower_components/jquery/src/exports/amd.js b/elgg_clean/bower_components/jquery/src/exports/amd.js deleted file mode 100644 index 9a9846f9..00000000 --- a/elgg_clean/bower_components/jquery/src/exports/amd.js +++ /dev/null @@ -1,24 +0,0 @@ -define([ - "../core" -], function( jQuery ) { - -// Register as a named AMD module, since jQuery can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase jquery is used because AMD module names are -// derived from file names, and jQuery is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of jQuery, it will work. - -// Note that for maximum portability, libraries that are not jQuery should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. jQuery is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - -if ( typeof define === "function" && define.amd ) { - define( "jquery", [], function() { - return jQuery; - }); -} - -}); diff --git a/elgg_clean/bower_components/jquery/src/exports/global.js b/elgg_clean/bower_components/jquery/src/exports/global.js deleted file mode 100644 index 6513287c..00000000 --- a/elgg_clean/bower_components/jquery/src/exports/global.js +++ /dev/null @@ -1,32 +0,0 @@ -define([ - "../core", - "../var/strundefined" -], function( jQuery, strundefined ) { - -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; -} - -}); diff --git a/elgg_clean/bower_components/jquery/src/intro.js b/elgg_clean/bower_components/jquery/src/intro.js deleted file mode 100644 index d7d43680..00000000 --- a/elgg_clean/bower_components/jquery/src/intro.js +++ /dev/null @@ -1,44 +0,0 @@ -/*! - * jQuery JavaScript Library v@VERSION - * 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: @DATE - */ - -(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) -//"use strict"; diff --git a/elgg_clean/bower_components/jquery/src/jquery.js b/elgg_clean/bower_components/jquery/src/jquery.js deleted file mode 100644 index d3857e95..00000000 --- a/elgg_clean/bower_components/jquery/src/jquery.js +++ /dev/null @@ -1,37 +0,0 @@ -define([ - "./core", - "./selector", - "./traversing", - "./callbacks", - "./deferred", - "./core/ready", - "./data", - "./queue", - "./queue/delay", - "./attributes", - "./event", - "./event/alias", - "./manipulation", - "./manipulation/_evalUrl", - "./wrap", - "./css", - "./css/hiddenVisibleSelectors", - "./serialize", - "./ajax", - "./ajax/xhr", - "./ajax/script", - "./ajax/jsonp", - "./ajax/load", - "./event/ajax", - "./effects", - "./effects/animatedSelector", - "./offset", - "./dimensions", - "./deprecated", - "./exports/amd", - "./exports/global" -], function( jQuery ) { - -return jQuery; - -}); diff --git a/elgg_clean/bower_components/jquery/src/manipulation.js b/elgg_clean/bower_components/jquery/src/manipulation.js deleted file mode 100644 index c6279626..00000000 --- a/elgg_clean/bower_components/jquery/src/manipulation.js +++ /dev/null @@ -1,580 +0,0 @@ -define([ - "./core", - "./var/concat", - "./var/push", - "./core/access", - "./manipulation/var/rcheckableType", - "./manipulation/support", - "./data/var/data_priv", - "./data/var/data_user", - - "./core/init", - "./data/accepts", - "./traversing", - "./selector", - "./event" -], function( jQuery, concat, push, access, rcheckableType, support, data_priv, data_user ) { - -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 ); - }; -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/manipulation/_evalUrl.js b/elgg_clean/bower_components/jquery/src/manipulation/_evalUrl.js deleted file mode 100644 index 6704749a..00000000 --- a/elgg_clean/bower_components/jquery/src/manipulation/_evalUrl.js +++ /dev/null @@ -1,18 +0,0 @@ -define([ - "../ajax" -], function( jQuery ) { - -jQuery._evalUrl = function( url ) { - return jQuery.ajax({ - url: url, - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - }); -}; - -return jQuery._evalUrl; - -}); diff --git a/elgg_clean/bower_components/jquery/src/manipulation/support.js b/elgg_clean/bower_components/jquery/src/manipulation/support.js deleted file mode 100644 index 822a014f..00000000 --- a/elgg_clean/bower_components/jquery/src/manipulation/support.js +++ /dev/null @@ -1,32 +0,0 @@ -define([ - "../var/support" -], function( support ) { - -(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; -})(); - -return support; - -}); diff --git a/elgg_clean/bower_components/jquery/src/manipulation/var/rcheckableType.js b/elgg_clean/bower_components/jquery/src/manipulation/var/rcheckableType.js deleted file mode 100644 index c27a15dc..00000000 --- a/elgg_clean/bower_components/jquery/src/manipulation/var/rcheckableType.js +++ /dev/null @@ -1,3 +0,0 @@ -define(function() { - return (/^(?:checkbox|radio)$/i); -}); diff --git a/elgg_clean/bower_components/jquery/src/offset.js b/elgg_clean/bower_components/jquery/src/offset.js deleted file mode 100644 index 4c34fd0e..00000000 --- a/elgg_clean/bower_components/jquery/src/offset.js +++ /dev/null @@ -1,207 +0,0 @@ -define([ - "./core", - "./var/strundefined", - "./core/access", - "./css/var/rnumnonpx", - "./css/curCSS", - "./css/addGetHookIf", - "./css/support", - - "./core/init", - "./css", - "./selector" // contains -], function( jQuery, strundefined, access, rnumnonpx, curCSS, addGetHookIf, support ) { - -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; - } - } - ); -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/outro.js b/elgg_clean/bower_components/jquery/src/outro.js deleted file mode 100644 index be4600a5..00000000 --- a/elgg_clean/bower_components/jquery/src/outro.js +++ /dev/null @@ -1 +0,0 @@ -})); diff --git a/elgg_clean/bower_components/jquery/src/queue.js b/elgg_clean/bower_components/jquery/src/queue.js deleted file mode 100644 index 199c56d3..00000000 --- a/elgg_clean/bower_components/jquery/src/queue.js +++ /dev/null @@ -1,142 +0,0 @@ -define([ - "./core", - "./data/var/data_priv", - "./deferred", - "./callbacks" -], function( jQuery, data_priv ) { - -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 ); - } -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/queue/delay.js b/elgg_clean/bower_components/jquery/src/queue/delay.js deleted file mode 100644 index 4b4498ce..00000000 --- a/elgg_clean/bower_components/jquery/src/queue/delay.js +++ /dev/null @@ -1,22 +0,0 @@ -define([ - "../core", - "../queue", - "../effects" // Delay is optional because of this dependency -], function( jQuery ) { - -// 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 ); - }; - }); -}; - -return jQuery.fn.delay; -}); diff --git a/elgg_clean/bower_components/jquery/src/selector-native.js b/elgg_clean/bower_components/jquery/src/selector-native.js deleted file mode 100644 index d8163c2f..00000000 --- a/elgg_clean/bower_components/jquery/src/selector-native.js +++ /dev/null @@ -1,172 +0,0 @@ -define([ - "./core" -], function( jQuery ) { - -/* - * Optional (non-Sizzle) selector module for custom builds. - * - * Note that this DOES NOT SUPPORT many documented jQuery - * features in exchange for its smaller size: - * - * Attribute not equal selector - * Positional selectors (:first; :eq(n); :odd; etc.) - * Type selectors (:input; :checkbox; :button; etc.) - * State-based selectors (:animated; :visible; :hidden; etc.) - * :has(selector) - * :not(complex selector) - * custom selectors via Sizzle extensions - * Leading combinators (e.g., $collection.find("> *")) - * Reliable functionality on XML fragments - * Requiring all parts of a selector to match elements under context - * (e.g., $div.find("div > *") now matches children of $div) - * Matching against non-elements - * Reliable sorting of disconnected nodes - * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit) - * - * If any of these are unacceptable tradeoffs, either use Sizzle or - * customize this stub for the project's specific needs. - */ - -var docElem = window.document.documentElement, - selector_hasDuplicate, - matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector, - selector_sortOrder = function( a, b ) { - // Flag for duplicate removal - if ( a === b ) { - selector_hasDuplicate = true; - return 0; - } - - var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); - - if ( compare ) { - // Disconnected nodes - if ( compare & 1 ) { - - // Choose the first element that is related to our document - if ( a === document || jQuery.contains(document, a) ) { - return -1; - } - if ( b === document || jQuery.contains(document, b) ) { - return 1; - } - - // Maintain original order - return 0; - } - - return compare & 4 ? -1 : 1; - } - - // Not directly comparable, sort on existence of method - return a.compareDocumentPosition ? -1 : 1; - }; - -jQuery.extend({ - find: function( selector, context, results, seed ) { - var elem, nodeType, - i = 0; - - results = results || []; - context = context || document; - - // Same basic safeguard as Sizzle - if ( !selector || typeof selector !== "string" ) { - return results; - } - - // Early return if context is not an element or document - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { - return []; - } - - if ( seed ) { - while ( (elem = seed[i++]) ) { - if ( jQuery.find.matchesSelector(elem, selector) ) { - results.push( elem ); - } - } - } else { - jQuery.merge( results, context.querySelectorAll(selector) ); - } - - return results; - }, - unique: function( results ) { - var elem, - duplicates = [], - i = 0, - j = 0; - - selector_hasDuplicate = false; - results.sort( selector_sortOrder ); - - if ( selector_hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - return results; - }, - text: function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += jQuery.text( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - return elem.textContent; - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; - }, - contains: function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && adown.contains(bup) ); - }, - isXMLDoc: function( elem ) { - return (elem.ownerDocument || elem).documentElement.nodeName !== "HTML"; - }, - expr: { - attrHandle: {}, - match: { - bool: /^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i, - needsContext: /^[\x20\t\r\n\f]*[>+~]/ - } - } -}); - -jQuery.extend( jQuery.find, { - matches: function( expr, elements ) { - return jQuery.find( expr, null, null, elements ); - }, - matchesSelector: function( elem, expr ) { - return matches.call( elem, expr ); - }, - attr: function( elem, name ) { - return elem.getAttribute( name ); - } -}); - -}); diff --git a/elgg_clean/bower_components/jquery/src/selector-sizzle.js b/elgg_clean/bower_components/jquery/src/selector-sizzle.js deleted file mode 100644 index 7d3926b1..00000000 --- a/elgg_clean/bower_components/jquery/src/selector-sizzle.js +++ /dev/null @@ -1,14 +0,0 @@ -define([ - "./core", - "sizzle" -], function( jQuery, Sizzle ) { - -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; - -}); diff --git a/elgg_clean/bower_components/jquery/src/selector.js b/elgg_clean/bower_components/jquery/src/selector.js deleted file mode 100644 index 01e9733b..00000000 --- a/elgg_clean/bower_components/jquery/src/selector.js +++ /dev/null @@ -1 +0,0 @@ -define([ "./selector-sizzle" ]); diff --git a/elgg_clean/bower_components/jquery/src/serialize.js b/elgg_clean/bower_components/jquery/src/serialize.js deleted file mode 100644 index 0d6dfec6..00000000 --- a/elgg_clean/bower_components/jquery/src/serialize.js +++ /dev/null @@ -1,111 +0,0 @@ -define([ - "./core", - "./manipulation/var/rcheckableType", - "./core/init", - "./traversing", // filter - "./attributes/prop" -], function( jQuery, rcheckableType ) { - -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(); - } -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.js b/elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.js deleted file mode 100644 index 89aecbc2..00000000 --- a/elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.js +++ /dev/null @@ -1,2067 +0,0 @@ -/*! - * 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; - } - }); -} - -// EXPOSE -if ( typeof define === "function" && define.amd ) { - define(function() { return Sizzle; }); -// Sizzle requires that there be a global window in Common-JS like environments -} else if ( typeof module !== "undefined" && module.exports ) { - module.exports = Sizzle; -} else { - window.Sizzle = Sizzle; -} -// EXPOSE - -})( window ); diff --git a/elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.min.js b/elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.min.js deleted file mode 100644 index cf4d1a66..00000000 --- a/elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Sizzle v2.2.0-pre | (c) 2008, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),"function"==typeof define&&define.amd?define(function(){return gb}):"undefined"!=typeof module&&module.exports?module.exports=gb:a.Sizzle=gb}(window); -//# sourceMappingURL=sizzle.min.map \ No newline at end of file diff --git a/elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.min.map b/elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.min.map deleted file mode 100644 index e39754eb..00000000 --- a/elgg_clean/bower_components/jquery/src/sizzle/dist/sizzle.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sizzle.min.js","sources":["sizzle.js"],"names":["window","i","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","expando","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","hasOwn","hasOwnProperty","arr","pop","push_native","push","slice","indexOf","list","elem","len","length","booleans","whitespace","characterEncoding","identifier","replace","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","apply","call","childNodes","nodeType","e","target","els","j","Sizzle","selector","context","results","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","parentNode","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","toLowerCase","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","value","cacheLength","shift","markFunction","fn","assert","div","createElement","removeChild","addHandle","attrs","handler","split","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","type","name","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","ret","attr","val","undefined","specified","error","msg","Error","uniqueSort","duplicates","detectDuplicates","sortStable","sort","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","last","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","eq","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","prototype","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","concat","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","div1","defaultValue","define","amd","module","exports"],"mappings":"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"} \ No newline at end of file diff --git a/elgg_clean/bower_components/jquery/src/traversing.js b/elgg_clean/bower_components/jquery/src/traversing.js deleted file mode 100644 index d9ff0aea..00000000 --- a/elgg_clean/bower_components/jquery/src/traversing.js +++ /dev/null @@ -1,199 +0,0 @@ -define([ - "./core", - "./var/indexOf", - "./traversing/var/rneedsContext", - "./core/init", - "./traversing/findFilter", - "./selector" -], function( jQuery, indexOf, rneedsContext ) { - -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 ); - }; -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/jquery/src/traversing/findFilter.js b/elgg_clean/bower_components/jquery/src/traversing/findFilter.js deleted file mode 100644 index dd70a73f..00000000 --- a/elgg_clean/bower_components/jquery/src/traversing/findFilter.js +++ /dev/null @@ -1,100 +0,0 @@ -define([ - "../core", - "../var/indexOf", - "./var/rneedsContext", - "../selector" -], function( jQuery, indexOf, rneedsContext ) { - -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; - } -}); - -}); diff --git a/elgg_clean/bower_components/jquery/src/traversing/var/rneedsContext.js b/elgg_clean/bower_components/jquery/src/traversing/var/rneedsContext.js deleted file mode 100644 index 3d6ae403..00000000 --- a/elgg_clean/bower_components/jquery/src/traversing/var/rneedsContext.js +++ /dev/null @@ -1,6 +0,0 @@ -define([ - "../../core", - "../../selector" -], function( jQuery ) { - return jQuery.expr.match.needsContext; -}); diff --git a/elgg_clean/bower_components/jquery/src/var/arr.js b/elgg_clean/bower_components/jquery/src/var/arr.js deleted file mode 100644 index b18fc9ce..00000000 --- a/elgg_clean/bower_components/jquery/src/var/arr.js +++ /dev/null @@ -1,3 +0,0 @@ -define(function() { - return []; -}); diff --git a/elgg_clean/bower_components/jquery/src/var/class2type.js b/elgg_clean/bower_components/jquery/src/var/class2type.js deleted file mode 100644 index e674c3ba..00000000 --- a/elgg_clean/bower_components/jquery/src/var/class2type.js +++ /dev/null @@ -1,4 +0,0 @@ -define(function() { - // [[Class]] -> type pairs - return {}; -}); diff --git a/elgg_clean/bower_components/jquery/src/var/concat.js b/elgg_clean/bower_components/jquery/src/var/concat.js deleted file mode 100644 index 7dcf77e3..00000000 --- a/elgg_clean/bower_components/jquery/src/var/concat.js +++ /dev/null @@ -1,5 +0,0 @@ -define([ - "./arr" -], function( arr ) { - return arr.concat; -}); diff --git a/elgg_clean/bower_components/jquery/src/var/hasOwn.js b/elgg_clean/bower_components/jquery/src/var/hasOwn.js deleted file mode 100644 index 32c002af..00000000 --- a/elgg_clean/bower_components/jquery/src/var/hasOwn.js +++ /dev/null @@ -1,5 +0,0 @@ -define([ - "./class2type" -], function( class2type ) { - return class2type.hasOwnProperty; -}); diff --git a/elgg_clean/bower_components/jquery/src/var/indexOf.js b/elgg_clean/bower_components/jquery/src/var/indexOf.js deleted file mode 100644 index cdbe3c74..00000000 --- a/elgg_clean/bower_components/jquery/src/var/indexOf.js +++ /dev/null @@ -1,5 +0,0 @@ -define([ - "./arr" -], function( arr ) { - return arr.indexOf; -}); diff --git a/elgg_clean/bower_components/jquery/src/var/pnum.js b/elgg_clean/bower_components/jquery/src/var/pnum.js deleted file mode 100644 index 40704472..00000000 --- a/elgg_clean/bower_components/jquery/src/var/pnum.js +++ /dev/null @@ -1,3 +0,0 @@ -define(function() { - return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; -}); diff --git a/elgg_clean/bower_components/jquery/src/var/push.js b/elgg_clean/bower_components/jquery/src/var/push.js deleted file mode 100644 index ad6f0a17..00000000 --- a/elgg_clean/bower_components/jquery/src/var/push.js +++ /dev/null @@ -1,5 +0,0 @@ -define([ - "./arr" -], function( arr ) { - return arr.push; -}); diff --git a/elgg_clean/bower_components/jquery/src/var/rnotwhite.js b/elgg_clean/bower_components/jquery/src/var/rnotwhite.js deleted file mode 100644 index 7c69bec5..00000000 --- a/elgg_clean/bower_components/jquery/src/var/rnotwhite.js +++ /dev/null @@ -1,3 +0,0 @@ -define(function() { - return (/\S+/g); -}); diff --git a/elgg_clean/bower_components/jquery/src/var/slice.js b/elgg_clean/bower_components/jquery/src/var/slice.js deleted file mode 100644 index 614d46ca..00000000 --- a/elgg_clean/bower_components/jquery/src/var/slice.js +++ /dev/null @@ -1,5 +0,0 @@ -define([ - "./arr" -], function( arr ) { - return arr.slice; -}); diff --git a/elgg_clean/bower_components/jquery/src/var/strundefined.js b/elgg_clean/bower_components/jquery/src/var/strundefined.js deleted file mode 100644 index 04e16b03..00000000 --- a/elgg_clean/bower_components/jquery/src/var/strundefined.js +++ /dev/null @@ -1,3 +0,0 @@ -define(function() { - return typeof undefined; -}); diff --git a/elgg_clean/bower_components/jquery/src/var/support.js b/elgg_clean/bower_components/jquery/src/var/support.js deleted file mode 100644 index b25dbc74..00000000 --- a/elgg_clean/bower_components/jquery/src/var/support.js +++ /dev/null @@ -1,4 +0,0 @@ -define(function() { - // All support tests are defined in their respective modules. - return {}; -}); diff --git a/elgg_clean/bower_components/jquery/src/var/toString.js b/elgg_clean/bower_components/jquery/src/var/toString.js deleted file mode 100644 index ca92d222..00000000 --- a/elgg_clean/bower_components/jquery/src/var/toString.js +++ /dev/null @@ -1,5 +0,0 @@ -define([ - "./class2type" -], function( class2type ) { - return class2type.toString; -}); diff --git a/elgg_clean/bower_components/jquery/src/wrap.js b/elgg_clean/bower_components/jquery/src/wrap.js deleted file mode 100644 index 4958251d..00000000 --- a/elgg_clean/bower_components/jquery/src/wrap.js +++ /dev/null @@ -1,79 +0,0 @@ -define([ - "./core", - "./core/init", - "./manipulation", // clone - "./traversing" // parent, contents -], function( jQuery ) { - -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(); - } -}); - -return jQuery; -}); diff --git a/elgg_clean/bower_components/moment/.bower.json b/elgg_clean/bower_components/moment/.bower.json deleted file mode 100644 index 779e571c..00000000 --- a/elgg_clean/bower_components/moment/.bower.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "moment", - "main": "moment.js", - "ignore": [ - "**/.*", - "benchmarks", - "bower_components", - "meteor", - "node_modules", - "scripts", - "tasks", - "test", - "component.json", - "composer.json", - "CONTRIBUTING.md", - "ender.js", - "Gruntfile.js", - "Moment.js.nuspec", - "package.js", - "package.json" - ], - "homepage": "https://github.com/moment/moment", - "version": "2.10.6", - "_release": "2.10.6", - "_resolution": { - "type": "version", - "tag": "2.10.6", - "commit": "446ce77eb08c5c862d7b0b11ef1d2e884d12e3d7" - }, - "_source": "git://github.com/moment/moment.git", - "_target": "^2.10.6", - "_originalSource": "moment" -} \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/CHANGELOG.md b/elgg_clean/bower_components/moment/CHANGELOG.md deleted file mode 100644 index 7da0b1fc..00000000 --- a/elgg_clean/bower_components/moment/CHANGELOG.md +++ /dev/null @@ -1,459 +0,0 @@ -Changelog -========= - -### 2.10.6 - -[#2515](https://github.com/moment/moment/pull/2515) Fix regression introduced -in `2.10.5` related to `moment.ISO_8601` parsing. - -### 2.10.5 [See full changelog](https://gist.github.com/ichernev/6ec13ac7efc396da44b2) - -Important changes: -* [#2357](https://github.com/moment/moment/pull/2357) Improve unit bubbling for ISO dates - this fixes day to year conversions to work around end-of-year (~365 days). As - a side effect 365 days is 11 months and 30 days, and 366 days is one year. -* [#2438](https://github.com/moment/moment/pull/2438) Fix inconsistent moment.min and moment.max results - Return invalid result if any of the inputs is invalid -* [#2494](https://github.com/moment/moment/pull/2494) Fix two digit year parsing with YYYY format - This brings the benefits of YY to YYYY -* [#2368](https://github.com/moment/moment/pull/2368) perf: use faster form of copying dates, across the board improvement - - -### 2.10.3 [See full changelog](https://gist.github.com/ichernev/f264b9bed5b00f8b1b7f) - -* add `moment.fn.to` and `moment.fn.toNow` (similar to `from` and `fromNow`) -* new locales (Sinhalese (si), Montenegrin (me), Javanese (ja)) -* performance improvements - -### 2.10.2 - -* fixed moment-with-locales in browser env caused by esperanto change - -### 2.10.1 - -* regression: Add moment.duration.fn back - -### 2.10.0 - -Ported code to es6 modules. - -### 2.9.0 [See full changelog](https://gist.github.com/ichernev/0c9a9b49951111a27ce7) - -languages: -* [2104](https://github.com/moment/moment/issues/2104) Frisian (fy) language file with unit test -* [2097](https://github.com/moment/moment/issues/2097) add ar-tn locale - -deprecations: -* [2074](https://github.com/moment/moment/issues/2074) Implement `moment.fn.utcOffset`, deprecate `momen.fn.zone` - -features: -* [2088](https://github.com/moment/moment/issues/2088) add moment.fn.isBetween -* [2054](https://github.com/moment/moment/issues/2054) Call updateOffset when creating moment (needed for default timezone in - moment-timezone) -* [1893](https://github.com/moment/moment/issues/1893) Add moment.isDate method -* [1825](https://github.com/moment/moment/issues/1825) Implement toJSON function on Duration -* [1809](https://github.com/moment/moment/issues/1809) Allowing moment.set() to accept a hash of units -* [2128](https://github.com/moment/moment/issues/2128) Add firstDayOfWeek, firstDayOfYear locale getters -* [2131](https://github.com/moment/moment/issues/2131) Add quarter diff support - -Some bugfixes and language improvements -- [full changelog](https://gist.github.com/ichernev/0c9a9b49951111a27ce7) - -### 2.8.4 [See full changelog](https://gist.github.com/ichernev/a4fcb0a46d74e4b9b996) - -Features: - -* [#2000](https://github.com/moment/moment/issues/2000) Add LTS localised format that includes seconds -* [#1960](https://github.com/moment/moment/issues/1960) added formatToken 'x' for unix offset in milliseconds #1938 -* [#1965](https://github.com/moment/moment/issues/1965) Support 24:00:00.000 to mean next day, at midnight. -* [#2002](https://github.com/moment/moment/issues/2002) Accept 'date' key when creating moment with object -* [#2009](https://github.com/moment/moment/issues/2009) Use native toISOString when we can - -Some bugfixes and language improvements -- [full changelog](https://gist.github.com/ichernev/a4fcb0a46d74e4b9b996) - -### 2.8.3 - -Bugfixes: - -* [#1801](https://github.com/moment/moment/issues/1801) proper pluralization for Arabic -* [#1833](https://github.com/moment/moment/issues/1833) improve spm integration -* [#1871](https://github.com/moment/moment/issues/1871) fix zone bug caused by Firefox 24 -* [#1882](https://github.com/moment/moment/issues/1882) Use hh:mm in Czech -* [#1883](https://github.com/moment/moment/issues/1883) Fix 2.8.0 regression in duration as conversions -* [#1890](https://github.com/moment/moment/issues/1890) Faster travis builds -* [#1892](https://github.com/moment/moment/issues/1892) Faster isBefore/After/Same -* [#1848](https://github.com/moment/moment/issues/1848) Fix flaky month diffs -* [#1895](https://github.com/moment/moment/issues/1895) Fix 2.8.0 regression in moment.utc with format array -* [#1896](https://github.com/moment/moment/issues/1896) Support setting invalid instance locale (noop) -* [#1897](https://github.com/moment/moment/issues/1897) Support moment([str]) in addition to moment([int]) - -### 2.8.2 - -Minor bugfixes: - -* [#1874](https://github.com/moment/moment/issues/1874) use `Object.prototype.hasOwnProperty` - instead of `obj.hasOwnProperty` (ie8 bug) -* [#1873](https://github.com/moment/moment/issues/1873) add `duration#toString()` -* [#1859](https://github.com/moment/moment/issues/1859) better month/weekday names in norwegian -* [#1812](https://github.com/moment/moment/issues/1812) meridiem parsing for greek -* [#1804](https://github.com/moment/moment/issues/1804) spanish del -> de -* [#1800](https://github.com/moment/moment/issues/1800) korean LT improvement - -### 2.8.1 - -* bugfix [#1813](https://github.com/moment/moment/issues/1813): fix moment().lang([key]) incompatibility - -### 2.8.0 [See changelog](https://gist.github.com/ichernev/ac3899324a5fa6c8c9b4) - -* incompatible changes - * [#1761](https://github.com/moment/moment/issues/1761): moments created without a language are no longer following the global language, in case it changes. Only newly created moments take the global language by default. In case you're affected by this, wait, comment on [#1797](https://github.com/moment/moment/issues/1797) and wait for a proper reimplementation - * [#1642](https://github.com/moment/moment/issues/1642): 45 days is no longer "a month" according to humanize, cutoffs for month, and year have changed. Hopefully your code does not depend on a particular answer from humanize (which it shouldn't anyway) - * [#1784](https://github.com/moment/moment/issues/1784): if you use the human readable English datetime format in a weird way (like storing them in a database) that would break when the format changes you're at risk. - -* deprecations (old behavior will be dropped in 3.0) - * [#1761](https://github.com/moment/moment/issues/1761) `lang` is renamed to `locale`, `langData` -> `localeData`. Also there is now `defineLocale` that should be used when creating new locales - * [#1763](https://github.com/moment/moment/issues/1763) `add(unit, value)` and `subtract(unit, value)` are now deprecated. Use `add(value, unit)` and `subtract(value, unit)` instead. - * [#1759](https://github.com/moment/moment/issues/1759) rename `duration.toIsoString` to `duration.toISOString`. The js standard library and moment's `toISOString` follow that convention. - -* new locales - * [#1789](https://github.com/moment/moment/issues/1789) Tibetan (bo) - * [#1786](https://github.com/moment/moment/issues/1786) Africaans (af) - * [#1778](https://github.com/moment/moment/issues/1778) Burmese (my) - * [#1727](https://github.com/moment/moment/issues/1727) Belarusian (be) - -* bugfixes, locale bugfixes, performance improvements, features - -### 2.7.0 [See changelog](https://gist.github.com/ichernev/b0a3d456d5a84c9901d7) - -* new languages - - * [#1678](https://github.com/moment/moment/issues/1678) Bengali (bn) - * [#1628](https://github.com/moment/moment/issues/1628) Azerbaijani (az) - * [#1633](https://github.com/moment/moment/issues/1633) Arabic, Saudi Arabia (ar-sa) - * [#1648](https://github.com/moment/moment/issues/1648) Austrian German (de-at) - -* features - - * [#1663](https://github.com/moment/moment/issues/1663) configurable relative time thresholds - * [#1554](https://github.com/moment/moment/issues/1554) support anchor time in moment.calendar - * [#1693](https://github.com/moment/moment/issues/1693) support moment.ISO_8601 as parsing format - * [#1637](https://github.com/moment/moment/issues/1637) add moment.min and moment.max and deprecate min/max instance methods - * [#1704](https://github.com/moment/moment/issues/1704) support string value in add/subtract - * [#1647](https://github.com/moment/moment/issues/1647) add spm support (package manager) - -* bugfixes - -### 2.6.0 [See changelog](https://gist.github.com/ichernev/10544682) - -* languages - * [#1529](https://github.com/moment/moment/issues/1529) Serbian-Cyrillic (sr-cyr) - * [#1544](https://github.com/moment/moment/issues/1544), [#1546](https://github.com/moment/moment/issues/1546) Khmer Cambodia (km) - -* features - * [#1419](https://github.com/moment/moment/issues/1419), [#1468](https://github.com/moment/moment/issues/1468), [#1467](https://github.com/moment/moment/issues/1467), [#1546](https://github.com/moment/moment/issues/1546) better handling of timezone-d moments around DST - * [#1462](https://github.com/moment/moment/issues/1462) add weeksInYear and isoWeeksInYear - * [#1475](https://github.com/moment/moment/issues/1475) support ordinal parsing - * [#1499](https://github.com/moment/moment/issues/1499) composer support - * [#1577](https://github.com/moment/moment/issues/1577), [#1604](https://github.com/moment/moment/issues/1604) put Date parsing in moment.createFromInputFallback so it can be properly deprecated and controlled in the future - * [#1545](https://github.com/moment/moment/issues/1545) extract two-digit year parsing in moment.parseTwoDigitYear, so it can be overwritten - * [#1590](https://github.com/moment/moment/issues/1590) (see [#1574](https://github.com/moment/moment/issues/1574)) set AMD global before module definition to better support non AMD module dependencies used in AMD environment - * [#1589](https://github.com/moment/moment/issues/1589) remove global in Node.JS environment (was not working before, nobody complained, was scheduled for removal anyway) - * [#1586](https://github.com/moment/moment/issues/1586) support quarter setting and parsing - -* 18 bugs fixed - -### 2.5.1 - -* languages - * [#1392](https://github.com/moment/moment/issues/1392) Armenian (hy-am) - -* bugfixes - * [#1429](https://github.com/moment/moment/issues/1429) fixes [#1423](https://github.com/moment/moment/issues/1423) weird chrome-32 bug with js object creation - * [#1421](https://github.com/moment/moment/issues/1421) remove html entities from Welsh - * [#1418](https://github.com/moment/moment/issues/1418) fixes [#1401](https://github.com/moment/moment/issues/1401) improved non-padded tokens in strict matching - * [#1417](https://github.com/moment/moment/issues/1417) fixes [#1404](https://github.com/moment/moment/issues/1404) handle buggy moment object created by property cloning - * [#1398](https://github.com/moment/moment/issues/1398) fixes [#1397](https://github.com/moment/moment/issues/1397) fix Arabic-like week number parsing - * [#1396](https://github.com/moment/moment/issues/1396) add leftZeroFill(4) to GGGG and gggg formats - * [#1373](https://github.com/moment/moment/issues/1373) use lowercase for months and days in Catalan - -* testing - * [#1374](https://github.com/moment/moment/issues/1374) run tests on multiple browser/os combos via SauceLabs and Travis - -### 2.5.0 [See changelog](https://gist.github.com/ichernev/8104451) - -* New languages - * Luxemburish (lb) [1247](https://github.com/moment/moment/issues/1247) - * Serbian (rs) [1319](https://github.com/moment/moment/issues/1319) - * Tamil (ta) [1324](https://github.com/moment/moment/issues/1324) - * Macedonian (mk) [1337](https://github.com/moment/moment/issues/1337) - -* Features - * [1311](https://github.com/moment/moment/issues/1311) Add quarter getter and format token `Q` - * [1303](https://github.com/moment/moment/issues/1303) strict parsing now respects number of digits per token (fix [1196](https://github.com/moment/moment/issues/1196)) - * 0d30bb7 add jspm support - * [1347](https://github.com/moment/moment/issues/1347) improve zone parsing - * [1362](https://github.com/moment/moment/issues/1362) support merideam parsing in Korean - -* 22 bugfixes - -### 2.4.0 - -* **Deprecate** globally exported moment, will be removed in next major -* New languages - * Farose (fo) [#1206](https://github.com/moment/moment/issues/1206) - * Tagalog/Filipino (tl-ph) [#1197](https://github.com/moment/moment/issues/1197) - * Welsh (cy) [#1215](https://github.com/moment/moment/issues/1215) -* Bugfixes - * properly handle Z at the end of iso RegExp [#1187](https://github.com/moment/moment/issues/1187) - * chinese meridian time improvements [#1076](https://github.com/moment/moment/issues/1076) - * fix language tests [#1177](https://github.com/moment/moment/issues/1177) - * remove some failing tests (that should have never existed :)) - [#1185](https://github.com/moment/moment/issues/1185) - [#1183](https://github.com/moment/moment/issues/1183) - * handle russian noun cases in weird cases [#1195](https://github.com/moment/moment/issues/1195) - -### 2.3.1 - -Removed a trailing comma [1169] and fixed a bug with `months`, `weekdays` getters [#1171](https://github.com/moment/moment/issues/1171). - -### 2.3.0 [See changelog](https://gist.github.com/ichernev/6864354) - -Changed isValid, added strict parsing. -Week tokens parsing. - -### 2.2.1 - -Fixed bug in string prototype test. -Updated authors and contributors. - -### 2.2.0 [See changelog](https://gist.github.com/ichernev/00f837a9baf46a3565e4) - -Added bower support. - -Language files now use UMD. - -Creating moment defaults to current date/month/year. - -Added a bundle of moment and all language files. - -### 2.1.0 [See changelog](https://gist.github.com/timrwood/b8c2d90d528eddb53ab5) - -Added better week support. - -Added ability to set offset with `moment#zone`. - -Added ability to set month or weekday from a string. - -Added `moment#min` and `moment#max` - -### 2.0.0 [See changelog](https://gist.github.com/timrwood/e72f2eef320ed9e37c51) - -Added short form localized tokens. - -Added ability to define language a string should be parsed in. - -Added support for reversed add/subtract arguments. - -Added support for `endOf('week')` and `startOf('week')`. - -Fixed the logic for `moment#diff(Moment, 'months')` and `moment#diff(Moment, 'years')` - -`moment#diff` now floors instead of rounds. - -Normalized `moment#toString`. - -Added `isSame`, `isAfter`, and `isBefore` methods. - -Added better week support. - -Added `moment#toJSON` - -Bugfix: Fixed parsing of first century dates - -Bugfix: Parsing 10Sep2001 should work as expected - -Bugfix: Fixed wierdness with `moment.utc()` parsing. - -Changed language ordinal method to return the number + ordinal instead of just the ordinal. - -Changed two digit year parsing cutoff to match strptime. - -Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`. - -Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`. - -Removed the lang data objects from the top level namespace. - -Duplicate `Date` passed to `moment()` instead of referencing it. - -### 1.7.2 [See discussion](https://github.com/timrwood/moment/issues/456) - -Bugfixes - -### 1.7.1 [See discussion](https://github.com/timrwood/moment/issues/384) - -Bugfixes - -### 1.7.0 [See discussion](https://github.com/timrwood/moment/issues/288) - -Added `moment.fn.endOf()` and `moment.fn.startOf()`. - -Added validation via `moment.fn.isValid()`. - -Made formatting method 3x faster. http://jsperf.com/momentjs-cached-format-functions - -Add support for month/weekday callbacks in `moment.fn.format()` - -Added instance specific languages. - -Added two letter weekday abbreviations with the formatting token `dd`. - -Various language updates. - -Various bugfixes. - -### 1.6.0 [See discussion](https://github.com/timrwood/moment/pull/268) - -Added Durations. - -Revamped parser to support parsing non-separated strings (YYYYMMDD vs YYYY-MM-DD). - -Added support for millisecond parsing and formatting tokens (S SS SSS) - -Added a getter for `moment.lang()` - -Various bugfixes. - -There are a few things deprecated in the 1.6.0 release. - -1. The format tokens `z` and `zz` (timezone abbreviations like EST CST MST etc) will no longer be supported. Due to inconsistent browser support, we are unable to consistently produce this value. See [this issue](https://github.com/timrwood/moment/issues/162) for more background. - -2. The method `moment.fn.native` is deprecated in favor of `moment.fn.toDate`. There continue to be issues with Google Closure Compiler throwing errors when using `native`, even in valid instances. - -3. The way to customize am/pm strings is being changed. This would only affect you if you created a custom language file. For more information, see [this issue](https://github.com/timrwood/moment/pull/222). - -### 1.5.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=10&page=1&state=closed) - -Added UTC mode. - -Added automatic ISO8601 parsing. - -Various bugfixes. - -### 1.4.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=8&state=closed) - -Added `moment.fn.toDate` as a replacement for `moment.fn.native`. - -Added `moment.fn.sod` and `moment.fn.eod` to get the start and end of day. - -Various bugfixes. - -### 1.3.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=7&state=closed) - -Added support for parsing month names in the current language. - -Added escape blocks for parsing tokens. - -Added `moment.fn.calendar` to format strings like 'Today 2:30 PM', 'Tomorrow 1:25 AM', and 'Last Sunday 4:30 AM'. - -Added `moment.fn.day` as a setter. - -Various bugfixes - -### 1.2.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=4&state=closed) - -Added timezones to parser and formatter. - -Added `moment.fn.isDST`. - -Added `moment.fn.zone` to get the timezone offset in minutes. - -### 1.1.2 [See milestone](https://github.com/timrwood/moment/issues?milestone=6&state=closed) - -Various bugfixes - -### 1.1.1 [See milestone](https://github.com/timrwood/moment/issues?milestone=5&state=closed) - -Added time specific diffs (months, days, hours, etc) - -### 1.1.0 - -Added `moment.fn.format` localized masks. 'L LL LLL LLLL' [issue 29](https://github.com/timrwood/moment/pull/29) - -Fixed [issue 31](https://github.com/timrwood/moment/pull/31). - -### 1.0.1 - -Added `moment.version` to get the current version. - -Removed `window !== undefined` when checking if module exists to support browserify. [issue 25](https://github.com/timrwood/moment/pull/25) - -### 1.0.0 - -Added convenience methods for getting and setting date parts. - -Added better support for `moment.add()`. - -Added better lang support in NodeJS. - -Renamed library from underscore.date to Moment.js - -### 0.6.1 - -Added Portuguese, Italian, and French language support - -### 0.6.0 - -Added _date.lang() support. -Added support for passing multiple formats to try to parse a date. _date("07-10-1986", ["MM-DD-YYYY", "YYYY-MM-DD"]); -Made parse from string and single format 25% faster. - -### 0.5.2 - -Bugfix for [issue 8](https://github.com/timrwood/underscore.date/pull/8) and [issue 9](https://github.com/timrwood/underscore.date/pull/9). - -### 0.5.1 - -Bugfix for [issue 5](https://github.com/timrwood/underscore.date/pull/5). - -### 0.5.0 - -Dropped the redundant `_date.date()` in favor of `_date()`. -Removed `_date.now()`, as it is a duplicate of `_date()` with no parameters. -Removed `_date.isLeapYear(yearNumber)`. Use `_date([yearNumber]).isLeapYear()` instead. -Exposed customization options through the `_date.relativeTime`, `_date.weekdays`, `_date.weekdaysShort`, `_date.months`, `_date.monthsShort`, and `_date.ordinal` variables instead of the `_date.customize()` function. - -### 0.4.1 - -Added date input formats for input strings. - -### 0.4.0 - -Added underscore.date to npm. Removed dependencies on underscore. - -### 0.3.2 - -Added `'z'` and `'zz'` to `_.date().format()`. Cleaned up some redundant code to trim off some bytes. - -### 0.3.1 - -Cleaned up the namespace. Moved all date manipulation and display functions to the _.date() object. - -### 0.3.0 - -Switched to the Underscore methodology of not mucking with the native objects' prototypes. -Made chaining possible. - -### 0.2.1 - -Changed date names to be a more pseudo standardized 'dddd, MMMM Do YYYY, h:mm:ss a'. -Added `Date.prototype` functions `add`, `subtract`, `isdst`, and `isleapyear`. - -### 0.2.0 - -Changed function names to be more concise. -Changed date format from php date format to custom format. - -### 0.1.0 - -Initial release - diff --git a/elgg_clean/bower_components/moment/LICENSE b/elgg_clean/bower_components/moment/LICENSE deleted file mode 100644 index 34f5b370..00000000 --- a/elgg_clean/bower_components/moment/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/elgg_clean/bower_components/moment/README.md b/elgg_clean/bower_components/moment/README.md deleted file mode 100644 index d59f056e..00000000 --- a/elgg_clean/bower_components/moment/README.md +++ /dev/null @@ -1,58 +0,0 @@ -[](https://gitter.im/moment/moment?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - -[![NPM version][npm-version-image]][npm-url] [![NPM downloads][npm-downloads-image]][npm-url] [![MIT License][license-image]][license-url] [![Build Status][travis-image]][travis-url] -[](https://coveralls.io/r/moment/moment?branch=master) - -A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates. - -## [Documentation](http://momentjs.com/docs/) - -## Port to ES6 (version 2.10.0) - -Moment 2.10.0 does not bring any new features, but the code is now written in -es6 modules and placed inside `src/`. Previously `moment.js`, `locale/*.js` and -`test/moment/*.js`, `test/locale/*.js` contained the source of the project. Now -the source is in `src/`, temporary build (es5) files are placed under -`build/umd/` (for running tests during development), and the `moment.js` and -`locale/*.js` files are updated only on release. - -If you want to use a particular revision of the code, make sure to run -`grunt transpile update-index`, so `moment.js` and `locales/*.js` are synced -with `src/*`. We might place that in a commit hook in the future. - -## Upgrading to 2.0.0 - -There are a number of small backwards incompatible changes with version 2.0.0. [See the full descriptions here](https://gist.github.com/timrwood/e72f2eef320ed9e37c51#backwards-incompatible-changes) - - * Changed language ordinal method to return the number + ordinal instead of just the ordinal. - - * Changed two digit year parsing cutoff to match strptime. - - * Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`. - - * Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`. - - * Removed the lang data objects from the top level namespace. - - * Duplicate `Date` passed to `moment()` instead of referencing it. - -## [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) - -## [Contributing](https://github.com/moment/moment/blob/develop/CONTRIBUTING.md) - -We're looking for co-maintainers! If you want to become a master of time please -write to [ichernev](https://github.com/ichernev). - -## License - -Moment.js is freely distributable under the terms of the [MIT license](https://github.com/moment/moment/blob/develop/LICENSE). - -[license-image]: http://img.shields.io/badge/license-MIT-blue.svg?style=flat -[license-url]: LICENSE - -[npm-url]: https://npmjs.org/package/moment -[npm-version-image]: http://img.shields.io/npm/v/moment.svg?style=flat -[npm-downloads-image]: http://img.shields.io/npm/dm/moment.svg?style=flat - -[travis-url]: http://travis-ci.org/moment/moment -[travis-image]: http://img.shields.io/travis/moment/moment/develop.svg?style=flat diff --git a/elgg_clean/bower_components/moment/bower.json b/elgg_clean/bower_components/moment/bower.json deleted file mode 100644 index d9f47e82..00000000 --- a/elgg_clean/bower_components/moment/bower.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "moment", - "main": "moment.js", - "ignore": [ - "**/.*", - "benchmarks", - "bower_components", - "meteor", - "node_modules", - "scripts", - "tasks", - "test", - "component.json", - "composer.json", - "CONTRIBUTING.md", - "ender.js", - "Gruntfile.js", - "Moment.js.nuspec", - "package.js", - "package.json" - ] -} diff --git a/elgg_clean/bower_components/moment/locale/af.js b/elgg_clean/bower_components/moment/locale/af.js deleted file mode 100644 index f6329e88..00000000 --- a/elgg_clean/bower_components/moment/locale/af.js +++ /dev/null @@ -1,72 +0,0 @@ -//! moment.js locale configuration -//! locale : afrikaans (af) -//! author : Werner Mollentze : https://github.com/wernerm - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var af = moment.defineLocale('af', { - months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), - weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), - weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), - meridiemParse: /vm|nm/i, - isPM : function (input) { - return /^nm$/i.test(input); - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'vm' : 'VM'; - } else { - return isLower ? 'nm' : 'NM'; - } - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Vandag om] LT', - nextDay : '[Môre om] LT', - nextWeek : 'dddd [om] LT', - lastDay : '[Gister om] LT', - lastWeek : '[Laas] dddd [om] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'oor %s', - past : '%s gelede', - s : '\'n paar sekondes', - m : '\'n minuut', - mm : '%d minute', - h : '\'n uur', - hh : '%d ure', - d : '\'n dag', - dd : '%d dae', - M : '\'n maand', - MM : '%d maande', - y : '\'n jaar', - yy : '%d jaar' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter - }, - week : { - dow : 1, // Maandag is die eerste dag van die week. - doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - } - }); - - return af; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ar-ma.js b/elgg_clean/bower_components/moment/locale/ar-ma.js deleted file mode 100644 index f9f21b51..00000000 --- a/elgg_clean/bower_components/moment/locale/ar-ma.js +++ /dev/null @@ -1,58 +0,0 @@ -//! moment.js locale configuration -//! locale : Moroccan Arabic (ar-ma) -//! author : ElFadili Yassine : https://github.com/ElFadiliY -//! author : Abdel Said : https://github.com/abdelsaid - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var ar_ma = moment.defineLocale('ar-ma', { - months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - return ar_ma; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ar-sa.js b/elgg_clean/bower_components/moment/locale/ar-sa.js deleted file mode 100644 index cdb0f64a..00000000 --- a/elgg_clean/bower_components/moment/locale/ar-sa.js +++ /dev/null @@ -1,102 +0,0 @@ -//! moment.js locale configuration -//! locale : Arabic Saudi Arabia (ar-sa) -//! author : Suhail Alkowaileet : https://github.com/xsoh - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }; - - var ar_sa = moment.defineLocale('ar-sa', { - months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - preparse: function (string) { - return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - return ar_sa; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ar-tn.js b/elgg_clean/bower_components/moment/locale/ar-tn.js deleted file mode 100644 index 6f5a84fd..00000000 --- a/elgg_clean/bower_components/moment/locale/ar-tn.js +++ /dev/null @@ -1,56 +0,0 @@ -//! moment.js locale configuration -//! locale : Tunisian Arabic (ar-tn) - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var ar_tn = moment.defineLocale('ar-tn', { - months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات' - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return ar_tn; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ar.js b/elgg_clean/bower_components/moment/locale/ar.js deleted file mode 100644 index c42f5e65..00000000 --- a/elgg_clean/bower_components/moment/locale/ar.js +++ /dev/null @@ -1,135 +0,0 @@ -//! moment.js locale configuration -//! Locale: Arabic (ar) -//! Author: Abdel Said: https://github.com/abdelsaid -//! Changes in months, weekdays: Ahmed Elkhatib -//! Native plural forms: forabi https://github.com/forabi - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }, pluralForm = function (n) { - return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; - }, plurals = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] - }, pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, months = [ - 'كانون الثاني يناير', - 'شباط فبراير', - 'آذار مارس', - 'نيسان أبريل', - 'أيار مايو', - 'حزيران يونيو', - 'تموز يوليو', - 'آب أغسطس', - 'أيلول سبتمبر', - 'تشرين الأول أكتوبر', - 'تشرين الثاني نوفمبر', - 'كانون الأول ديسمبر' - ]; - - var ar = moment.defineLocale('ar', { - months : months, - monthsShort : months, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/\u200FM/\u200FYYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize('s'), - m : pluralize('m'), - mm : pluralize('m'), - h : pluralize('h'), - hh : pluralize('h'), - d : pluralize('d'), - dd : pluralize('d'), - M : pluralize('M'), - MM : pluralize('M'), - y : pluralize('y'), - yy : pluralize('y') - }, - preparse: function (string) { - return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - return ar; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/az.js b/elgg_clean/bower_components/moment/locale/az.js deleted file mode 100644 index bd9830f6..00000000 --- a/elgg_clean/bower_components/moment/locale/az.js +++ /dev/null @@ -1,103 +0,0 @@ -//! moment.js locale configuration -//! locale : azerbaijani (az) -//! author : topchiyev : https://github.com/topchiyev - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var suffixes = { - 1: '-inci', - 5: '-inci', - 8: '-inci', - 70: '-inci', - 80: '-inci', - 2: '-nci', - 7: '-nci', - 20: '-nci', - 50: '-nci', - 3: '-üncü', - 4: '-üncü', - 100: '-üncü', - 6: '-ncı', - 9: '-uncu', - 10: '-uncu', - 30: '-uncu', - 60: '-ıncı', - 90: '-ıncı' - }; - - var az = moment.defineLocale('az', { - months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), - monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), - weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), - weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), - weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[sabah saat] LT', - nextWeek : '[gələn həftə] dddd [saat] LT', - lastDay : '[dünən] LT', - lastWeek : '[keçən həftə] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s əvvəl', - s : 'birneçə saniyyə', - m : 'bir dəqiqə', - mm : '%d dəqiqə', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir il', - yy : '%d il' - }, - meridiemParse: /gecə|səhər|gündüz|axşam/, - isPM : function (input) { - return /^(gündüz|axşam)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'gecə'; - } else if (hour < 12) { - return 'səhər'; - } else if (hour < 17) { - return 'gündüz'; - } else { - return 'axşam'; - } - }, - ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + '-ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return az; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/be.js b/elgg_clean/bower_components/moment/locale/be.js deleted file mode 100644 index 0fa37d7c..00000000 --- a/elgg_clean/bower_components/moment/locale/be.js +++ /dev/null @@ -1,146 +0,0 @@ -//! moment.js locale configuration -//! locale : belarusian (be) -//! author : Dmitry Demidov : https://github.com/demidov91 -//! author: Praleska: http://praleska.pro/ -//! Author : Menelion Elensúle : https://github.com/Oire - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', - 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', - 'dd': 'дзень_дні_дзён', - 'MM': 'месяц_месяцы_месяцаў', - 'yy': 'год_гады_гадоў' - }; - if (key === 'm') { - return withoutSuffix ? 'хвіліна' : 'хвіліну'; - } - else if (key === 'h') { - return withoutSuffix ? 'гадзіна' : 'гадзіну'; - } - else { - return number + ' ' + plural(format[key], +number); - } - } - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), - 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), - 'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_') - }, - nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; - } - - var be = moment.defineLocale('be', { - months : monthsCaseReplace, - monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), - weekdays : weekdaysCaseReplace, - weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., HH:mm', - LLLL : 'dddd, D MMMM YYYY г., HH:mm' - }, - calendar : { - sameDay: '[Сёння ў] LT', - nextDay: '[Заўтра ў] LT', - lastDay: '[Учора ў] LT', - nextWeek: function () { - return '[У] dddd [ў] LT'; - }, - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return '[У мінулую] dddd [ў] LT'; - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'праз %s', - past : '%s таму', - s : 'некалькі секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : relativeTimeWithPlural, - hh : relativeTimeWithPlural, - d : 'дзень', - dd : relativeTimeWithPlural, - M : 'месяц', - MM : relativeTimeWithPlural, - y : 'год', - yy : relativeTimeWithPlural - }, - meridiemParse: /ночы|раніцы|дня|вечара/, - isPM : function (input) { - return /^(дня|вечара)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночы'; - } else if (hour < 12) { - return 'раніцы'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечара'; - } - }, - ordinalParse: /\d{1,2}-(і|ы|га)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; - case 'D': - return number + '-га'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return be; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/bg.js b/elgg_clean/bower_components/moment/locale/bg.js deleted file mode 100644 index c6601c62..00000000 --- a/elgg_clean/bower_components/moment/locale/bg.js +++ /dev/null @@ -1,89 +0,0 @@ -//! moment.js locale configuration -//! locale : bulgarian (bg) -//! author : Krasen Borisov : https://github.com/kraz - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var bg = moment.defineLocale('bg', { - months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), - weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'след %s', - past : 'преди %s', - s : 'няколко секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дни', - M : 'месец', - MM : '%d месеца', - y : 'година', - yy : '%d години' - }, - ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return bg; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/bn.js b/elgg_clean/bower_components/moment/locale/bn.js deleted file mode 100644 index 745e2772..00000000 --- a/elgg_clean/bower_components/moment/locale/bn.js +++ /dev/null @@ -1,112 +0,0 @@ -//! moment.js locale configuration -//! locale : Bengali (bn) -//! author : Kaushik Gandhi : https://github.com/kaushikgandhi - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var symbolMap = { - '1': '১', - '2': '২', - '3': '৩', - '4': '৪', - '5': '৫', - '6': '৬', - '7': '৭', - '8': '৮', - '9': '৯', - '0': '০' - }, - numberMap = { - '১': '1', - '২': '2', - '৩': '3', - '৪': '4', - '৫': '5', - '৬': '6', - '৭': '7', - '৮': '8', - '৯': '9', - '০': '0' - }; - - var bn = moment.defineLocale('bn', { - months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), - monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'), - weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split('_'), - weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split('_'), - weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'), - longDateFormat : { - LT : 'A h:mm সময়', - LTS : 'A h:mm:ss সময়', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm সময়', - LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' - }, - calendar : { - sameDay : '[আজ] LT', - nextDay : '[আগামীকাল] LT', - nextWeek : 'dddd, LT', - lastDay : '[গতকাল] LT', - lastWeek : '[গত] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s পরে', - past : '%s আগে', - s : 'কএক সেকেন্ড', - m : 'এক মিনিট', - mm : '%d মিনিট', - h : 'এক ঘন্টা', - hh : '%d ঘন্টা', - d : 'এক দিন', - dd : '%d দিন', - M : 'এক মাস', - MM : '%d মাস', - y : 'এক বছর', - yy : '%d বছর' - }, - preparse: function (string) { - return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /রাত|সকাল|দুপুর|বিকেল|রাত/, - isPM: function (input) { - return /^(দুপুর|বিকেল|রাত)$/.test(input); - }, - //Bengali is a vast language its spoken - //in different forms in various parts of the world. - //I have just generalized with most common one used - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'রাত'; - } else if (hour < 10) { - return 'সকাল'; - } else if (hour < 17) { - return 'দুপুর'; - } else if (hour < 20) { - return 'বিকেল'; - } else { - return 'রাত'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - return bn; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/bo.js b/elgg_clean/bower_components/moment/locale/bo.js deleted file mode 100644 index 4331f3b9..00000000 --- a/elgg_clean/bower_components/moment/locale/bo.js +++ /dev/null @@ -1,109 +0,0 @@ -//! moment.js locale configuration -//! locale : tibetan (bo) -//! author : Thupten N. Chakrishar : https://github.com/vajradog - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var symbolMap = { - '1': '༡', - '2': '༢', - '3': '༣', - '4': '༤', - '5': '༥', - '6': '༦', - '7': '༧', - '8': '༨', - '9': '༩', - '0': '༠' - }, - numberMap = { - '༡': '1', - '༢': '2', - '༣': '3', - '༤': '4', - '༥': '5', - '༦': '6', - '༧': '7', - '༨': '8', - '༩': '9', - '༠': '0' - }; - - var bo = moment.defineLocale('bo', { - months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), - weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm', - LLLL : 'dddd, D MMMM YYYY, A h:mm' - }, - calendar : { - sameDay : '[དི་རིང] LT', - nextDay : '[སང་ཉིན] LT', - nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', - lastDay : '[ཁ་སང] LT', - lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ལ་', - past : '%s སྔན་ལ', - s : 'ལམ་སང', - m : 'སྐར་མ་གཅིག', - mm : '%d སྐར་མ', - h : 'ཆུ་ཚོད་གཅིག', - hh : '%d ཆུ་ཚོད', - d : 'ཉིན་གཅིག', - dd : '%d ཉིན་', - M : 'ཟླ་བ་གཅིག', - MM : '%d ཟླ་བ', - y : 'ལོ་གཅིག', - yy : '%d ལོ' - }, - preparse: function (string) { - return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, - isPM: function (input) { - return /^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'མཚན་མོ'; - } else if (hour < 10) { - return 'ཞོགས་ཀས'; - } else if (hour < 17) { - return 'ཉིན་གུང'; - } else if (hour < 20) { - return 'དགོང་དག'; - } else { - return 'མཚན་མོ'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - return bo; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/br.js b/elgg_clean/bower_components/moment/locale/br.js deleted file mode 100644 index d5655052..00000000 --- a/elgg_clean/bower_components/moment/locale/br.js +++ /dev/null @@ -1,106 +0,0 @@ -//! moment.js locale configuration -//! locale : breton (br) -//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function relativeTimeWithMutation(number, withoutSuffix, key) { - var format = { - 'mm': 'munutenn', - 'MM': 'miz', - 'dd': 'devezh' - }; - return number + ' ' + mutation(format[key], number); - } - function specialMutationForYears(number) { - switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; - } - } - function lastNumber(number) { - if (number > 9) { - return lastNumber(number % 10); - } - return number; - } - function mutation(text, number) { - if (number === 2) { - return softMutation(text); - } - return text; - } - function softMutation(text) { - var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' - }; - if (mutationTable[text.charAt(0)] === undefined) { - return text; - } - return mutationTable[text.charAt(0)] + text.substring(1); - } - - var br = moment.defineLocale('br', { - months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), - monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), - weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), - weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), - weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), - longDateFormat : { - LT : 'h[e]mm A', - LTS : 'h[e]mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [a viz] MMMM YYYY', - LLL : 'D [a viz] MMMM YYYY h[e]mm A', - LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' - }, - calendar : { - sameDay : '[Hiziv da] LT', - nextDay : '[Warc\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'a-benn %s', - past : '%s \'zo', - s : 'un nebeud segondennoù', - m : 'ur vunutenn', - mm : relativeTimeWithMutation, - h : 'un eur', - hh : '%d eur', - d : 'un devezh', - dd : relativeTimeWithMutation, - M : 'ur miz', - MM : relativeTimeWithMutation, - y : 'ur bloaz', - yy : specialMutationForYears - }, - ordinalParse: /\d{1,2}(añ|vet)/, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return br; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/bs.js b/elgg_clean/bower_components/moment/locale/bs.js deleted file mode 100644 index 8b452abd..00000000 --- a/elgg_clean/bower_components/moment/locale/bs.js +++ /dev/null @@ -1,140 +0,0 @@ -//! moment.js locale configuration -//! locale : bosnian (bs) -//! author : Nedim Cholich : https://github.com/frontyard -//! based on (hr) translation by Bojan Marković - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } - - var bs = moment.defineLocale('bs', { - months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'dan', - dd : translate, - M : 'mjesec', - MM : translate, - y : 'godinu', - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return bs; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ca.js b/elgg_clean/bower_components/moment/locale/ca.js deleted file mode 100644 index 6459d836..00000000 --- a/elgg_clean/bower_components/moment/locale/ca.js +++ /dev/null @@ -1,78 +0,0 @@ -//! moment.js locale configuration -//! locale : catalan (ca) -//! author : Juan G. Hurtado : https://github.com/juanghurtado - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var ca = moment.defineLocale('ca', { - months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), - monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'), - weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), - weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), - weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'LT:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd D MMMM YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'fa %s', - s : 'uns segons', - m : 'un minut', - mm : '%d minuts', - h : 'una hora', - hh : '%d hores', - d : 'un dia', - dd : '%d dies', - M : 'un mes', - MM : '%d mesos', - y : 'un any', - yy : '%d anys' - }, - ordinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal : function (number, period) { - var output = (number === 1) ? 'r' : - (number === 2) ? 'n' : - (number === 3) ? 'r' : - (number === 4) ? 't' : 'è'; - if (period === 'w' || period === 'W') { - output = 'a'; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return ca; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/cs.js b/elgg_clean/bower_components/moment/locale/cs.js deleted file mode 100644 index 00aa126a..00000000 --- a/elgg_clean/bower_components/moment/locale/cs.js +++ /dev/null @@ -1,156 +0,0 @@ -//! moment.js locale configuration -//! locale : czech (cs) -//! author : petrbela : https://github.com/petrbela - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), - monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); - function plural(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; - } - break; - } - } - - var cs = moment.defineLocale('cs', { - months : months, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), - weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), - weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), - weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[dnes v] LT', - nextDay: '[zítra v] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; - } - }, - lastDay: '[včera v] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'před %s', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinalParse : /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return cs; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/cv.js b/elgg_clean/bower_components/moment/locale/cv.js deleted file mode 100644 index 7055d123..00000000 --- a/elgg_clean/bower_components/moment/locale/cv.js +++ /dev/null @@ -1,62 +0,0 @@ -//! moment.js locale configuration -//! locale : chuvash (cv) -//! author : Anatoly Mironov : https://github.com/mirontoli - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var cv = moment.defineLocale('cv', { - months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), - monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), - weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), - weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), - weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' - }, - calendar : { - sameDay: '[Паян] LT [сехетре]', - nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ӗнер] LT [сехетре]', - nextWeek: '[Ҫитес] dddd LT [сехетре]', - lastWeek: '[Иртнӗ] dddd LT [сехетре]', - sameElse: 'L' - }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; - return output + affix; - }, - past : '%s каялла', - s : 'пӗр-ик ҫеккунт', - m : 'пӗр минут', - mm : '%d минут', - h : 'пӗр сехет', - hh : '%d сехет', - d : 'пӗр кун', - dd : '%d кун', - M : 'пӗр уйӑх', - MM : '%d уйӑх', - y : 'пӗр ҫул', - yy : '%d ҫул' - }, - ordinalParse: /\d{1,2}-мӗш/, - ordinal : '%d-мӗш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return cv; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/cy.js b/elgg_clean/bower_components/moment/locale/cy.js deleted file mode 100644 index a3c38a0a..00000000 --- a/elgg_clean/bower_components/moment/locale/cy.js +++ /dev/null @@ -1,78 +0,0 @@ -//! moment.js locale configuration -//! locale : Welsh (cy) -//! author : Robert Allen - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var cy = moment.defineLocale('cy', { - months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), - monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), - weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), - weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), - weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), - // time formats are the same as en-gb - longDateFormat: { - LT: 'HH:mm', - LTS : 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[Heddiw am] LT', - nextDay: '[Yfory am] LT', - nextWeek: 'dddd [am] LT', - lastDay: '[Ddoe am] LT', - lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'mewn %s', - past: '%s yn ôl', - s: 'ychydig eiliadau', - m: 'munud', - mm: '%d munud', - h: 'awr', - hh: '%d awr', - d: 'diwrnod', - dd: '%d diwrnod', - M: 'mis', - MM: '%d mis', - y: 'blwyddyn', - yy: '%d flynedd' - }, - ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, - // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh - ordinal: function (number) { - var b = number, - output = '', - lookup = [ - '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed - 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed - ]; - if (b > 20) { - if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { - output = 'fed'; // not 30ain, 70ain or 90ain - } else { - output = 'ain'; - } - } else if (b > 0) { - output = lookup[b]; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return cy; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/da.js b/elgg_clean/bower_components/moment/locale/da.js deleted file mode 100644 index 2aff2bbb..00000000 --- a/elgg_clean/bower_components/moment/locale/da.js +++ /dev/null @@ -1,59 +0,0 @@ -//! moment.js locale configuration -//! locale : danish (da) -//! author : Ulrik Nielsen : https://github.com/mrbase - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var da = moment.defineLocale('da', { - months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd [d.] D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[I dag kl.] LT', - nextDay : '[I morgen kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[I går kl.] LT', - lastWeek : '[sidste] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'få sekunder', - m : 'et minut', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dage', - M : 'en måned', - MM : '%d måneder', - y : 'et år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return da; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/de-at.js b/elgg_clean/bower_components/moment/locale/de-at.js deleted file mode 100644 index a2071bb4..00000000 --- a/elgg_clean/bower_components/moment/locale/de-at.js +++ /dev/null @@ -1,75 +0,0 @@ -//! moment.js locale configuration -//! locale : austrian german (de-at) -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -//! author : Martin Groller : https://github.com/MadMG - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - var de_at = moment.defineLocale('de-at', { - months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[Morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[Gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return de_at; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/de.js b/elgg_clean/bower_components/moment/locale/de.js deleted file mode 100644 index 81ffae41..00000000 --- a/elgg_clean/bower_components/moment/locale/de.js +++ /dev/null @@ -1,74 +0,0 @@ -//! moment.js locale configuration -//! locale : german (de) -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - var de = moment.defineLocale('de', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[Morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[Gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return de; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/el.js b/elgg_clean/bower_components/moment/locale/el.js deleted file mode 100644 index ee580e78..00000000 --- a/elgg_clean/bower_components/moment/locale/el.js +++ /dev/null @@ -1,93 +0,0 @@ -//! moment.js locale configuration -//! locale : modern greek (el) -//! author : Aggelos Karalias : https://github.com/mehiel - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var el = moment.defineLocale('el', { - monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), - monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), - months : function (momentToFormat, format) { - if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' - return this._monthsGenitiveEl[momentToFormat.month()]; - } else { - return this._monthsNominativeEl[momentToFormat.month()]; - } - }, - monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), - weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), - weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), - weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'μμ' : 'ΜΜ'; - } else { - return isLower ? 'πμ' : 'ΠΜ'; - } - }, - isPM : function (input) { - return ((input + '').toLowerCase()[0] === 'μ'); - }, - meridiemParse : /[ΠΜ]\.?Μ?\.?/i, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : function () { - switch (this.day()) { - case 6: - return '[το προηγούμενο] dddd [{}] LT'; - default: - return '[την προηγούμενη] dddd [{}] LT'; - } - }, - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendarEl[key], - hours = mom && mom.hours(); - if (typeof output === 'function') { - output = output.apply(mom); - } - return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); - }, - relativeTime : { - future : 'σε %s', - past : '%s πριν', - s : 'λίγα δευτερόλεπτα', - m : 'ένα λεπτό', - mm : '%d λεπτά', - h : 'μία ώρα', - hh : '%d ώρες', - d : 'μία μέρα', - dd : '%d μέρες', - M : 'ένας μήνας', - MM : '%d μήνες', - y : 'ένας χρόνος', - yy : '%d χρόνια' - }, - ordinalParse: /\d{1,2}η/, - ordinal: '%dη', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } - }); - - return el; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/en-au.js b/elgg_clean/bower_components/moment/locale/en-au.js deleted file mode 100644 index ae1ee4fb..00000000 --- a/elgg_clean/bower_components/moment/locale/en-au.js +++ /dev/null @@ -1,65 +0,0 @@ -//! moment.js locale configuration -//! locale : australian english (en-au) - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var en_au = moment.defineLocale('en-au', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return en_au; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/en-ca.js b/elgg_clean/bower_components/moment/locale/en-ca.js deleted file mode 100644 index 4526d89b..00000000 --- a/elgg_clean/bower_components/moment/locale/en-ca.js +++ /dev/null @@ -1,62 +0,0 @@ -//! moment.js locale configuration -//! locale : canadian english (en-ca) -//! author : Jonathan Abourbih : https://github.com/jonbca - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var en_ca = moment.defineLocale('en-ca', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'YYYY-MM-DD', - LL : 'D MMMM, YYYY', - LLL : 'D MMMM, YYYY h:mm A', - LLLL : 'dddd, D MMMM, YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - return en_ca; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/en-gb.js b/elgg_clean/bower_components/moment/locale/en-gb.js deleted file mode 100644 index fb762835..00000000 --- a/elgg_clean/bower_components/moment/locale/en-gb.js +++ /dev/null @@ -1,66 +0,0 @@ -//! moment.js locale configuration -//! locale : great britain english (en-gb) -//! author : Chris Gedrim : https://github.com/chrisgedrim - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var en_gb = moment.defineLocale('en-gb', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return en_gb; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/eo.js b/elgg_clean/bower_components/moment/locale/eo.js deleted file mode 100644 index 4cb0e3a1..00000000 --- a/elgg_clean/bower_components/moment/locale/eo.js +++ /dev/null @@ -1,72 +0,0 @@ -//! moment.js locale configuration -//! locale : esperanto (eo) -//! author : Colin Dean : https://github.com/colindean -//! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. -//! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var eo = moment.defineLocale('eo', { - months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), - weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'), - weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D[-an de] MMMM, YYYY', - LLL : 'D[-an de] MMMM, YYYY HH:mm', - LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm' - }, - meridiemParse: /[ap]\.t\.m/i, - isPM: function (input) { - return input.charAt(0).toLowerCase() === 'p'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'p.t.m.' : 'P.T.M.'; - } else { - return isLower ? 'a.t.m.' : 'A.T.M.'; - } - }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'je %s', - past : 'antaŭ %s', - s : 'sekundoj', - m : 'minuto', - mm : '%d minutoj', - h : 'horo', - hh : '%d horoj', - d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo - dd : '%d tagoj', - M : 'monato', - MM : '%d monatoj', - y : 'jaro', - yy : '%d jaroj' - }, - ordinalParse: /\d{1,2}a/, - ordinal : '%da', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return eo; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/es.js b/elgg_clean/bower_components/moment/locale/es.js deleted file mode 100644 index d910d50e..00000000 --- a/elgg_clean/bower_components/moment/locale/es.js +++ /dev/null @@ -1,78 +0,0 @@ -//! moment.js locale configuration -//! locale : spanish (es) -//! author : Julio Napurí : https://github.com/julionc - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var monthsShortDot = 'Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.'.split('_'), - monthsShort = 'Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic'.split('_'); - - var es = moment.defineLocale('es', { - months : 'Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - weekdays : 'Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado'.split('_'), - weekdaysShort : 'Dom._Lun._Mar._Mié._Jue._Vie._Sáb.'.split('_'), - weekdaysMin : 'Do_Lu_Ma_Mi_Ju_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - ordinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return es; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/et.js b/elgg_clean/bower_components/moment/locale/et.js deleted file mode 100644 index 00207d44..00000000 --- a/elgg_clean/bower_components/moment/locale/et.js +++ /dev/null @@ -1,79 +0,0 @@ -//! moment.js locale configuration -//! locale : estonian (et) -//! author : Henry Kehlmann : https://github.com/madhenry -//! improvements : Illimar Tambek : https://github.com/ragulka - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - 'm' : ['ühe minuti', 'üks minut'], - 'mm': [number + ' minuti', number + ' minutit'], - 'h' : ['ühe tunni', 'tund aega', 'üks tund'], - 'hh': [number + ' tunni', number + ' tundi'], - 'd' : ['ühe päeva', 'üks päev'], - 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], - 'MM': [number + ' kuu', number + ' kuud'], - 'y' : ['ühe aasta', 'aasta', 'üks aasta'], - 'yy': [number + ' aasta', number + ' aastat'] - }; - if (withoutSuffix) { - return format[key][2] ? format[key][2] : format[key][1]; - } - return isFuture ? format[key][0] : format[key][1]; - } - - var et = moment.defineLocale('et', { - months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), - monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), - weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), - weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), - weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s pärast', - past : '%s tagasi', - s : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : '%d päeva', - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return et; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/eu.js b/elgg_clean/bower_components/moment/locale/eu.js deleted file mode 100644 index 6029f47b..00000000 --- a/elgg_clean/bower_components/moment/locale/eu.js +++ /dev/null @@ -1,63 +0,0 @@ -//! moment.js locale configuration -//! locale : euskara (eu) -//! author : Eneko Illarramendi : https://github.com/eillarra - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var eu = moment.defineLocale('eu', { - months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), - monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), - weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), - weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), - weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY[ko] MMMM[ren] D[a]', - LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', - LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - l : 'YYYY-M-D', - ll : 'YYYY[ko] MMM D[a]', - lll : 'YYYY[ko] MMM D[a] HH:mm', - llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' - }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' - }, - relativeTime : { - future : '%s barru', - past : 'duela %s', - s : 'segundo batzuk', - m : 'minutu bat', - mm : '%d minutu', - h : 'ordu bat', - hh : '%d ordu', - d : 'egun bat', - dd : '%d egun', - M : 'hilabete bat', - MM : '%d hilabete', - y : 'urte bat', - yy : '%d urte' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return eu; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/fa.js b/elgg_clean/bower_components/moment/locale/fa.js deleted file mode 100644 index d9eb59d9..00000000 --- a/elgg_clean/bower_components/moment/locale/fa.js +++ /dev/null @@ -1,104 +0,0 @@ -//! moment.js locale configuration -//! locale : Persian (fa) -//! author : Ebrahim Byagowi : https://github.com/ebraminio - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var symbolMap = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰' - }, numberMap = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0' - }; - - var fa = moment.defineLocale('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - meridiemParse: /قبل از ظهر|بعد از ظهر/, - isPM: function (input) { - return /بعد از ظهر/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'قبل از ظهر'; - } else { - return 'بعد از ظهر'; - } - }, - calendar : { - sameDay : '[امروز ساعت] LT', - nextDay : '[فردا ساعت] LT', - nextWeek : 'dddd [ساعت] LT', - lastDay : '[دیروز ساعت] LT', - lastWeek : 'dddd [پیش] [ساعت] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'در %s', - past : '%s پیش', - s : 'چندین ثانیه', - m : 'یک دقیقه', - mm : '%d دقیقه', - h : 'یک ساعت', - hh : '%d ساعت', - d : 'یک روز', - dd : '%d روز', - M : 'یک ماه', - MM : '%d ماه', - y : 'یک سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/[۰-۹]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - ordinalParse: /\d{1,2}م/, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - return fa; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/fi.js b/elgg_clean/bower_components/moment/locale/fi.js deleted file mode 100644 index d889ee7c..00000000 --- a/elgg_clean/bower_components/moment/locale/fi.js +++ /dev/null @@ -1,106 +0,0 @@ -//! moment.js locale configuration -//! locale : finnish (fi) -//! author : Tarmo Aidantausta : https://github.com/bleadof - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), - numbersFuture = [ - 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbersPast[7], numbersPast[8], numbersPast[9] - ]; - function translate(number, withoutSuffix, key, isFuture) { - var result = ''; - switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; - } - result = verbalNumber(number, isFuture) + ' ' + result; - return result; - } - function verbalNumber(number, isFuture) { - return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; - } - - var fi = moment.defineLocale('fi', { - months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), - monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), - weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), - weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), - weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'Do MMMM[ta] YYYY', - LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', - LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', - l : 'D.M.YYYY', - ll : 'Do MMM YYYY', - lll : 'Do MMM YYYY, [klo] HH.mm', - llll : 'ddd, Do MMM YYYY, [klo] HH.mm' - }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s päästä', - past : '%s sitten', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return fi; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/fo.js b/elgg_clean/bower_components/moment/locale/fo.js deleted file mode 100644 index e5aa93b1..00000000 --- a/elgg_clean/bower_components/moment/locale/fo.js +++ /dev/null @@ -1,59 +0,0 @@ -//! moment.js locale configuration -//! locale : faroese (fo) -//! author : Ragnar Johannesen : https://github.com/ragnar123 - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var fo = moment.defineLocale('fo', { - months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), - weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), - weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D. MMMM, YYYY HH:mm' - }, - calendar : { - sameDay : '[Í dag kl.] LT', - nextDay : '[Í morgin kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[Í gjár kl.] LT', - lastWeek : '[síðstu] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'um %s', - past : '%s síðani', - s : 'fá sekund', - m : 'ein minutt', - mm : '%d minuttir', - h : 'ein tími', - hh : '%d tímar', - d : 'ein dagur', - dd : '%d dagar', - M : 'ein mánaði', - MM : '%d mánaðir', - y : 'eitt ár', - yy : '%d ár' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return fo; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/fr-ca.js b/elgg_clean/bower_components/moment/locale/fr-ca.js deleted file mode 100644 index db7fc1fc..00000000 --- a/elgg_clean/bower_components/moment/locale/fr-ca.js +++ /dev/null @@ -1,57 +0,0 @@ -//! moment.js locale configuration -//! locale : canadian french (fr-ca) -//! author : Jonathan Abourbih : https://github.com/jonbca - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var fr_ca = moment.defineLocale('fr-ca', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Aujourd\'hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - ordinalParse: /\d{1,2}(er|e)/, - ordinal : function (number) { - return number + (number === 1 ? 'er' : 'e'); - } - }); - - return fr_ca; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/fr.js b/elgg_clean/bower_components/moment/locale/fr.js deleted file mode 100644 index 4f60e588..00000000 --- a/elgg_clean/bower_components/moment/locale/fr.js +++ /dev/null @@ -1,61 +0,0 @@ -//! moment.js locale configuration -//! locale : french (fr) -//! author : John Fischer : https://github.com/jfroffice - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var fr = moment.defineLocale('fr', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Aujourd\'hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - ordinalParse: /\d{1,2}(er|)/, - ordinal : function (number) { - return number + (number === 1 ? 'er' : ''); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return fr; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/fy.js b/elgg_clean/bower_components/moment/locale/fy.js deleted file mode 100644 index 3a5971ac..00000000 --- a/elgg_clean/bower_components/moment/locale/fy.js +++ /dev/null @@ -1,70 +0,0 @@ -//! moment.js locale configuration -//! locale : frisian (fy) -//! author : Robin van der Vliet : https://github.com/robin0van0der0v - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); - - var fy = moment.defineLocale('fy', { - months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), - weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), - weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[hjoed om] LT', - nextDay: '[moarn om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[juster om] LT', - lastWeek: '[ôfrûne] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'oer %s', - past : '%s lyn', - s : 'in pear sekonden', - m : 'ien minút', - mm : '%d minuten', - h : 'ien oere', - hh : '%d oeren', - d : 'ien dei', - dd : '%d dagen', - M : 'ien moanne', - MM : '%d moannen', - y : 'ien jier', - yy : '%d jierren' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return fy; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/gl.js b/elgg_clean/bower_components/moment/locale/gl.js deleted file mode 100644 index 91b35a2a..00000000 --- a/elgg_clean/bower_components/moment/locale/gl.js +++ /dev/null @@ -1,74 +0,0 @@ -//! moment.js locale configuration -//! locale : galician (gl) -//! author : Juan G. Hurtado : https://github.com/juanghurtado - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var gl = moment.defineLocale('gl', { - months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'), - monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'), - weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'), - weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.'.split('_'), - weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd D MMMM YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; - }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : function (str) { - if (str === 'uns segundos') { - return 'nuns segundos'; - } - return 'en ' + str; - }, - past : 'hai %s', - s : 'uns segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'unha hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un ano', - yy : '%d anos' - }, - ordinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return gl; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/he.js b/elgg_clean/bower_components/moment/locale/he.js deleted file mode 100644 index 35c3b46d..00000000 --- a/elgg_clean/bower_components/moment/locale/he.js +++ /dev/null @@ -1,81 +0,0 @@ -//! moment.js locale configuration -//! locale : Hebrew (he) -//! author : Tomer Cohen : https://github.com/tomer -//! author : Moshe Simantov : https://github.com/DevelopmentIL -//! author : Tal Ater : https://github.com/TalAter - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var he = moment.defineLocale('he', { - months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), - monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), - weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), - weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), - weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [ב]MMMM YYYY', - LLL : 'D [ב]MMMM YYYY HH:mm', - LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', - l : 'D/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay : '[היום ב־]LT', - nextDay : '[מחר ב־]LT', - nextWeek : 'dddd [בשעה] LT', - lastDay : '[אתמול ב־]LT', - lastWeek : '[ביום] dddd [האחרון בשעה] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'בעוד %s', - past : 'לפני %s', - s : 'מספר שניות', - m : 'דקה', - mm : '%d דקות', - h : 'שעה', - hh : function (number) { - if (number === 2) { - return 'שעתיים'; - } - return number + ' שעות'; - }, - d : 'יום', - dd : function (number) { - if (number === 2) { - return 'יומיים'; - } - return number + ' ימים'; - }, - M : 'חודש', - MM : function (number) { - if (number === 2) { - return 'חודשיים'; - } - return number + ' חודשים'; - }, - y : 'שנה', - yy : function (number) { - if (number === 2) { - return 'שנתיים'; - } else if (number % 10 === 0 && number !== 10) { - return number + ' שנה'; - } - return number + ' שנים'; - } - } - }); - - return he; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/hi.js b/elgg_clean/bower_components/moment/locale/hi.js deleted file mode 100644 index f450c519..00000000 --- a/elgg_clean/bower_components/moment/locale/hi.js +++ /dev/null @@ -1,122 +0,0 @@ -//! moment.js locale configuration -//! locale : hindi (hi) -//! author : Mayank Singhal : https://github.com/mayanksinghal - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - var hi = moment.defineLocale('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm बजे', - LTS : 'A h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[कल] LT', - nextWeek : 'dddd, LT', - lastDay : '[कल] LT', - lastWeek : '[पिछले] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s में', - past : '%s पहले', - s : 'कुछ ही क्षण', - m : 'एक मिनट', - mm : '%d मिनट', - h : 'एक घंटा', - hh : '%d घंटे', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महीने', - MM : '%d महीने', - y : 'एक वर्ष', - yy : '%d वर्ष' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Hindi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. - meridiemParse: /रात|सुबह|दोपहर|शाम/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सुबह') { - return hour; - } else if (meridiem === 'दोपहर') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'शाम') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'रात'; - } else if (hour < 10) { - return 'सुबह'; - } else if (hour < 17) { - return 'दोपहर'; - } else if (hour < 20) { - return 'शाम'; - } else { - return 'रात'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - return hi; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/hr.js b/elgg_clean/bower_components/moment/locale/hr.js deleted file mode 100644 index 7b5b4d34..00000000 --- a/elgg_clean/bower_components/moment/locale/hr.js +++ /dev/null @@ -1,139 +0,0 @@ -//! moment.js locale configuration -//! locale : hrvatski (hr) -//! author : Bojan Marković : https://github.com/bmarkovic - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } - - var hr = moment.defineLocale('hr', { - months : 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'), - monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'dan', - dd : translate, - M : 'mjesec', - MM : translate, - y : 'godinu', - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return hr; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/hu.js b/elgg_clean/bower_components/moment/locale/hu.js deleted file mode 100644 index 5fc432d0..00000000 --- a/elgg_clean/bower_components/moment/locale/hu.js +++ /dev/null @@ -1,108 +0,0 @@ -//! moment.js locale configuration -//! locale : hungarian (hu) -//! author : Adam Brunner : https://github.com/adambrunner - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); - function translate(number, withoutSuffix, key, isFuture) { - var num = number, - suffix; - switch (key) { - case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); - } - return ''; - } - function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; - } - - var hu = moment.defineLocale('hu', { - months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), - monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), - weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), - weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), - weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY. MMMM D.', - LLL : 'YYYY. MMMM D. H:mm', - LLLL : 'YYYY. MMMM D., dddd H:mm' - }, - meridiemParse: /de|du/i, - isPM: function (input) { - return input.charAt(1).toLowerCase() === 'u'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower === true ? 'de' : 'DE'; - } else { - return isLower === true ? 'du' : 'DU'; - } - }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { - return week.call(this, true); - }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { - return week.call(this, false); - }, - sameElse : 'L' - }, - relativeTime : { - future : '%s múlva', - past : '%s', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return hu; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/hy-am.js b/elgg_clean/bower_components/moment/locale/hy-am.js deleted file mode 100644 index a14737a5..00000000 --- a/elgg_clean/bower_components/moment/locale/hy-am.js +++ /dev/null @@ -1,110 +0,0 @@ -//! moment.js locale configuration -//! locale : Armenian (hy-am) -//! author : Armendarabyan : https://github.com/armendarabyan - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), - 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function monthsShortCaseReplace(m, format) { - var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'); - return monthsShort[m.month()]; - } - function weekdaysCaseReplace(m, format) { - var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'); - return weekdays[m.day()]; - } - - var hy_am = moment.defineLocale('hy-am', { - months : monthsCaseReplace, - monthsShort : monthsShortCaseReplace, - weekdays : weekdaysCaseReplace, - weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY թ.', - LLL : 'D MMMM YYYY թ., HH:mm', - LLLL : 'dddd, D MMMM YYYY թ., HH:mm' - }, - calendar : { - sameDay: '[այսօր] LT', - nextDay: '[վաղը] LT', - lastDay: '[երեկ] LT', - nextWeek: function () { - return 'dddd [օրը ժամը] LT'; - }, - lastWeek: function () { - return '[անցած] dddd [օրը ժամը] LT'; - }, - sameElse: 'L' - }, - relativeTime : { - future : '%s հետո', - past : '%s առաջ', - s : 'մի քանի վայրկյան', - m : 'րոպե', - mm : '%d րոպե', - h : 'ժամ', - hh : '%d ժամ', - d : 'օր', - dd : '%d օր', - M : 'ամիս', - MM : '%d ամիս', - y : 'տարի', - yy : '%d տարի' - }, - meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, - isPM: function (input) { - return /^(ցերեկվա|երեկոյան)$/.test(input); - }, - meridiem : function (hour) { - if (hour < 4) { - return 'գիշերվա'; - } else if (hour < 12) { - return 'առավոտվա'; - } else if (hour < 17) { - return 'ցերեկվա'; - } else { - return 'երեկոյան'; - } - }, - ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, - ordinal: function (number, period) { - switch (period) { - case 'DDD': - case 'w': - case 'W': - case 'DDDo': - if (number === 1) { - return number + '-ին'; - } - return number + '-րդ'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return hy_am; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/id.js b/elgg_clean/bower_components/moment/locale/id.js deleted file mode 100644 index 2e7783b3..00000000 --- a/elgg_clean/bower_components/moment/locale/id.js +++ /dev/null @@ -1,82 +0,0 @@ -//! moment.js locale configuration -//! locale : Bahasa Indonesia (id) -//! author : Mohammad Satrio Utomo : https://github.com/tyok -//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var id = moment.defineLocale('id', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|siang|sore|malam/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'siang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sore' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'siang'; - } else if (hours < 19) { - return 'sore'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lalu', - s : 'beberapa detik', - m : 'semenit', - mm : '%d menit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return id; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/is.js b/elgg_clean/bower_components/moment/locale/is.js deleted file mode 100644 index 98afb058..00000000 --- a/elgg_clean/bower_components/moment/locale/is.js +++ /dev/null @@ -1,126 +0,0 @@ -//! moment.js locale configuration -//! locale : icelandic (is) -//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function plural(n) { - if (n % 100 === 11) { - return true; - } else if (n % 10 === 1) { - return false; - } - return true; - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (plural(number)) { - if (withoutSuffix) { - return result + 'dagar'; - } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (plural(number)) { - if (withoutSuffix) { - return result + 'mánuðir'; - } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); - } - } - - var is = moment.defineLocale('is', { - months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), - weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), - weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), - weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' - }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'eftir %s', - past : 'fyrir %s síðan', - s : translate, - m : translate, - mm : translate, - h : 'klukkustund', - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return is; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/it.js b/elgg_clean/bower_components/moment/locale/it.js deleted file mode 100644 index ea277e07..00000000 --- a/elgg_clean/bower_components/moment/locale/it.js +++ /dev/null @@ -1,69 +0,0 @@ -//! moment.js locale configuration -//! locale : italian (it) -//! author : Lorenzo : https://github.com/aliem -//! author: Mattia Larentis: https://github.com/nostalgiaz - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var it = moment.defineLocale('it', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'), - weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'), - weekdaysMin : 'D_L_Ma_Me_G_V_S'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[la scorsa] dddd [alle] LT'; - default: - return '[lo scorso] dddd [alle] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; - }, - past : '%s fa', - s : 'alcuni secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' - }, - ordinalParse : /\d{1,2}º/, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return it; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ja.js b/elgg_clean/bower_components/moment/locale/ja.js deleted file mode 100644 index a2ec885c..00000000 --- a/elgg_clean/bower_components/moment/locale/ja.js +++ /dev/null @@ -1,64 +0,0 @@ -//! moment.js locale configuration -//! locale : japanese (ja) -//! author : LI Long : https://github.com/baryon - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var ja = moment.defineLocale('ja', { - months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), - weekdaysShort : '日_月_火_水_木_金_土'.split('_'), - weekdaysMin : '日_月_火_水_木_金_土'.split('_'), - longDateFormat : { - LT : 'Ah時m分', - LTS : 'Ah時m分s秒', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日Ah時m分', - LLLL : 'YYYY年M月D日Ah時m分 dddd' - }, - meridiemParse: /午前|午後/i, - isPM : function (input) { - return input === '午後'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return '午前'; - } else { - return '午後'; - } - }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : '[来週]dddd LT', - lastDay : '[昨日] LT', - lastWeek : '[前週]dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s後', - past : '%s前', - s : '数秒', - m : '1分', - mm : '%d分', - h : '1時間', - hh : '%d時間', - d : '1日', - dd : '%d日', - M : '1ヶ月', - MM : '%dヶ月', - y : '1年', - yy : '%d年' - } - }); - - return ja; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/jv.js b/elgg_clean/bower_components/moment/locale/jv.js deleted file mode 100644 index e980ed44..00000000 --- a/elgg_clean/bower_components/moment/locale/jv.js +++ /dev/null @@ -1,82 +0,0 @@ -//! moment.js locale configuration -//! locale : Boso Jowo (jv) -//! author : Rony Lantip : https://github.com/lantip -//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var jv = moment.defineLocale('jv', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), - weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /enjing|siyang|sonten|ndalu/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'enjing') { - return hour; - } else if (meridiem === 'siyang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sonten' || meridiem === 'ndalu') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'enjing'; - } else if (hours < 15) { - return 'siyang'; - } else if (hours < 19) { - return 'sonten'; - } else { - return 'ndalu'; - } - }, - calendar : { - sameDay : '[Dinten puniko pukul] LT', - nextDay : '[Mbenjang pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kala wingi pukul] LT', - lastWeek : 'dddd [kepengker pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'wonten ing %s', - past : '%s ingkang kepengker', - s : 'sawetawis detik', - m : 'setunggal menit', - mm : '%d menit', - h : 'setunggal jam', - hh : '%d jam', - d : 'sedinten', - dd : '%d dinten', - M : 'sewulan', - MM : '%d wulan', - y : 'setaun', - yy : '%d taun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return jv; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ka.js b/elgg_clean/bower_components/moment/locale/ka.js deleted file mode 100644 index 4a28ae34..00000000 --- a/elgg_clean/bower_components/moment/locale/ka.js +++ /dev/null @@ -1,102 +0,0 @@ -//! moment.js locale configuration -//! locale : Georgian (ka) -//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, - nounCase = (/D[oD] *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') - }, - nounCase = (/(წინა|შემდეგ)/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; - } - - var ka = moment.defineLocale('ka', { - months : monthsCaseReplace, - monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays : weekdaysCaseReplace, - weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), - weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, 'ში') : - s + 'ში'; - }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { - return s.replace(/(ი|ე)$/, 'ის წინ'); - } - if ((/წელი/).test(s)) { - return s.replace(/წელი$/, 'წლის წინ'); - } - }, - s : 'რამდენიმე წამი', - m : 'წუთი', - mm : '%d წუთი', - h : 'საათი', - hh : '%d საათი', - d : 'დღე', - dd : '%d დღე', - M : 'თვე', - MM : '%d თვე', - y : 'წელი', - yy : '%d წელი' - }, - ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, - ordinal : function (number) { - if (number === 0) { - return number; - } - if (number === 1) { - return number + '-ლი'; - } - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { - return 'მე-' + number; - } - return number + '-ე'; - }, - week : { - dow : 1, - doy : 7 - } - }); - - return ka; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/km.js b/elgg_clean/bower_components/moment/locale/km.js deleted file mode 100644 index ec92f253..00000000 --- a/elgg_clean/bower_components/moment/locale/km.js +++ /dev/null @@ -1,57 +0,0 @@ -//! moment.js locale configuration -//! locale : khmer (km) -//! author : Kruy Vanna : https://github.com/kruyvanna - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var km = moment.defineLocale('km', { - months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), - monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), - weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS : 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[ថ្ងៃនៈ ម៉ោង] LT', - nextDay: '[ស្អែក ម៉ោង] LT', - nextWeek: 'dddd [ម៉ោង] LT', - lastDay: '[ម្សិលមិញ ម៉ោង] LT', - lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L' - }, - relativeTime: { - future: '%sទៀត', - past: '%sមុន', - s: 'ប៉ុន្មានវិនាទី', - m: 'មួយនាទី', - mm: '%d នាទី', - h: 'មួយម៉ោង', - hh: '%d ម៉ោង', - d: 'មួយថ្ងៃ', - dd: '%d ថ្ងៃ', - M: 'មួយខែ', - MM: '%d ខែ', - y: 'មួយឆ្នាំ', - yy: '%d ឆ្នាំ' - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return km; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ko.js b/elgg_clean/bower_components/moment/locale/ko.js deleted file mode 100644 index 11badbb3..00000000 --- a/elgg_clean/bower_components/moment/locale/ko.js +++ /dev/null @@ -1,67 +0,0 @@ -//! moment.js locale configuration -//! locale : korean (ko) -//! -//! authors -//! -//! - Kyungwook, Park : https://github.com/kyungw00k -//! - Jeeeyul Lee <jeeeyul@gmail.com> - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var ko = moment.defineLocale('ko', { - months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), - weekdaysShort : '일_월_화_수_목_금_토'.split('_'), - weekdaysMin : '일_월_화_수_목_금_토'.split('_'), - longDateFormat : { - LT : 'A h시 m분', - LTS : 'A h시 m분 s초', - L : 'YYYY.MM.DD', - LL : 'YYYY년 MMMM D일', - LLL : 'YYYY년 MMMM D일 A h시 m분', - LLLL : 'YYYY년 MMMM D일 dddd A h시 m분' - }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s 후', - past : '%s 전', - s : '몇초', - ss : '%d초', - m : '일분', - mm : '%d분', - h : '한시간', - hh : '%d시간', - d : '하루', - dd : '%d일', - M : '한달', - MM : '%d달', - y : '일년', - yy : '%d년' - }, - ordinalParse : /\d{1,2}일/, - ordinal : '%d일', - meridiemParse : /오전|오후/, - isPM : function (token) { - return token === '오후'; - }, - meridiem : function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; - } - }); - - return ko; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/lb.js b/elgg_clean/bower_components/moment/locale/lb.js deleted file mode 100644 index fefe83f6..00000000 --- a/elgg_clean/bower_components/moment/locale/lb.js +++ /dev/null @@ -1,133 +0,0 @@ -//! moment.js locale configuration -//! locale : Luxembourgish (lb) -//! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eng Minutt', 'enger Minutt'], - 'h': ['eng Stonn', 'enger Stonn'], - 'd': ['een Dag', 'engem Dag'], - 'M': ['ee Mount', 'engem Mount'], - 'y': ['ee Joer', 'engem Joer'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - function processFutureTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'a ' + string; - } - return 'an ' + string; - } - function processPastTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'viru ' + string; - } - return 'virun ' + string; - } - /** - * Returns true if the word before the given number loses the '-n' ending. - * e.g. 'an 10 Deeg' but 'a 5 Deeg' - * - * @param number {integer} - * @returns {boolean} - */ - function eifelerRegelAppliesToNumber(number) { - number = parseInt(number, 10); - if (isNaN(number)) { - return false; - } - if (number < 0) { - // Negative Number --> always true - return true; - } else if (number < 10) { - // Only 1 digit - if (4 <= number && number <= 7) { - return true; - } - return false; - } else if (number < 100) { - // 2 digits - var lastDigit = number % 10, firstDigit = number / 10; - if (lastDigit === 0) { - return eifelerRegelAppliesToNumber(firstDigit); - } - return eifelerRegelAppliesToNumber(lastDigit); - } else if (number < 10000) { - // 3 or 4 digits --> recursively check first digit - while (number >= 10) { - number = number / 10; - } - return eifelerRegelAppliesToNumber(number); - } else { - // Anything larger than 4 digits: recursively check first n-3 digits - number = number / 1000; - return eifelerRegelAppliesToNumber(number); - } - } - - var lb = moment.defineLocale('lb', { - months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), - weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'H:mm [Auer]', - LTS: 'H:mm:ss [Auer]', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm [Auer]', - LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' - }, - calendar: { - sameDay: '[Haut um] LT', - sameElse: 'L', - nextDay: '[Muer um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gëschter um] LT', - lastWeek: function () { - // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule - switch (this.day()) { - case 2: - case 4: - return '[Leschten] dddd [um] LT'; - default: - return '[Leschte] dddd [um] LT'; - } - } - }, - relativeTime : { - future : processFutureTime, - past : processPastTime, - s : 'e puer Sekonnen', - m : processRelativeTime, - mm : '%d Minutten', - h : processRelativeTime, - hh : '%d Stonnen', - d : processRelativeTime, - dd : '%d Deeg', - M : processRelativeTime, - MM : '%d Méint', - y : processRelativeTime, - yy : '%d Joer' - }, - ordinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return lb; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/lt.js b/elgg_clean/bower_components/moment/locale/lt.js deleted file mode 100644 index 303b8504..00000000 --- a/elgg_clean/bower_components/moment/locale/lt.js +++ /dev/null @@ -1,124 +0,0 @@ -//! moment.js locale configuration -//! locale : Lithuanian (lt) -//! author : Mindaugas Mozūras : https://github.com/mmozuras - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var units = { - 'm' : 'minutė_minutės_minutę', - 'mm': 'minutės_minučių_minutes', - 'h' : 'valanda_valandos_valandą', - 'hh': 'valandos_valandų_valandas', - 'd' : 'diena_dienos_dieną', - 'dd': 'dienos_dienų_dienas', - 'M' : 'mėnuo_mėnesio_mėnesį', - 'MM': 'mėnesiai_mėnesių_mėnesius', - 'y' : 'metai_metų_metus', - 'yy': 'metai_metų_metus' - }, - weekDays = 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'); - function translateSeconds(number, withoutSuffix, key, isFuture) { - if (withoutSuffix) { - return 'kelios sekundės'; - } else { - return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; - } - } - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), - 'accusative': 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); - } - function special(number) { - return number % 10 === 0 || (number > 10 && number < 20); - } - function forms(key) { - return units[key].split('_'); - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - if (number === 1) { - return result + translateSingular(number, withoutSuffix, key[0], isFuture); - } else if (withoutSuffix) { - return result + (special(number) ? forms(key)[1] : forms(key)[0]); - } else { - if (isFuture) { - return result + forms(key)[1]; - } else { - return result + (special(number) ? forms(key)[1] : forms(key)[2]); - } - } - } - function relativeWeekDay(moment, format) { - var nominative = format.indexOf('dddd HH:mm') === -1, - weekDay = weekDays[moment.day()]; - return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + 'į'; - } - - var lt = moment.defineLocale('lt', { - months : monthsCaseReplace, - monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays : relativeWeekDay, - weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), - weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY [m.] MMMM D [d.]', - LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', - l : 'YYYY-MM-DD', - ll : 'YYYY [m.] MMMM D [d.]', - lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' - }, - calendar : { - sameDay : '[Šiandien] LT', - nextDay : '[Rytoj] LT', - nextWeek : 'dddd LT', - lastDay : '[Vakar] LT', - lastWeek : '[Praėjusį] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : 'po %s', - past : 'prieš %s', - s : translateSeconds, - m : translateSingular, - mm : translate, - h : translateSingular, - hh : translate, - d : translateSingular, - dd : translate, - M : translateSingular, - MM : translate, - y : translateSingular, - yy : translate - }, - ordinalParse: /\d{1,2}-oji/, - ordinal : function (number) { - return number + '-oji'; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return lt; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/lv.js b/elgg_clean/bower_components/moment/locale/lv.js deleted file mode 100644 index 62f80910..00000000 --- a/elgg_clean/bower_components/moment/locale/lv.js +++ /dev/null @@ -1,95 +0,0 @@ -//! moment.js locale configuration -//! locale : latvian (lv) -//! author : Kristaps Karlsons : https://github.com/skakri -//! author : Jānis Elmeris : https://github.com/JanisE - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var units = { - 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'h': 'stundas_stundām_stunda_stundas'.split('_'), - 'hh': 'stundas_stundām_stunda_stundas'.split('_'), - 'd': 'dienas_dienām_diena_dienas'.split('_'), - 'dd': 'dienas_dienām_diena_dienas'.split('_'), - 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'y': 'gada_gadiem_gads_gadi'.split('_'), - 'yy': 'gada_gadiem_gads_gadi'.split('_') - }; - /** - * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. - */ - function format(forms, number, withoutSuffix) { - if (withoutSuffix) { - // E.g. "21 minūte", "3 minūtes". - return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; - } else { - // E.g. "21 minūtes" as in "pēc 21 minūtes". - // E.g. "3 minūtēm" as in "pēc 3 minūtēm". - return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; - } - } - function relativeTimeWithPlural(number, withoutSuffix, key) { - return number + ' ' + format(units[key], number, withoutSuffix); - } - function relativeTimeWithSingular(number, withoutSuffix, key) { - return format(units[key], number, withoutSuffix); - } - function relativeSeconds(number, withoutSuffix) { - return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; - } - - var lv = moment.defineLocale('lv', { - months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), - weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY.', - LL : 'YYYY. [gada] D. MMMM', - LLL : 'YYYY. [gada] D. MMMM, HH:mm', - LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' - }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'pēc %s', - past : 'pirms %s', - s : relativeSeconds, - m : relativeTimeWithSingular, - mm : relativeTimeWithPlural, - h : relativeTimeWithSingular, - hh : relativeTimeWithPlural, - d : relativeTimeWithSingular, - dd : relativeTimeWithPlural, - M : relativeTimeWithSingular, - MM : relativeTimeWithPlural, - y : relativeTimeWithSingular, - yy : relativeTimeWithPlural - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return lv; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/me.js b/elgg_clean/bower_components/moment/locale/me.js deleted file mode 100644 index ea7ec917..00000000 --- a/elgg_clean/bower_components/moment/locale/me.js +++ /dev/null @@ -1,108 +0,0 @@ -//! moment.js locale configuration -//! locale : Montenegrin (me) -//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var translator = { - words: { //Different grammatical cases - m: ['jedan minut', 'jednog minuta'], - mm: ['minut', 'minuta', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mjesec', 'mjeseca', 'mjeseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } - } - }; - - var me = moment.defineLocale('me', { - months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], - monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], - weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sjutra u] LT', - - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedjelje] [u] LT', - '[prošlog] [ponedjeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srijede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'nekoliko sekundi', - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'dan', - dd : translator.translate, - M : 'mjesec', - MM : translator.translate, - y : 'godinu', - yy : translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return me; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/mk.js b/elgg_clean/bower_components/moment/locale/mk.js deleted file mode 100644 index b1f1e10a..00000000 --- a/elgg_clean/bower_components/moment/locale/mk.js +++ /dev/null @@ -1,89 +0,0 @@ -//! moment.js locale configuration -//! locale : macedonian (mk) -//! author : Borislav Mickov : https://github.com/B0k0 - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var mk = moment.defineLocale('mk', { - months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), - weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), - weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Денес во] LT', - nextDay : '[Утре во] LT', - nextWeek : 'dddd [во] LT', - lastDay : '[Вчера во] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[Во изминатата] dddd [во] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Во изминатиот] dddd [во] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'после %s', - past : 'пред %s', - s : 'неколку секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дена', - M : 'месец', - MM : '%d месеци', - y : 'година', - yy : '%d години' - }, - ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return mk; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ml.js b/elgg_clean/bower_components/moment/locale/ml.js deleted file mode 100644 index c7c93ca5..00000000 --- a/elgg_clean/bower_components/moment/locale/ml.js +++ /dev/null @@ -1,70 +0,0 @@ -//! moment.js locale configuration -//! locale : malayalam (ml) -//! author : Floyd Pink : https://github.com/floydpink - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var ml = moment.defineLocale('ml', { - months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), - monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), - weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), - weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), - weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), - longDateFormat : { - LT : 'A h:mm -നു', - LTS : 'A h:mm:ss -നു', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm -നു', - LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' - }, - calendar : { - sameDay : '[ഇന്ന്] LT', - nextDay : '[നാളെ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ഇന്നലെ] LT', - lastWeek : '[കഴിഞ്ഞ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s കഴിഞ്ഞ്', - past : '%s മുൻപ്', - s : 'അൽപ നിമിഷങ്ങൾ', - m : 'ഒരു മിനിറ്റ്', - mm : '%d മിനിറ്റ്', - h : 'ഒരു മണിക്കൂർ', - hh : '%d മണിക്കൂർ', - d : 'ഒരു ദിവസം', - dd : '%d ദിവസം', - M : 'ഒരു മാസം', - MM : '%d മാസം', - y : 'ഒരു വർഷം', - yy : '%d വർഷം' - }, - meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, - isPM : function (input) { - return /^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'രാത്രി'; - } else if (hour < 12) { - return 'രാവിലെ'; - } else if (hour < 17) { - return 'ഉച്ച കഴിഞ്ഞ്'; - } else if (hour < 20) { - return 'വൈകുന്നേരം'; - } else { - return 'രാത്രി'; - } - } - }); - - return ml; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/mr.js b/elgg_clean/bower_components/moment/locale/mr.js deleted file mode 100644 index 960d2f54..00000000 --- a/elgg_clean/bower_components/moment/locale/mr.js +++ /dev/null @@ -1,120 +0,0 @@ -//! moment.js locale configuration -//! locale : Marathi (mr) -//! author : Harshad Kale : https://github.com/kalehv - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - var mr = moment.defineLocale('mr', { - months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), - weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm वाजता', - LTS : 'A h:mm:ss वाजता', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm वाजता', - LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[उद्या] LT', - nextWeek : 'dddd, LT', - lastDay : '[काल] LT', - lastWeek: '[मागील] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s नंतर', - past : '%s पूर्वी', - s : 'सेकंद', - m: 'एक मिनिट', - mm: '%d मिनिटे', - h : 'एक तास', - hh : '%d तास', - d : 'एक दिवस', - dd : '%d दिवस', - M : 'एक महिना', - MM : '%d महिने', - y : 'एक वर्ष', - yy : '%d वर्षे' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात्री') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सकाळी') { - return hour; - } else if (meridiem === 'दुपारी') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'सायंकाळी') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'रात्री'; - } else if (hour < 10) { - return 'सकाळी'; - } else if (hour < 17) { - return 'दुपारी'; - } else if (hour < 20) { - return 'सायंकाळी'; - } else { - return 'रात्री'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - return mr; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ms-my.js b/elgg_clean/bower_components/moment/locale/ms-my.js deleted file mode 100644 index 9c6fb56e..00000000 --- a/elgg_clean/bower_components/moment/locale/ms-my.js +++ /dev/null @@ -1,81 +0,0 @@ -//! moment.js locale configuration -//! locale : Bahasa Malaysia (ms-MY) -//! author : Weldan Jamili : https://github.com/weldan - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var ms_my = moment.defineLocale('ms-my', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return ms_my; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ms.js b/elgg_clean/bower_components/moment/locale/ms.js deleted file mode 100644 index cd710dcb..00000000 --- a/elgg_clean/bower_components/moment/locale/ms.js +++ /dev/null @@ -1,81 +0,0 @@ -//! moment.js locale configuration -//! locale : Bahasa Malaysia (ms-MY) -//! author : Weldan Jamili : https://github.com/weldan - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var ms = moment.defineLocale('ms', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return ms; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/my.js b/elgg_clean/bower_components/moment/locale/my.js deleted file mode 100644 index 72f65b5c..00000000 --- a/elgg_clean/bower_components/moment/locale/my.js +++ /dev/null @@ -1,92 +0,0 @@ -//! moment.js locale configuration -//! locale : Burmese (my) -//! author : Squar team, mysquar.com - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var symbolMap = { - '1': '၁', - '2': '၂', - '3': '၃', - '4': '၄', - '5': '၅', - '6': '၆', - '7': '၇', - '8': '၈', - '9': '၉', - '0': '၀' - }, numberMap = { - '၁': '1', - '၂': '2', - '၃': '3', - '၄': '4', - '၅': '5', - '၆': '6', - '၇': '7', - '၈': '8', - '၉': '9', - '၀': '0' - }; - - var my = moment.defineLocale('my', { - months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), - monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), - weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), - weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[ယနေ.] LT [မှာ]', - nextDay: '[မနက်ဖြန်] LT [မှာ]', - nextWeek: 'dddd LT [မှာ]', - lastDay: '[မနေ.က] LT [မှာ]', - lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', - sameElse: 'L' - }, - relativeTime: { - future: 'လာမည့် %s မှာ', - past: 'လွန်ခဲ့သော %s က', - s: 'စက္ကန်.အနည်းငယ်', - m: 'တစ်မိနစ်', - mm: '%d မိနစ်', - h: 'တစ်နာရီ', - hh: '%d နာရီ', - d: 'တစ်ရက်', - dd: '%d ရက်', - M: 'တစ်လ', - MM: '%d လ', - y: 'တစ်နှစ်', - yy: '%d နှစ်' - }, - preparse: function (string) { - return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 1st is the first week of the year. - } - }); - - return my; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/nb.js b/elgg_clean/bower_components/moment/locale/nb.js deleted file mode 100644 index 966619cd..00000000 --- a/elgg_clean/bower_components/moment/locale/nb.js +++ /dev/null @@ -1,60 +0,0 @@ -//! moment.js locale configuration -//! locale : norwegian bokmål (nb) -//! authors : Espen Hovlandsdal : https://github.com/rexxars -//! Sigurd Gartmann : https://github.com/sigurdga - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var nb = moment.defineLocale('nb', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tirs_ons_tors_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'H.mm', - LTS : 'H.mm.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H.mm', - LLLL : 'dddd D. MMMM YYYY [kl.] H.mm' - }, - calendar : { - sameDay: '[i dag kl.] LT', - nextDay: '[i morgen kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[i går kl.] LT', - lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'for %s siden', - s : 'noen sekunder', - m : 'ett minutt', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dager', - M : 'en måned', - MM : '%d måneder', - y : 'ett år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return nb; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ne.js b/elgg_clean/bower_components/moment/locale/ne.js deleted file mode 100644 index 257acf9b..00000000 --- a/elgg_clean/bower_components/moment/locale/ne.js +++ /dev/null @@ -1,122 +0,0 @@ -//! moment.js locale configuration -//! locale : nepali/nepalese -//! author : suvash : https://github.com/suvash - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - var ne = moment.defineLocale('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split('_'), - longDateFormat : { - LT : 'Aको h:mm बजे', - LTS : 'Aको h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, Aको h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /राती|बिहान|दिउँसो|बेलुका|साँझ|राती/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'राती') { - return hour < 3 ? hour : hour + 12; - } else if (meridiem === 'बिहान') { - return hour; - } else if (meridiem === 'दिउँसो') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'बेलुका' || meridiem === 'साँझ') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 3) { - return 'राती'; - } else if (hour < 10) { - return 'बिहान'; - } else if (hour < 15) { - return 'दिउँसो'; - } else if (hour < 18) { - return 'बेलुका'; - } else if (hour < 20) { - return 'साँझ'; - } else { - return 'राती'; - } - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[भोली] LT', - nextWeek : '[आउँदो] dddd[,] LT', - lastDay : '[हिजो] LT', - lastWeek : '[गएको] dddd[,] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%sमा', - past : '%s अगाडी', - s : 'केही समय', - m : 'एक मिनेट', - mm : '%d मिनेट', - h : 'एक घण्टा', - hh : '%d घण्टा', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महिना', - MM : '%d महिना', - y : 'एक बर्ष', - yy : '%d बर्ष' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return ne; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/nl.js b/elgg_clean/bower_components/moment/locale/nl.js deleted file mode 100644 index 60a3c438..00000000 --- a/elgg_clean/bower_components/moment/locale/nl.js +++ /dev/null @@ -1,70 +0,0 @@ -//! moment.js locale configuration -//! locale : dutch (nl) -//! author : Joris Röling : https://github.com/jjupiter - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - - var nl = moment.defineLocale('nl', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return nl; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/nn.js b/elgg_clean/bower_components/moment/locale/nn.js deleted file mode 100644 index 83d301a1..00000000 --- a/elgg_clean/bower_components/moment/locale/nn.js +++ /dev/null @@ -1,59 +0,0 @@ -//! moment.js locale configuration -//! locale : norwegian nynorsk (nn) -//! author : https://github.com/mechuwind - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var nn = moment.defineLocale('nn', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), - weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), - weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[I dag klokka] LT', - nextDay: '[I morgon klokka] LT', - nextWeek: 'dddd [klokka] LT', - lastDay: '[I går klokka] LT', - lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'for %s sidan', - s : 'nokre sekund', - m : 'eit minutt', - mm : '%d minutt', - h : 'ein time', - hh : '%d timar', - d : 'ein dag', - dd : '%d dagar', - M : 'ein månad', - MM : '%d månader', - y : 'eit år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return nn; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/pl.js b/elgg_clean/bower_components/moment/locale/pl.js deleted file mode 100644 index 9c65c1f8..00000000 --- a/elgg_clean/bower_components/moment/locale/pl.js +++ /dev/null @@ -1,104 +0,0 @@ -//! moment.js locale configuration -//! locale : polish (pl) -//! author : Rafal Hirsz : https://github.com/evoL - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), - monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); - function plural(n) { - return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); - } - function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (plural(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (plural(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (plural(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (plural(number) ? 'lata' : 'lat'); - } - } - - var pl = moment.defineLocale('pl', { - months : function (momentToFormat, format) { - if (format === '') { - // Hack: if format empty we know this is used to generate - // RegExp by moment. Give then back both valid forms of months - // in RegExp ready format. - return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; - } else if (/D MMMM/.test(format)) { - return monthsSubjective[momentToFormat.month()]; - } else { - return monthsNominative[momentToFormat.month()]; - } - }, - monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), - weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), - weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'), - weekdaysMin : 'N_Pn_Wt_Śr_Cz_Pt_So'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Dziś o] LT', - nextDay: '[Jutro o] LT', - nextWeek: '[W] dddd [o] LT', - lastDay: '[Wczoraj o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : '%s temu', - s : 'kilka sekund', - m : translate, - mm : translate, - h : translate, - hh : translate, - d : '1 dzień', - dd : '%d dni', - M : 'miesiąc', - MM : translate, - y : 'rok', - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return pl; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/pt-br.js b/elgg_clean/bower_components/moment/locale/pt-br.js deleted file mode 100644 index d2c9351b..00000000 --- a/elgg_clean/bower_components/moment/locale/pt-br.js +++ /dev/null @@ -1,59 +0,0 @@ -//! moment.js locale configuration -//! locale : brazilian portuguese (pt-br) -//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var pt_br = moment.defineLocale('pt-br', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : '%s atrás', - s : 'poucos segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - ordinalParse: /\d{1,2}º/, - ordinal : '%dº' - }); - - return pt_br; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/pt.js b/elgg_clean/bower_components/moment/locale/pt.js deleted file mode 100644 index 6487bc98..00000000 --- a/elgg_clean/bower_components/moment/locale/pt.js +++ /dev/null @@ -1,63 +0,0 @@ -//! moment.js locale configuration -//! locale : portuguese (pt) -//! author : Jefferson : https://github.com/jalex79 - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var pt = moment.defineLocale('pt', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - ordinalParse: /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return pt; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ro.js b/elgg_clean/bower_components/moment/locale/ro.js deleted file mode 100644 index 92a89d1f..00000000 --- a/elgg_clean/bower_components/moment/locale/ro.js +++ /dev/null @@ -1,73 +0,0 @@ -//! moment.js locale configuration -//! locale : romanian (ro) -//! author : Vlad Gurdiga : https://github.com/gurdiga -//! author : Valentin Agachi : https://github.com/avaly - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'minute', - 'hh': 'ore', - 'dd': 'zile', - 'MM': 'luni', - 'yy': 'ani' - }, - separator = ' '; - if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { - separator = ' de '; - } - return number + separator + format[key]; - } - - var ro = moment.defineLocale('ro', { - months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), - monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), - weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), - weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), - weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[azi la] LT', - nextDay: '[mâine la] LT', - nextWeek: 'dddd [la] LT', - lastDay: '[ieri la] LT', - lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'peste %s', - past : '%s în urmă', - s : 'câteva secunde', - m : 'un minut', - mm : relativeTimeWithPlural, - h : 'o oră', - hh : relativeTimeWithPlural, - d : 'o zi', - dd : relativeTimeWithPlural, - M : 'o lună', - MM : relativeTimeWithPlural, - y : 'un an', - yy : relativeTimeWithPlural - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return ro; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ru.js b/elgg_clean/bower_components/moment/locale/ru.js deleted file mode 100644 index 14e67c62..00000000 --- a/elgg_clean/bower_components/moment/locale/ru.js +++ /dev/null @@ -1,163 +0,0 @@ -//! moment.js locale configuration -//! locale : russian (ru) -//! author : Viktorminator : https://github.com/Viktorminator -//! Author : Menelion Elensúle : https://github.com/Oire - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' - }; - if (key === 'm') { - return withoutSuffix ? 'минута' : 'минуту'; - } - else { - return number + ' ' + plural(format[key], +number); - } - } - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function monthsShortCaseReplace(m, format) { - var monthsShort = { - 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return monthsShort[nounCase][m.month()]; - } - function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') - }, - nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; - } - - var ru = moment.defineLocale('ru', { - months : monthsCaseReplace, - monthsShort : monthsShortCaseReplace, - weekdays : weekdaysCaseReplace, - weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., HH:mm', - LLLL : 'dddd, D MMMM YYYY г., HH:mm' - }, - calendar : { - sameDay: '[Сегодня в] LT', - nextDay: '[Завтра в] LT', - lastDay: '[Вчера в] LT', - nextWeek: function () { - return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; - }, - lastWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В прошлое] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd [в] LT'; - } else { - return '[В] dddd [в] LT'; - } - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'через %s', - past : '%s назад', - s : 'несколько секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : 'час', - hh : relativeTimeWithPlural, - d : 'день', - dd : relativeTimeWithPlural, - M : 'месяц', - MM : relativeTimeWithPlural, - y : 'год', - yy : relativeTimeWithPlural - }, - meridiemParse: /ночи|утра|дня|вечера/i, - isPM : function (input) { - return /^(дня|вечера)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночи'; - } else if (hour < 12) { - return 'утра'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечера'; - } - }, - ordinalParse: /\d{1,2}-(й|го|я)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return ru; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/si.js b/elgg_clean/bower_components/moment/locale/si.js deleted file mode 100644 index 40e45919..00000000 --- a/elgg_clean/bower_components/moment/locale/si.js +++ /dev/null @@ -1,64 +0,0 @@ -//! moment.js locale configuration -//! locale : Sinhalese (si) -//! author : Sampath Sitinamaluwa : https://github.com/sampathsris - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var si = moment.defineLocale('si', { - months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), - monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), - weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), - weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'), - weekdaysMin : 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'), - longDateFormat : { - LT : 'a h:mm', - LTS : 'a h:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY MMMM D', - LLL : 'YYYY MMMM D, a h:mm', - LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' - }, - calendar : { - sameDay : '[අද] LT[ට]', - nextDay : '[හෙට] LT[ට]', - nextWeek : 'dddd LT[ට]', - lastDay : '[ඊයේ] LT[ට]', - lastWeek : '[පසුගිය] dddd LT[ට]', - sameElse : 'L' - }, - relativeTime : { - future : '%sකින්', - past : '%sකට පෙර', - s : 'තත්පර කිහිපය', - m : 'මිනිත්තුව', - mm : 'මිනිත්තු %d', - h : 'පැය', - hh : 'පැය %d', - d : 'දිනය', - dd : 'දින %d', - M : 'මාසය', - MM : 'මාස %d', - y : 'වසර', - yy : 'වසර %d' - }, - ordinalParse: /\d{1,2} වැනි/, - ordinal : function (number) { - return number + ' වැනි'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'ප.ව.' : 'පස් වරු'; - } else { - return isLower ? 'පෙ.ව.' : 'පෙර වරු'; - } - } - }); - - return si; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/sk.js b/elgg_clean/bower_components/moment/locale/sk.js deleted file mode 100644 index d3084af8..00000000 --- a/elgg_clean/bower_components/moment/locale/sk.js +++ /dev/null @@ -1,157 +0,0 @@ -//! moment.js locale configuration -//! locale : slovak (sk) -//! author : Martin Minka : https://github.com/k2s -//! based on work of petrbela : https://github.com/petrbela - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), - monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); - function plural(n) { - return (n > 1) && (n < 5); - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } - break; - } - } - - var sk = moment.defineLocale('sk', { - months : months, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), - weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), - weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), - weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[dnes o] LT', - nextDay: '[zajtra o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo štvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; - } - }, - lastDay: '[včera o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pred %s', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return sk; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/sl.js b/elgg_clean/bower_components/moment/locale/sl.js deleted file mode 100644 index a55062f4..00000000 --- a/elgg_clean/bower_components/moment/locale/sl.js +++ /dev/null @@ -1,159 +0,0 @@ -//! moment.js locale configuration -//! locale : slovenian (sl) -//! author : Robert Sedovšek : https://github.com/sedovsek - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += withoutSuffix ? 'minuta' : 'minuto'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'minute' : 'minutami'; - } else { - result += withoutSuffix || isFuture ? 'minut' : 'minutami'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += withoutSuffix ? 'ura' : 'uro'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'uri' : 'urama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'ure' : 'urami'; - } else { - result += withoutSuffix || isFuture ? 'ur' : 'urami'; - } - return result; - case 'd': - return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; - case 'dd': - if (number === 1) { - result += withoutSuffix || isFuture ? 'dan' : 'dnem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; - } else { - result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; - } - return result; - case 'M': - return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; - case 'MM': - if (number === 1) { - result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; - } else { - result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; - } - return result; - case 'y': - return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; - case 'yy': - if (number === 1) { - result += withoutSuffix || isFuture ? 'leto' : 'letom'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'leti' : 'letoma'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'leta' : 'leti'; - } else { - result += withoutSuffix || isFuture ? 'let' : 'leti'; - } - return result; - } - } - - var sl = moment.defineLocale('sl', { - months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), - weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), - weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), - weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', - - nextWeek : function () { - switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - return '[prejšnjo] [nedeljo] [ob] LT'; - case 3: - return '[prejšnjo] [sredo] [ob] LT'; - case 6: - return '[prejšnjo] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'čez %s', - past : 'pred %s', - s : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return sl; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/sq.js b/elgg_clean/bower_components/moment/locale/sq.js deleted file mode 100644 index d5fcdb51..00000000 --- a/elgg_clean/bower_components/moment/locale/sq.js +++ /dev/null @@ -1,68 +0,0 @@ -//! moment.js locale configuration -//! locale : Albanian (sq) -//! author : Flakërim Ismani : https://github.com/flakerimi -//! author: Menelion Elensúle: https://github.com/Oire (tests) -//! author : Oerd Cukalla : https://github.com/oerd (fixes) - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var sq = moment.defineLocale('sq', { - months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), - monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), - weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), - weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), - weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), - meridiemParse: /PD|MD/, - isPM: function (input) { - return input.charAt(0) === 'M'; - }, - meridiem : function (hours, minutes, isLower) { - return hours < 12 ? 'PD' : 'MD'; - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Sot në] LT', - nextDay : '[Nesër në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'në %s', - past : '%s më parë', - s : 'disa sekonda', - m : 'një minutë', - mm : '%d minuta', - h : 'një orë', - hh : '%d orë', - d : 'një ditë', - dd : '%d ditë', - M : 'një muaj', - MM : '%d muaj', - y : 'një vit', - yy : '%d vite' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return sq; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/sr-cyrl.js b/elgg_clean/bower_components/moment/locale/sr-cyrl.js deleted file mode 100644 index a9c5c307..00000000 --- a/elgg_clean/bower_components/moment/locale/sr-cyrl.js +++ /dev/null @@ -1,107 +0,0 @@ -//! moment.js locale configuration -//! locale : Serbian-cyrillic (sr-cyrl) -//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var translator = { - words: { //Different grammatical cases - m: ['један минут', 'једне минуте'], - mm: ['минут', 'минуте', 'минута'], - h: ['један сат', 'једног сата'], - hh: ['сат', 'сата', 'сати'], - dd: ['дан', 'дана', 'дана'], - MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } - } - }; - - var sr_cyrl = moment.defineLocale('sr-cyrl', { - months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'], - monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'], - weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'], - weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[данас у] LT', - nextDay: '[сутра у] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; - } - }, - lastDay : '[јуче у] LT', - lastWeek : function () { - var lastWeekDays = [ - '[прошле] [недеље] [у] LT', - '[прошлог] [понедељка] [у] LT', - '[прошлог] [уторка] [у] LT', - '[прошле] [среде] [у] LT', - '[прошлог] [четвртка] [у] LT', - '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'за %s', - past : 'пре %s', - s : 'неколико секунди', - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'дан', - dd : translator.translate, - M : 'месец', - MM : translator.translate, - y : 'годину', - yy : translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return sr_cyrl; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/sr.js b/elgg_clean/bower_components/moment/locale/sr.js deleted file mode 100644 index 2d0125a2..00000000 --- a/elgg_clean/bower_components/moment/locale/sr.js +++ /dev/null @@ -1,107 +0,0 @@ -//! moment.js locale configuration -//! locale : Serbian-latin (sr) -//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var translator = { - words: { //Different grammatical cases - m: ['jedan minut', 'jedne minute'], - mm: ['minut', 'minute', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } - } - }; - - var sr = moment.defineLocale('sr', { - months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], - monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], - weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedelje] [u] LT', - '[prošlog] [ponedeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pre %s', - s : 'nekoliko sekundi', - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'dan', - dd : translator.translate, - M : 'mesec', - MM : translator.translate, - y : 'godinu', - yy : translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return sr; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/sv.js b/elgg_clean/bower_components/moment/locale/sv.js deleted file mode 100644 index 3f6238ed..00000000 --- a/elgg_clean/bower_components/moment/locale/sv.js +++ /dev/null @@ -1,66 +0,0 @@ -//! moment.js locale configuration -//! locale : swedish (sv) -//! author : Jens Alm : https://github.com/ulmus - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var sv = moment.defineLocale('sv', { - months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), - weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), - weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Idag] LT', - nextDay: '[Imorgon] LT', - lastDay: '[Igår] LT', - nextWeek: '[På] dddd LT', - lastWeek: '[I] dddd[s] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'för %s sedan', - s : 'några sekunder', - m : 'en minut', - mm : '%d minuter', - h : 'en timme', - hh : '%d timmar', - d : 'en dag', - dd : '%d dagar', - M : 'en månad', - MM : '%d månader', - y : 'ett år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}(e|a)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return sv; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/ta.js b/elgg_clean/bower_components/moment/locale/ta.js deleted file mode 100644 index 2c67c7d6..00000000 --- a/elgg_clean/bower_components/moment/locale/ta.js +++ /dev/null @@ -1,94 +0,0 @@ -//! moment.js locale configuration -//! locale : tamil (ta) -//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var ta = moment.defineLocale('ta', { - months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), - weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), - weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, HH:mm', - LLLL : 'dddd, D MMMM YYYY, HH:mm' - }, - calendar : { - sameDay : '[இன்று] LT', - nextDay : '[நாளை] LT', - nextWeek : 'dddd, LT', - lastDay : '[நேற்று] LT', - lastWeek : '[கடந்த வாரம்] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s இல்', - past : '%s முன்', - s : 'ஒரு சில விநாடிகள்', - m : 'ஒரு நிமிடம்', - mm : '%d நிமிடங்கள்', - h : 'ஒரு மணி நேரம்', - hh : '%d மணி நேரம்', - d : 'ஒரு நாள்', - dd : '%d நாட்கள்', - M : 'ஒரு மாதம்', - MM : '%d மாதங்கள்', - y : 'ஒரு வருடம்', - yy : '%d ஆண்டுகள்' - }, - ordinalParse: /\d{1,2}வது/, - ordinal : function (number) { - return number + 'வது'; - }, - // refer http://ta.wikipedia.org/s/1er1 - meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, - meridiem : function (hour, minute, isLower) { - if (hour < 2) { - return ' யாமம்'; - } else if (hour < 6) { - return ' வைகறை'; // வைகறை - } else if (hour < 10) { - return ' காலை'; // காலை - } else if (hour < 14) { - return ' நண்பகல்'; // நண்பகல் - } else if (hour < 18) { - return ' எற்பாடு'; // எற்பாடு - } else if (hour < 22) { - return ' மாலை'; // மாலை - } else { - return ' யாமம்'; - } - }, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'யாமம்') { - return hour < 2 ? hour : hour + 12; - } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { - return hour; - } else if (meridiem === 'நண்பகல்') { - return hour >= 10 ? hour : hour + 12; - } else { - return hour + 12; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - return ta; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/th.js b/elgg_clean/bower_components/moment/locale/th.js deleted file mode 100644 index 7805ebb2..00000000 --- a/elgg_clean/bower_components/moment/locale/th.js +++ /dev/null @@ -1,64 +0,0 @@ -//! moment.js locale configuration -//! locale : thai (th) -//! author : Kridsada Thanabulpong : https://github.com/sirn - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var th = moment.defineLocale('th', { - months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), - monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'), - weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), - weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference - weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), - longDateFormat : { - LT : 'H นาฬิกา m นาที', - LTS : 'H นาฬิกา m นาที s วินาที', - L : 'YYYY/MM/DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY เวลา H นาฬิกา m นาที', - LLLL : 'วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที' - }, - meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, - isPM: function (input) { - return input === 'หลังเที่ยง'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ก่อนเที่ยง'; - } else { - return 'หลังเที่ยง'; - } - }, - calendar : { - sameDay : '[วันนี้ เวลา] LT', - nextDay : '[พรุ่งนี้ เวลา] LT', - nextWeek : 'dddd[หน้า เวลา] LT', - lastDay : '[เมื่อวานนี้ เวลา] LT', - lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'อีก %s', - past : '%sที่แล้ว', - s : 'ไม่กี่วินาที', - m : '1 นาที', - mm : '%d นาที', - h : '1 ชั่วโมง', - hh : '%d ชั่วโมง', - d : '1 วัน', - dd : '%d วัน', - M : '1 เดือน', - MM : '%d เดือน', - y : '1 ปี', - yy : '%d ปี' - } - }); - - return th; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/tl-ph.js b/elgg_clean/bower_components/moment/locale/tl-ph.js deleted file mode 100644 index 06529ab8..00000000 --- a/elgg_clean/bower_components/moment/locale/tl-ph.js +++ /dev/null @@ -1,61 +0,0 @@ -//! moment.js locale configuration -//! locale : Tagalog/Filipino (tl-ph) -//! author : Dan Hagman - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var tl_ph = moment.defineLocale('tl-ph', { - months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), - monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), - weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'MM/D/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY HH:mm', - LLLL : 'dddd, MMMM DD, YYYY HH:mm' - }, - calendar : { - sameDay: '[Ngayon sa] LT', - nextDay: '[Bukas sa] LT', - nextWeek: 'dddd [sa] LT', - lastDay: '[Kahapon sa] LT', - lastWeek: 'dddd [huling linggo] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'sa loob ng %s', - past : '%s ang nakalipas', - s : 'ilang segundo', - m : 'isang minuto', - mm : '%d minuto', - h : 'isang oras', - hh : '%d oras', - d : 'isang araw', - dd : '%d araw', - M : 'isang buwan', - MM : '%d buwan', - y : 'isang taon', - yy : '%d taon' - }, - ordinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return tl_ph; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/tr.js b/elgg_clean/bower_components/moment/locale/tr.js deleted file mode 100644 index 115905e2..00000000 --- a/elgg_clean/bower_components/moment/locale/tr.js +++ /dev/null @@ -1,89 +0,0 @@ -//! moment.js locale configuration -//! locale : turkish (tr) -//! authors : Erhan Gundogan : https://github.com/erhangundogan, -//! Burak Yiğit Kaya: https://github.com/BYK - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var suffixes = { - 1: '\'inci', - 5: '\'inci', - 8: '\'inci', - 70: '\'inci', - 80: '\'inci', - 2: '\'nci', - 7: '\'nci', - 20: '\'nci', - 50: '\'nci', - 3: '\'üncü', - 4: '\'üncü', - 100: '\'üncü', - 6: '\'ncı', - 9: '\'uncu', - 10: '\'uncu', - 30: '\'uncu', - 60: '\'ıncı', - 90: '\'ıncı' - }; - - var tr = moment.defineLocale('tr', { - months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), - monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), - weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), - weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), - weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[haftaya] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen hafta] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s önce', - s : 'birkaç saniye', - m : 'bir dakika', - mm : '%d dakika', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir yıl', - yy : '%d yıl' - }, - ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + '\'ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return tr; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/tzl.js b/elgg_clean/bower_components/moment/locale/tzl.js deleted file mode 100644 index b9328481..00000000 --- a/elgg_clean/bower_components/moment/locale/tzl.js +++ /dev/null @@ -1,84 +0,0 @@ -//! moment.js locale configuration -//! locale : talossan (tzl) -//! author : Robin van der Vliet : https://github.com/robin0van0der0v with the help of Iustì Canun - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - - var tzl = moment.defineLocale('tzl', { - months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), - monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), - weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), - weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), - weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'LT.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM [dallas] YYYY', - LLL : 'D. MMMM [dallas] YYYY LT', - LLLL : 'dddd, [li] D. MMMM [dallas] YYYY LT' - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'd\'o' : 'D\'O'; - } else { - return isLower ? 'd\'a' : 'D\'A'; - } - }, - calendar : { - sameDay : '[oxhi à] LT', - nextDay : '[demà à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[ieiri à] LT', - lastWeek : '[sür el] dddd [lasteu à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'osprei %s', - past : 'ja%s', - s : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's': ['viensas secunds', '\'iensas secunds'], - 'm': ['\'n míut', '\'iens míut'], - 'mm': [number + ' míuts', ' ' + number + ' míuts'], - 'h': ['\'n þora', '\'iensa þora'], - 'hh': [number + ' þoras', ' ' + number + ' þoras'], - 'd': ['\'n ziua', '\'iensa ziua'], - 'dd': [number + ' ziuas', ' ' + number + ' ziuas'], - 'M': ['\'n mes', '\'iens mes'], - 'MM': [number + ' mesen', ' ' + number + ' mesen'], - 'y': ['\'n ar', '\'iens ar'], - 'yy': [number + ' ars', ' ' + number + ' ars'] - }; - return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1].trim()); - } - - return tzl; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/tzm-latn.js b/elgg_clean/bower_components/moment/locale/tzm-latn.js deleted file mode 100644 index 7323f437..00000000 --- a/elgg_clean/bower_components/moment/locale/tzm-latn.js +++ /dev/null @@ -1,57 +0,0 @@ -//! moment.js locale configuration -//! locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn) -//! author : Abdel Said : https://github.com/abdelsaid - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var tzm_latn = moment.defineLocale('tzm-latn', { - months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[asdkh g] LT', - nextDay: '[aska g] LT', - nextWeek: 'dddd [g] LT', - lastDay: '[assant g] LT', - lastWeek: 'dddd [g] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dadkh s yan %s', - past : 'yan %s', - s : 'imik', - m : 'minuḍ', - mm : '%d minuḍ', - h : 'saɛa', - hh : '%d tassaɛin', - d : 'ass', - dd : '%d ossan', - M : 'ayowr', - MM : '%d iyyirn', - y : 'asgas', - yy : '%d isgasn' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - return tzm_latn; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/tzm.js b/elgg_clean/bower_components/moment/locale/tzm.js deleted file mode 100644 index 810d2745..00000000 --- a/elgg_clean/bower_components/moment/locale/tzm.js +++ /dev/null @@ -1,57 +0,0 @@ -//! moment.js locale configuration -//! locale : Morocco Central Atlas Tamaziɣt (tzm) -//! author : Abdel Said : https://github.com/abdelsaid - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var tzm = moment.defineLocale('tzm', { - months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', - nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', - nextWeek: 'dddd [ⴴ] LT', - lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', - lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', - past : 'ⵢⴰⵏ %s', - s : 'ⵉⵎⵉⴽ', - m : 'ⵎⵉⵏⵓⴺ', - mm : '%d ⵎⵉⵏⵓⴺ', - h : 'ⵙⴰⵄⴰ', - hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', - d : 'ⴰⵙⵙ', - dd : '%d oⵙⵙⴰⵏ', - M : 'ⴰⵢoⵓⵔ', - MM : '%d ⵉⵢⵢⵉⵔⵏ', - y : 'ⴰⵙⴳⴰⵙ', - yy : '%d ⵉⵙⴳⴰⵙⵏ' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - return tzm; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/uk.js b/elgg_clean/bower_components/moment/locale/uk.js deleted file mode 100644 index 8c2edad1..00000000 --- a/elgg_clean/bower_components/moment/locale/uk.js +++ /dev/null @@ -1,152 +0,0 @@ -//! moment.js locale configuration -//! locale : ukrainian (uk) -//! author : zemlanin : https://github.com/zemlanin -//! Author : Menelion Elensúle : https://github.com/Oire - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'хвилина_хвилини_хвилин', - 'hh': 'година_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' - }; - if (key === 'm') { - return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { - return withoutSuffix ? 'година' : 'годину'; - } - else { - return number + ' ' + plural(format[key], +number); - } - } - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), - 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') - }, - nounCase = (/D[oD]? *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }, - nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); - return weekdays[nounCase][m.day()]; - } - function processHoursFunction(str) { - return function () { - return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; - }; - } - - var uk = moment.defineLocale('uk', { - months : monthsCaseReplace, - monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), - weekdays : weekdaysCaseReplace, - weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY р.', - LLL : 'D MMMM YYYY р., HH:mm', - LLLL : 'dddd, D MMMM YYYY р., HH:mm' - }, - calendar : { - sameDay: processHoursFunction('[Сьогодні '), - nextDay: processHoursFunction('[Завтра '), - lastDay: processHoursFunction('[Вчора '), - nextWeek: processHoursFunction('[У] dddd ['), - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'за %s', - past : '%s тому', - s : 'декілька секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : 'годину', - hh : relativeTimeWithPlural, - d : 'день', - dd : relativeTimeWithPlural, - M : 'місяць', - MM : relativeTimeWithPlural, - y : 'рік', - yy : relativeTimeWithPlural - }, - // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason - meridiemParse: /ночі|ранку|дня|вечора/, - isPM: function (input) { - return /^(дня|вечора)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночі'; - } else if (hour < 12) { - return 'ранку'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечора'; - } - }, - ordinalParse: /\d{1,2}-(й|го)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - return uk; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/uz.js b/elgg_clean/bower_components/moment/locale/uz.js deleted file mode 100644 index d75360c4..00000000 --- a/elgg_clean/bower_components/moment/locale/uz.js +++ /dev/null @@ -1,57 +0,0 @@ -//! moment.js locale configuration -//! locale : uzbek (uz) -//! author : Sardor Muminov : https://github.com/muminoff - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var uz = moment.defineLocale('uz', { - months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), - weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), - weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - calendar : { - sameDay : '[Бугун соат] LT [да]', - nextDay : '[Эртага] LT [да]', - nextWeek : 'dddd [куни соат] LT [да]', - lastDay : '[Кеча соат] LT [да]', - lastWeek : '[Утган] dddd [куни соат] LT [да]', - sameElse : 'L' - }, - relativeTime : { - future : 'Якин %s ичида', - past : 'Бир неча %s олдин', - s : 'фурсат', - m : 'бир дакика', - mm : '%d дакика', - h : 'бир соат', - hh : '%d соат', - d : 'бир кун', - dd : '%d кун', - M : 'бир ой', - MM : '%d ой', - y : 'бир йил', - yy : '%d йил' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 4th is the first week of the year. - } - }); - - return uz; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/vi.js b/elgg_clean/bower_components/moment/locale/vi.js deleted file mode 100644 index 2756a370..00000000 --- a/elgg_clean/bower_components/moment/locale/vi.js +++ /dev/null @@ -1,65 +0,0 @@ -//! moment.js locale configuration -//! locale : vietnamese (vi) -//! author : Bang Nguyen : https://github.com/bangnk - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var vi = moment.defineLocale('vi', { - months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), - monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), - weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), - weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [năm] YYYY', - LLL : 'D MMMM [năm] YYYY HH:mm', - LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', - l : 'DD/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Hôm nay lúc] LT', - nextDay: '[Ngày mai lúc] LT', - nextWeek: 'dddd [tuần tới lúc] LT', - lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần rồi lúc] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s tới', - past : '%s trước', - s : 'vài giây', - m : 'một phút', - mm : '%d phút', - h : 'một giờ', - hh : '%d giờ', - d : 'một ngày', - dd : '%d ngày', - M : 'một tháng', - MM : '%d tháng', - y : 'một năm', - yy : '%d năm' - }, - ordinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return vi; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/zh-cn.js b/elgg_clean/bower_components/moment/locale/zh-cn.js deleted file mode 100644 index 283c4ba9..00000000 --- a/elgg_clean/bower_components/moment/locale/zh-cn.js +++ /dev/null @@ -1,126 +0,0 @@ -//! moment.js locale configuration -//! locale : chinese (zh-cn) -//! author : suupic : https://github.com/suupic -//! author : Zeno Zeng : https://github.com/zenozeng - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var zh_cn = moment.defineLocale('zh-cn', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'Ah点mm分', - LTS : 'Ah点m分s秒', - L : 'YYYY-MM-DD', - LL : 'YYYY年MMMD日', - LLL : 'YYYY年MMMD日Ah点mm分', - LLLL : 'YYYY年MMMD日ddddAh点mm分', - l : 'YYYY-MM-DD', - ll : 'YYYY年MMMD日', - lll : 'YYYY年MMMD日Ah点mm分', - llll : 'YYYY年MMMD日ddddAh点mm分' - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || - meridiem === '上午') { - return hour; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } else { - // '中午' - return hour >= 11 ? hour : hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : function () { - return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT'; - }, - nextDay : function () { - return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT'; - }, - lastDay : function () { - return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT'; - }, - nextWeek : function () { - var startOfWeek, prefix; - startOfWeek = moment().startOf('week'); - prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; - return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; - }, - lastWeek : function () { - var startOfWeek, prefix; - startOfWeek = moment().startOf('week'); - prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; - return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; - }, - sameElse : 'LL' - }, - ordinalParse: /\d{1,2}(日|月|周)/, - ordinal : function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '周'; - default: - return number; - } - }, - relativeTime : { - future : '%s内', - past : '%s前', - s : '几秒', - m : '1 分钟', - mm : '%d 分钟', - h : '1 小时', - hh : '%d 小时', - d : '1 天', - dd : '%d 天', - M : '1 个月', - MM : '%d 个月', - y : '1 年', - yy : '%d 年' - }, - week : { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - return zh_cn; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/locale/zh-tw.js b/elgg_clean/bower_components/moment/locale/zh-tw.js deleted file mode 100644 index e2f3075e..00000000 --- a/elgg_clean/bower_components/moment/locale/zh-tw.js +++ /dev/null @@ -1,100 +0,0 @@ -//! moment.js locale configuration -//! locale : traditional chinese (zh-tw) -//! author : Ben : https://github.com/ben-lin - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - - var zh_tw = moment.defineLocale('zh-tw', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'Ah點mm分', - LTS : 'Ah點m分s秒', - L : 'YYYY年MMMD日', - LL : 'YYYY年MMMD日', - LLL : 'YYYY年MMMD日Ah點mm分', - LLLL : 'YYYY年MMMD日ddddAh點mm分', - l : 'YYYY年MMMD日', - ll : 'YYYY年MMMD日', - lll : 'YYYY年MMMD日Ah點mm分', - llll : 'YYYY年MMMD日ddddAh點mm分' - }, - meridiemParse: /早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - ordinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { - switch (period) { - case 'd' : - case 'D' : - case 'DDD' : - return number + '日'; - case 'M' : - return number + '月'; - case 'w' : - case 'W' : - return number + '週'; - default : - return number; - } - }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - m : '一分鐘', - mm : '%d分鐘', - h : '一小時', - hh : '%d小時', - d : '一天', - dd : '%d天', - M : '一個月', - MM : '%d個月', - y : '一年', - yy : '%d年' - } - }); - - return zh_tw; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/min/locales.js b/elgg_clean/bower_components/moment/min/locales.js deleted file mode 100644 index adc3e478..00000000 --- a/elgg_clean/bower_components/moment/min/locales.js +++ /dev/null @@ -1,6787 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - //! moment.js locale configuration - //! locale : afrikaans (af) - //! author : Werner Mollentze : https://github.com/wernerm - - var af = moment.defineLocale('af', { - months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), - weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), - weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), - meridiemParse: /vm|nm/i, - isPM : function (input) { - return /^nm$/i.test(input); - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'vm' : 'VM'; - } else { - return isLower ? 'nm' : 'NM'; - } - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Vandag om] LT', - nextDay : '[Môre om] LT', - nextWeek : 'dddd [om] LT', - lastDay : '[Gister om] LT', - lastWeek : '[Laas] dddd [om] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'oor %s', - past : '%s gelede', - s : '\'n paar sekondes', - m : '\'n minuut', - mm : '%d minute', - h : '\'n uur', - hh : '%d ure', - d : '\'n dag', - dd : '%d dae', - M : '\'n maand', - MM : '%d maande', - y : '\'n jaar', - yy : '%d jaar' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter - }, - week : { - dow : 1, // Maandag is die eerste dag van die week. - doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - } - }); - - //! moment.js locale configuration - //! locale : Moroccan Arabic (ar-ma) - //! author : ElFadili Yassine : https://github.com/ElFadiliY - //! author : Abdel Said : https://github.com/abdelsaid - - var ar_ma = moment.defineLocale('ar-ma', { - months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Arabic Saudi Arabia (ar-sa) - //! author : Suhail Alkowaileet : https://github.com/xsoh - - var ar_sa__symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, ar_sa__numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }; - - var ar_sa = moment.defineLocale('ar-sa', { - months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - preparse: function (string) { - return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return ar_sa__numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return ar_sa__symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Tunisian Arabic (ar-tn) - - var ar_tn = moment.defineLocale('ar-tn', { - months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات' - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! Locale: Arabic (ar) - //! Author: Abdel Said: https://github.com/abdelsaid - //! Changes in months, weekdays: Ahmed Elkhatib - //! Native plural forms: forabi https://github.com/forabi - - var ar__symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, ar__numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }, pluralForm = function (n) { - return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; - }, plurals = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] - }, pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, ar__months = [ - 'كانون الثاني يناير', - 'شباط فبراير', - 'آذار مارس', - 'نيسان أبريل', - 'أيار مايو', - 'حزيران يونيو', - 'تموز يوليو', - 'آب أغسطس', - 'أيلول سبتمبر', - 'تشرين الأول أكتوبر', - 'تشرين الثاني نوفمبر', - 'كانون الأول ديسمبر' - ]; - - var ar = moment.defineLocale('ar', { - months : ar__months, - monthsShort : ar__months, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/\u200FM/\u200FYYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize('s'), - m : pluralize('m'), - mm : pluralize('m'), - h : pluralize('h'), - hh : pluralize('h'), - d : pluralize('d'), - dd : pluralize('d'), - M : pluralize('M'), - MM : pluralize('M'), - y : pluralize('y'), - yy : pluralize('y') - }, - preparse: function (string) { - return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return ar__numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return ar__symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : azerbaijani (az) - //! author : topchiyev : https://github.com/topchiyev - - var az__suffixes = { - 1: '-inci', - 5: '-inci', - 8: '-inci', - 70: '-inci', - 80: '-inci', - 2: '-nci', - 7: '-nci', - 20: '-nci', - 50: '-nci', - 3: '-üncü', - 4: '-üncü', - 100: '-üncü', - 6: '-ncı', - 9: '-uncu', - 10: '-uncu', - 30: '-uncu', - 60: '-ıncı', - 90: '-ıncı' - }; - - var az = moment.defineLocale('az', { - months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), - monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), - weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), - weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), - weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[sabah saat] LT', - nextWeek : '[gələn həftə] dddd [saat] LT', - lastDay : '[dünən] LT', - lastWeek : '[keçən həftə] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s əvvəl', - s : 'birneçə saniyyə', - m : 'bir dəqiqə', - mm : '%d dəqiqə', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir il', - yy : '%d il' - }, - meridiemParse: /gecə|səhər|gündüz|axşam/, - isPM : function (input) { - return /^(gündüz|axşam)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'gecə'; - } else if (hour < 12) { - return 'səhər'; - } else if (hour < 17) { - return 'gündüz'; - } else { - return 'axşam'; - } - }, - ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + '-ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (az__suffixes[a] || az__suffixes[b] || az__suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : belarusian (be) - //! author : Dmitry Demidov : https://github.com/demidov91 - //! author: Praleska: http://praleska.pro/ - //! Author : Menelion Elensúle : https://github.com/Oire - - function be__plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function be__relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', - 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', - 'dd': 'дзень_дні_дзён', - 'MM': 'месяц_месяцы_месяцаў', - 'yy': 'год_гады_гадоў' - }; - if (key === 'm') { - return withoutSuffix ? 'хвіліна' : 'хвіліну'; - } - else if (key === 'h') { - return withoutSuffix ? 'гадзіна' : 'гадзіну'; - } - else { - return number + ' ' + be__plural(format[key], +number); - } - } - function be__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), - 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function be__weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), - 'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_') - }, - nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; - } - - var be = moment.defineLocale('be', { - months : be__monthsCaseReplace, - monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), - weekdays : be__weekdaysCaseReplace, - weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., HH:mm', - LLLL : 'dddd, D MMMM YYYY г., HH:mm' - }, - calendar : { - sameDay: '[Сёння ў] LT', - nextDay: '[Заўтра ў] LT', - lastDay: '[Учора ў] LT', - nextWeek: function () { - return '[У] dddd [ў] LT'; - }, - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return '[У мінулую] dddd [ў] LT'; - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'праз %s', - past : '%s таму', - s : 'некалькі секунд', - m : be__relativeTimeWithPlural, - mm : be__relativeTimeWithPlural, - h : be__relativeTimeWithPlural, - hh : be__relativeTimeWithPlural, - d : 'дзень', - dd : be__relativeTimeWithPlural, - M : 'месяц', - MM : be__relativeTimeWithPlural, - y : 'год', - yy : be__relativeTimeWithPlural - }, - meridiemParse: /ночы|раніцы|дня|вечара/, - isPM : function (input) { - return /^(дня|вечара)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночы'; - } else if (hour < 12) { - return 'раніцы'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечара'; - } - }, - ordinalParse: /\d{1,2}-(і|ы|га)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; - case 'D': - return number + '-га'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : bulgarian (bg) - //! author : Krasen Borisov : https://github.com/kraz - - var bg = moment.defineLocale('bg', { - months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), - weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'след %s', - past : 'преди %s', - s : 'няколко секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дни', - M : 'месец', - MM : '%d месеца', - y : 'година', - yy : '%d години' - }, - ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Bengali (bn) - //! author : Kaushik Gandhi : https://github.com/kaushikgandhi - - var bn__symbolMap = { - '1': '১', - '2': '২', - '3': '৩', - '4': '৪', - '5': '৫', - '6': '৬', - '7': '৭', - '8': '৮', - '9': '৯', - '0': '০' - }, - bn__numberMap = { - '১': '1', - '২': '2', - '৩': '3', - '৪': '4', - '৫': '5', - '৬': '6', - '৭': '7', - '৮': '8', - '৯': '9', - '০': '0' - }; - - var bn = moment.defineLocale('bn', { - months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), - monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'), - weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split('_'), - weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split('_'), - weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'), - longDateFormat : { - LT : 'A h:mm সময়', - LTS : 'A h:mm:ss সময়', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm সময়', - LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' - }, - calendar : { - sameDay : '[আজ] LT', - nextDay : '[আগামীকাল] LT', - nextWeek : 'dddd, LT', - lastDay : '[গতকাল] LT', - lastWeek : '[গত] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s পরে', - past : '%s আগে', - s : 'কএক সেকেন্ড', - m : 'এক মিনিট', - mm : '%d মিনিট', - h : 'এক ঘন্টা', - hh : '%d ঘন্টা', - d : 'এক দিন', - dd : '%d দিন', - M : 'এক মাস', - MM : '%d মাস', - y : 'এক বছর', - yy : '%d বছর' - }, - preparse: function (string) { - return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return bn__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return bn__symbolMap[match]; - }); - }, - meridiemParse: /রাত|সকাল|দুপুর|বিকেল|রাত/, - isPM: function (input) { - return /^(দুপুর|বিকেল|রাত)$/.test(input); - }, - //Bengali is a vast language its spoken - //in different forms in various parts of the world. - //I have just generalized with most common one used - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'রাত'; - } else if (hour < 10) { - return 'সকাল'; - } else if (hour < 17) { - return 'দুপুর'; - } else if (hour < 20) { - return 'বিকেল'; - } else { - return 'রাত'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : tibetan (bo) - //! author : Thupten N. Chakrishar : https://github.com/vajradog - - var bo__symbolMap = { - '1': '༡', - '2': '༢', - '3': '༣', - '4': '༤', - '5': '༥', - '6': '༦', - '7': '༧', - '8': '༨', - '9': '༩', - '0': '༠' - }, - bo__numberMap = { - '༡': '1', - '༢': '2', - '༣': '3', - '༤': '4', - '༥': '5', - '༦': '6', - '༧': '7', - '༨': '8', - '༩': '9', - '༠': '0' - }; - - var bo = moment.defineLocale('bo', { - months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), - weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm', - LLLL : 'dddd, D MMMM YYYY, A h:mm' - }, - calendar : { - sameDay : '[དི་རིང] LT', - nextDay : '[སང་ཉིན] LT', - nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', - lastDay : '[ཁ་སང] LT', - lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ལ་', - past : '%s སྔན་ལ', - s : 'ལམ་སང', - m : 'སྐར་མ་གཅིག', - mm : '%d སྐར་མ', - h : 'ཆུ་ཚོད་གཅིག', - hh : '%d ཆུ་ཚོད', - d : 'ཉིན་གཅིག', - dd : '%d ཉིན་', - M : 'ཟླ་བ་གཅིག', - MM : '%d ཟླ་བ', - y : 'ལོ་གཅིག', - yy : '%d ལོ' - }, - preparse: function (string) { - return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { - return bo__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return bo__symbolMap[match]; - }); - }, - meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, - isPM: function (input) { - return /^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'མཚན་མོ'; - } else if (hour < 10) { - return 'ཞོགས་ཀས'; - } else if (hour < 17) { - return 'ཉིན་གུང'; - } else if (hour < 20) { - return 'དགོང་དག'; - } else { - return 'མཚན་མོ'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : breton (br) - //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou - - function relativeTimeWithMutation(number, withoutSuffix, key) { - var format = { - 'mm': 'munutenn', - 'MM': 'miz', - 'dd': 'devezh' - }; - return number + ' ' + mutation(format[key], number); - } - function specialMutationForYears(number) { - switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; - } - } - function lastNumber(number) { - if (number > 9) { - return lastNumber(number % 10); - } - return number; - } - function mutation(text, number) { - if (number === 2) { - return softMutation(text); - } - return text; - } - function softMutation(text) { - var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' - }; - if (mutationTable[text.charAt(0)] === undefined) { - return text; - } - return mutationTable[text.charAt(0)] + text.substring(1); - } - - var br = moment.defineLocale('br', { - months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), - monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), - weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), - weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), - weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), - longDateFormat : { - LT : 'h[e]mm A', - LTS : 'h[e]mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [a viz] MMMM YYYY', - LLL : 'D [a viz] MMMM YYYY h[e]mm A', - LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' - }, - calendar : { - sameDay : '[Hiziv da] LT', - nextDay : '[Warc\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'a-benn %s', - past : '%s \'zo', - s : 'un nebeud segondennoù', - m : 'ur vunutenn', - mm : relativeTimeWithMutation, - h : 'un eur', - hh : '%d eur', - d : 'un devezh', - dd : relativeTimeWithMutation, - M : 'ur miz', - MM : relativeTimeWithMutation, - y : 'ur bloaz', - yy : specialMutationForYears - }, - ordinalParse: /\d{1,2}(añ|vet)/, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : bosnian (bs) - //! author : Nedim Cholich : https://github.com/frontyard - //! based on (hr) translation by Bojan Marković - - function bs__translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } - - var bs = moment.defineLocale('bs', { - months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - m : bs__translate, - mm : bs__translate, - h : bs__translate, - hh : bs__translate, - d : 'dan', - dd : bs__translate, - M : 'mjesec', - MM : bs__translate, - y : 'godinu', - yy : bs__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : catalan (ca) - //! author : Juan G. Hurtado : https://github.com/juanghurtado - - var ca = moment.defineLocale('ca', { - months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), - monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'), - weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), - weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), - weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'LT:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd D MMMM YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'fa %s', - s : 'uns segons', - m : 'un minut', - mm : '%d minuts', - h : 'una hora', - hh : '%d hores', - d : 'un dia', - dd : '%d dies', - M : 'un mes', - MM : '%d mesos', - y : 'un any', - yy : '%d anys' - }, - ordinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal : function (number, period) { - var output = (number === 1) ? 'r' : - (number === 2) ? 'n' : - (number === 3) ? 'r' : - (number === 4) ? 't' : 'è'; - if (period === 'w' || period === 'W') { - output = 'a'; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : czech (cs) - //! author : petrbela : https://github.com/petrbela - - var cs__months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), - cs__monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); - function cs__plural(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); - } - function cs__translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (cs__plural(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (cs__plural(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (cs__plural(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (cs__plural(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (cs__plural(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; - } - break; - } - } - - var cs = moment.defineLocale('cs', { - months : cs__months, - monthsShort : cs__monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(cs__months, cs__monthsShort)), - weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), - weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), - weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[dnes v] LT', - nextDay: '[zítra v] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; - } - }, - lastDay: '[včera v] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'před %s', - s : cs__translate, - m : cs__translate, - mm : cs__translate, - h : cs__translate, - hh : cs__translate, - d : cs__translate, - dd : cs__translate, - M : cs__translate, - MM : cs__translate, - y : cs__translate, - yy : cs__translate - }, - ordinalParse : /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : chuvash (cv) - //! author : Anatoly Mironov : https://github.com/mirontoli - - var cv = moment.defineLocale('cv', { - months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), - monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), - weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), - weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), - weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' - }, - calendar : { - sameDay: '[Паян] LT [сехетре]', - nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ӗнер] LT [сехетре]', - nextWeek: '[Ҫитес] dddd LT [сехетре]', - lastWeek: '[Иртнӗ] dddd LT [сехетре]', - sameElse: 'L' - }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; - return output + affix; - }, - past : '%s каялла', - s : 'пӗр-ик ҫеккунт', - m : 'пӗр минут', - mm : '%d минут', - h : 'пӗр сехет', - hh : '%d сехет', - d : 'пӗр кун', - dd : '%d кун', - M : 'пӗр уйӑх', - MM : '%d уйӑх', - y : 'пӗр ҫул', - yy : '%d ҫул' - }, - ordinalParse: /\d{1,2}-мӗш/, - ordinal : '%d-мӗш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Welsh (cy) - //! author : Robert Allen - - var cy = moment.defineLocale('cy', { - months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), - monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), - weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), - weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), - weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), - // time formats are the same as en-gb - longDateFormat: { - LT: 'HH:mm', - LTS : 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[Heddiw am] LT', - nextDay: '[Yfory am] LT', - nextWeek: 'dddd [am] LT', - lastDay: '[Ddoe am] LT', - lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'mewn %s', - past: '%s yn ôl', - s: 'ychydig eiliadau', - m: 'munud', - mm: '%d munud', - h: 'awr', - hh: '%d awr', - d: 'diwrnod', - dd: '%d diwrnod', - M: 'mis', - MM: '%d mis', - y: 'blwyddyn', - yy: '%d flynedd' - }, - ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, - // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh - ordinal: function (number) { - var b = number, - output = '', - lookup = [ - '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed - 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed - ]; - if (b > 20) { - if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { - output = 'fed'; // not 30ain, 70ain or 90ain - } else { - output = 'ain'; - } - } else if (b > 0) { - output = lookup[b]; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : danish (da) - //! author : Ulrik Nielsen : https://github.com/mrbase - - var da = moment.defineLocale('da', { - months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd [d.] D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[I dag kl.] LT', - nextDay : '[I morgen kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[I går kl.] LT', - lastWeek : '[sidste] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'få sekunder', - m : 'et minut', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dage', - M : 'en måned', - MM : '%d måneder', - y : 'et år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : austrian german (de-at) - //! author : lluchs : https://github.com/lluchs - //! author: Menelion Elensúle: https://github.com/Oire - //! author : Martin Groller : https://github.com/MadMG - - function de_at__processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - var de_at = moment.defineLocale('de-at', { - months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[Morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[Gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - m : de_at__processRelativeTime, - mm : '%d Minuten', - h : de_at__processRelativeTime, - hh : '%d Stunden', - d : de_at__processRelativeTime, - dd : de_at__processRelativeTime, - M : de_at__processRelativeTime, - MM : de_at__processRelativeTime, - y : de_at__processRelativeTime, - yy : de_at__processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : german (de) - //! author : lluchs : https://github.com/lluchs - //! author: Menelion Elensúle: https://github.com/Oire - - function de__processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - var de = moment.defineLocale('de', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[Morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[Gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - m : de__processRelativeTime, - mm : '%d Minuten', - h : de__processRelativeTime, - hh : '%d Stunden', - d : de__processRelativeTime, - dd : de__processRelativeTime, - M : de__processRelativeTime, - MM : de__processRelativeTime, - y : de__processRelativeTime, - yy : de__processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : modern greek (el) - //! author : Aggelos Karalias : https://github.com/mehiel - - var el = moment.defineLocale('el', { - monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), - monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), - months : function (momentToFormat, format) { - if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' - return this._monthsGenitiveEl[momentToFormat.month()]; - } else { - return this._monthsNominativeEl[momentToFormat.month()]; - } - }, - monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), - weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), - weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), - weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'μμ' : 'ΜΜ'; - } else { - return isLower ? 'πμ' : 'ΠΜ'; - } - }, - isPM : function (input) { - return ((input + '').toLowerCase()[0] === 'μ'); - }, - meridiemParse : /[ΠΜ]\.?Μ?\.?/i, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : function () { - switch (this.day()) { - case 6: - return '[το προηγούμενο] dddd [{}] LT'; - default: - return '[την προηγούμενη] dddd [{}] LT'; - } - }, - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendarEl[key], - hours = mom && mom.hours(); - if (typeof output === 'function') { - output = output.apply(mom); - } - return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); - }, - relativeTime : { - future : 'σε %s', - past : '%s πριν', - s : 'λίγα δευτερόλεπτα', - m : 'ένα λεπτό', - mm : '%d λεπτά', - h : 'μία ώρα', - hh : '%d ώρες', - d : 'μία μέρα', - dd : '%d μέρες', - M : 'ένας μήνας', - MM : '%d μήνες', - y : 'ένας χρόνος', - yy : '%d χρόνια' - }, - ordinalParse: /\d{1,2}η/, - ordinal: '%dη', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : australian english (en-au) - - var en_au = moment.defineLocale('en-au', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : canadian english (en-ca) - //! author : Jonathan Abourbih : https://github.com/jonbca - - var en_ca = moment.defineLocale('en-ca', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'YYYY-MM-DD', - LL : 'D MMMM, YYYY', - LLL : 'D MMMM, YYYY h:mm A', - LLLL : 'dddd, D MMMM, YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - //! moment.js locale configuration - //! locale : great britain english (en-gb) - //! author : Chris Gedrim : https://github.com/chrisgedrim - - var en_gb = moment.defineLocale('en-gb', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : esperanto (eo) - //! author : Colin Dean : https://github.com/colindean - //! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. - //! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! - - var eo = moment.defineLocale('eo', { - months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), - weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'), - weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D[-an de] MMMM, YYYY', - LLL : 'D[-an de] MMMM, YYYY HH:mm', - LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm' - }, - meridiemParse: /[ap]\.t\.m/i, - isPM: function (input) { - return input.charAt(0).toLowerCase() === 'p'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'p.t.m.' : 'P.T.M.'; - } else { - return isLower ? 'a.t.m.' : 'A.T.M.'; - } - }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'je %s', - past : 'antaŭ %s', - s : 'sekundoj', - m : 'minuto', - mm : '%d minutoj', - h : 'horo', - hh : '%d horoj', - d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo - dd : '%d tagoj', - M : 'monato', - MM : '%d monatoj', - y : 'jaro', - yy : '%d jaroj' - }, - ordinalParse: /\d{1,2}a/, - ordinal : '%da', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : spanish (es) - //! author : Julio Napurí : https://github.com/julionc - - var monthsShortDot = 'Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.'.split('_'), - es__monthsShort = 'Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic'.split('_'); - - var es = moment.defineLocale('es', { - months : 'Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return es__monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - weekdays : 'Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado'.split('_'), - weekdaysShort : 'Dom._Lun._Mar._Mié._Jue._Vie._Sáb.'.split('_'), - weekdaysMin : 'Do_Lu_Ma_Mi_Ju_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - ordinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : estonian (et) - //! author : Henry Kehlmann : https://github.com/madhenry - //! improvements : Illimar Tambek : https://github.com/ragulka - - function et__processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - 'm' : ['ühe minuti', 'üks minut'], - 'mm': [number + ' minuti', number + ' minutit'], - 'h' : ['ühe tunni', 'tund aega', 'üks tund'], - 'hh': [number + ' tunni', number + ' tundi'], - 'd' : ['ühe päeva', 'üks päev'], - 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], - 'MM': [number + ' kuu', number + ' kuud'], - 'y' : ['ühe aasta', 'aasta', 'üks aasta'], - 'yy': [number + ' aasta', number + ' aastat'] - }; - if (withoutSuffix) { - return format[key][2] ? format[key][2] : format[key][1]; - } - return isFuture ? format[key][0] : format[key][1]; - } - - var et = moment.defineLocale('et', { - months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), - monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), - weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), - weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), - weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s pärast', - past : '%s tagasi', - s : et__processRelativeTime, - m : et__processRelativeTime, - mm : et__processRelativeTime, - h : et__processRelativeTime, - hh : et__processRelativeTime, - d : et__processRelativeTime, - dd : '%d päeva', - M : et__processRelativeTime, - MM : et__processRelativeTime, - y : et__processRelativeTime, - yy : et__processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : euskara (eu) - //! author : Eneko Illarramendi : https://github.com/eillarra - - var eu = moment.defineLocale('eu', { - months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), - monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), - weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), - weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), - weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY[ko] MMMM[ren] D[a]', - LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', - LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - l : 'YYYY-M-D', - ll : 'YYYY[ko] MMM D[a]', - lll : 'YYYY[ko] MMM D[a] HH:mm', - llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' - }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' - }, - relativeTime : { - future : '%s barru', - past : 'duela %s', - s : 'segundo batzuk', - m : 'minutu bat', - mm : '%d minutu', - h : 'ordu bat', - hh : '%d ordu', - d : 'egun bat', - dd : '%d egun', - M : 'hilabete bat', - MM : '%d hilabete', - y : 'urte bat', - yy : '%d urte' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Persian (fa) - //! author : Ebrahim Byagowi : https://github.com/ebraminio - - var fa__symbolMap = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰' - }, fa__numberMap = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0' - }; - - var fa = moment.defineLocale('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - meridiemParse: /قبل از ظهر|بعد از ظهر/, - isPM: function (input) { - return /بعد از ظهر/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'قبل از ظهر'; - } else { - return 'بعد از ظهر'; - } - }, - calendar : { - sameDay : '[امروز ساعت] LT', - nextDay : '[فردا ساعت] LT', - nextWeek : 'dddd [ساعت] LT', - lastDay : '[دیروز ساعت] LT', - lastWeek : 'dddd [پیش] [ساعت] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'در %s', - past : '%s پیش', - s : 'چندین ثانیه', - m : 'یک دقیقه', - mm : '%d دقیقه', - h : 'یک ساعت', - hh : '%d ساعت', - d : 'یک روز', - dd : '%d روز', - M : 'یک ماه', - MM : '%d ماه', - y : 'یک سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/[۰-۹]/g, function (match) { - return fa__numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return fa__symbolMap[match]; - }).replace(/,/g, '،'); - }, - ordinalParse: /\d{1,2}م/, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : finnish (fi) - //! author : Tarmo Aidantausta : https://github.com/bleadof - - var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), - numbersFuture = [ - 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbersPast[7], numbersPast[8], numbersPast[9] - ]; - function fi__translate(number, withoutSuffix, key, isFuture) { - var result = ''; - switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; - } - result = verbalNumber(number, isFuture) + ' ' + result; - return result; - } - function verbalNumber(number, isFuture) { - return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; - } - - var fi = moment.defineLocale('fi', { - months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), - monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), - weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), - weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), - weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'Do MMMM[ta] YYYY', - LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', - LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', - l : 'D.M.YYYY', - ll : 'Do MMM YYYY', - lll : 'Do MMM YYYY, [klo] HH.mm', - llll : 'ddd, Do MMM YYYY, [klo] HH.mm' - }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s päästä', - past : '%s sitten', - s : fi__translate, - m : fi__translate, - mm : fi__translate, - h : fi__translate, - hh : fi__translate, - d : fi__translate, - dd : fi__translate, - M : fi__translate, - MM : fi__translate, - y : fi__translate, - yy : fi__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : faroese (fo) - //! author : Ragnar Johannesen : https://github.com/ragnar123 - - var fo = moment.defineLocale('fo', { - months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), - weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), - weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D. MMMM, YYYY HH:mm' - }, - calendar : { - sameDay : '[Í dag kl.] LT', - nextDay : '[Í morgin kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[Í gjár kl.] LT', - lastWeek : '[síðstu] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'um %s', - past : '%s síðani', - s : 'fá sekund', - m : 'ein minutt', - mm : '%d minuttir', - h : 'ein tími', - hh : '%d tímar', - d : 'ein dagur', - dd : '%d dagar', - M : 'ein mánaði', - MM : '%d mánaðir', - y : 'eitt ár', - yy : '%d ár' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : canadian french (fr-ca) - //! author : Jonathan Abourbih : https://github.com/jonbca - - var fr_ca = moment.defineLocale('fr-ca', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Aujourd\'hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - ordinalParse: /\d{1,2}(er|e)/, - ordinal : function (number) { - return number + (number === 1 ? 'er' : 'e'); - } - }); - - //! moment.js locale configuration - //! locale : french (fr) - //! author : John Fischer : https://github.com/jfroffice - - var fr = moment.defineLocale('fr', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Aujourd\'hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - ordinalParse: /\d{1,2}(er|)/, - ordinal : function (number) { - return number + (number === 1 ? 'er' : ''); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : frisian (fy) - //! author : Robin van der Vliet : https://github.com/robin0van0der0v - - var fy__monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), - fy__monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); - - var fy = moment.defineLocale('fy', { - months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return fy__monthsShortWithoutDots[m.month()]; - } else { - return fy__monthsShortWithDots[m.month()]; - } - }, - weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), - weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), - weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[hjoed om] LT', - nextDay: '[moarn om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[juster om] LT', - lastWeek: '[ôfrûne] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'oer %s', - past : '%s lyn', - s : 'in pear sekonden', - m : 'ien minút', - mm : '%d minuten', - h : 'ien oere', - hh : '%d oeren', - d : 'ien dei', - dd : '%d dagen', - M : 'ien moanne', - MM : '%d moannen', - y : 'ien jier', - yy : '%d jierren' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : galician (gl) - //! author : Juan G. Hurtado : https://github.com/juanghurtado - - var gl = moment.defineLocale('gl', { - months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'), - monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'), - weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'), - weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.'.split('_'), - weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd D MMMM YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; - }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : function (str) { - if (str === 'uns segundos') { - return 'nuns segundos'; - } - return 'en ' + str; - }, - past : 'hai %s', - s : 'uns segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'unha hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un ano', - yy : '%d anos' - }, - ordinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Hebrew (he) - //! author : Tomer Cohen : https://github.com/tomer - //! author : Moshe Simantov : https://github.com/DevelopmentIL - //! author : Tal Ater : https://github.com/TalAter - - var he = moment.defineLocale('he', { - months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), - monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), - weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), - weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), - weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [ב]MMMM YYYY', - LLL : 'D [ב]MMMM YYYY HH:mm', - LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', - l : 'D/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay : '[היום ב־]LT', - nextDay : '[מחר ב־]LT', - nextWeek : 'dddd [בשעה] LT', - lastDay : '[אתמול ב־]LT', - lastWeek : '[ביום] dddd [האחרון בשעה] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'בעוד %s', - past : 'לפני %s', - s : 'מספר שניות', - m : 'דקה', - mm : '%d דקות', - h : 'שעה', - hh : function (number) { - if (number === 2) { - return 'שעתיים'; - } - return number + ' שעות'; - }, - d : 'יום', - dd : function (number) { - if (number === 2) { - return 'יומיים'; - } - return number + ' ימים'; - }, - M : 'חודש', - MM : function (number) { - if (number === 2) { - return 'חודשיים'; - } - return number + ' חודשים'; - }, - y : 'שנה', - yy : function (number) { - if (number === 2) { - return 'שנתיים'; - } else if (number % 10 === 0 && number !== 10) { - return number + ' שנה'; - } - return number + ' שנים'; - } - } - }); - - //! moment.js locale configuration - //! locale : hindi (hi) - //! author : Mayank Singhal : https://github.com/mayanksinghal - - var hi__symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - hi__numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - var hi = moment.defineLocale('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm बजे', - LTS : 'A h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[कल] LT', - nextWeek : 'dddd, LT', - lastDay : '[कल] LT', - lastWeek : '[पिछले] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s में', - past : '%s पहले', - s : 'कुछ ही क्षण', - m : 'एक मिनट', - mm : '%d मिनट', - h : 'एक घंटा', - hh : '%d घंटे', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महीने', - MM : '%d महीने', - y : 'एक वर्ष', - yy : '%d वर्ष' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return hi__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return hi__symbolMap[match]; - }); - }, - // Hindi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. - meridiemParse: /रात|सुबह|दोपहर|शाम/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सुबह') { - return hour; - } else if (meridiem === 'दोपहर') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'शाम') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'रात'; - } else if (hour < 10) { - return 'सुबह'; - } else if (hour < 17) { - return 'दोपहर'; - } else if (hour < 20) { - return 'शाम'; - } else { - return 'रात'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : hrvatski (hr) - //! author : Bojan Marković : https://github.com/bmarkovic - - function hr__translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } - - var hr = moment.defineLocale('hr', { - months : 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'), - monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - m : hr__translate, - mm : hr__translate, - h : hr__translate, - hh : hr__translate, - d : 'dan', - dd : hr__translate, - M : 'mjesec', - MM : hr__translate, - y : 'godinu', - yy : hr__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : hungarian (hu) - //! author : Adam Brunner : https://github.com/adambrunner - - var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); - function hu__translate(number, withoutSuffix, key, isFuture) { - var num = number, - suffix; - switch (key) { - case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); - } - return ''; - } - function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; - } - - var hu = moment.defineLocale('hu', { - months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), - monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), - weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), - weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), - weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY. MMMM D.', - LLL : 'YYYY. MMMM D. H:mm', - LLLL : 'YYYY. MMMM D., dddd H:mm' - }, - meridiemParse: /de|du/i, - isPM: function (input) { - return input.charAt(1).toLowerCase() === 'u'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower === true ? 'de' : 'DE'; - } else { - return isLower === true ? 'du' : 'DU'; - } - }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { - return week.call(this, true); - }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { - return week.call(this, false); - }, - sameElse : 'L' - }, - relativeTime : { - future : '%s múlva', - past : '%s', - s : hu__translate, - m : hu__translate, - mm : hu__translate, - h : hu__translate, - hh : hu__translate, - d : hu__translate, - dd : hu__translate, - M : hu__translate, - MM : hu__translate, - y : hu__translate, - yy : hu__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Armenian (hy-am) - //! author : Armendarabyan : https://github.com/armendarabyan - - function hy_am__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), - 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function hy_am__monthsShortCaseReplace(m, format) { - var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'); - return monthsShort[m.month()]; - } - function hy_am__weekdaysCaseReplace(m, format) { - var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'); - return weekdays[m.day()]; - } - - var hy_am = moment.defineLocale('hy-am', { - months : hy_am__monthsCaseReplace, - monthsShort : hy_am__monthsShortCaseReplace, - weekdays : hy_am__weekdaysCaseReplace, - weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY թ.', - LLL : 'D MMMM YYYY թ., HH:mm', - LLLL : 'dddd, D MMMM YYYY թ., HH:mm' - }, - calendar : { - sameDay: '[այսօր] LT', - nextDay: '[վաղը] LT', - lastDay: '[երեկ] LT', - nextWeek: function () { - return 'dddd [օրը ժամը] LT'; - }, - lastWeek: function () { - return '[անցած] dddd [օրը ժամը] LT'; - }, - sameElse: 'L' - }, - relativeTime : { - future : '%s հետո', - past : '%s առաջ', - s : 'մի քանի վայրկյան', - m : 'րոպե', - mm : '%d րոպե', - h : 'ժամ', - hh : '%d ժամ', - d : 'օր', - dd : '%d օր', - M : 'ամիս', - MM : '%d ամիս', - y : 'տարի', - yy : '%d տարի' - }, - meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, - isPM: function (input) { - return /^(ցերեկվա|երեկոյան)$/.test(input); - }, - meridiem : function (hour) { - if (hour < 4) { - return 'գիշերվա'; - } else if (hour < 12) { - return 'առավոտվա'; - } else if (hour < 17) { - return 'ցերեկվա'; - } else { - return 'երեկոյան'; - } - }, - ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, - ordinal: function (number, period) { - switch (period) { - case 'DDD': - case 'w': - case 'W': - case 'DDDo': - if (number === 1) { - return number + '-ին'; - } - return number + '-րդ'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Bahasa Indonesia (id) - //! author : Mohammad Satrio Utomo : https://github.com/tyok - //! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan - - var id = moment.defineLocale('id', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|siang|sore|malam/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'siang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sore' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'siang'; - } else if (hours < 19) { - return 'sore'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lalu', - s : 'beberapa detik', - m : 'semenit', - mm : '%d menit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : icelandic (is) - //! author : Hinrik Örn Sigurðsson : https://github.com/hinrik - - function is__plural(n) { - if (n % 100 === 11) { - return true; - } else if (n % 10 === 1) { - return false; - } - return true; - } - function is__translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (is__plural(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (is__plural(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (is__plural(number)) { - if (withoutSuffix) { - return result + 'dagar'; - } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (is__plural(number)) { - if (withoutSuffix) { - return result + 'mánuðir'; - } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (is__plural(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); - } - } - - var is = moment.defineLocale('is', { - months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), - weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), - weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), - weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' - }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'eftir %s', - past : 'fyrir %s síðan', - s : is__translate, - m : is__translate, - mm : is__translate, - h : 'klukkustund', - hh : is__translate, - d : is__translate, - dd : is__translate, - M : is__translate, - MM : is__translate, - y : is__translate, - yy : is__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : italian (it) - //! author : Lorenzo : https://github.com/aliem - //! author: Mattia Larentis: https://github.com/nostalgiaz - - var it = moment.defineLocale('it', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'), - weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'), - weekdaysMin : 'D_L_Ma_Me_G_V_S'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[la scorsa] dddd [alle] LT'; - default: - return '[lo scorso] dddd [alle] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; - }, - past : '%s fa', - s : 'alcuni secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' - }, - ordinalParse : /\d{1,2}º/, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : japanese (ja) - //! author : LI Long : https://github.com/baryon - - var ja = moment.defineLocale('ja', { - months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), - weekdaysShort : '日_月_火_水_木_金_土'.split('_'), - weekdaysMin : '日_月_火_水_木_金_土'.split('_'), - longDateFormat : { - LT : 'Ah時m分', - LTS : 'Ah時m分s秒', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日Ah時m分', - LLLL : 'YYYY年M月D日Ah時m分 dddd' - }, - meridiemParse: /午前|午後/i, - isPM : function (input) { - return input === '午後'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return '午前'; - } else { - return '午後'; - } - }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : '[来週]dddd LT', - lastDay : '[昨日] LT', - lastWeek : '[前週]dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s後', - past : '%s前', - s : '数秒', - m : '1分', - mm : '%d分', - h : '1時間', - hh : '%d時間', - d : '1日', - dd : '%d日', - M : '1ヶ月', - MM : '%dヶ月', - y : '1年', - yy : '%d年' - } - }); - - //! moment.js locale configuration - //! locale : Boso Jowo (jv) - //! author : Rony Lantip : https://github.com/lantip - //! reference: http://jv.wikipedia.org/wiki/Basa_Jawa - - var jv = moment.defineLocale('jv', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), - weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /enjing|siyang|sonten|ndalu/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'enjing') { - return hour; - } else if (meridiem === 'siyang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sonten' || meridiem === 'ndalu') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'enjing'; - } else if (hours < 15) { - return 'siyang'; - } else if (hours < 19) { - return 'sonten'; - } else { - return 'ndalu'; - } - }, - calendar : { - sameDay : '[Dinten puniko pukul] LT', - nextDay : '[Mbenjang pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kala wingi pukul] LT', - lastWeek : 'dddd [kepengker pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'wonten ing %s', - past : '%s ingkang kepengker', - s : 'sawetawis detik', - m : 'setunggal menit', - mm : '%d menit', - h : 'setunggal jam', - hh : '%d jam', - d : 'sedinten', - dd : '%d dinten', - M : 'sewulan', - MM : '%d wulan', - y : 'setaun', - yy : '%d taun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Georgian (ka) - //! author : Irakli Janiashvili : https://github.com/irakli-janiashvili - - function ka__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, - nounCase = (/D[oD] *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function ka__weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') - }, - nounCase = (/(წინა|შემდეგ)/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; - } - - var ka = moment.defineLocale('ka', { - months : ka__monthsCaseReplace, - monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays : ka__weekdaysCaseReplace, - weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), - weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, 'ში') : - s + 'ში'; - }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { - return s.replace(/(ი|ე)$/, 'ის წინ'); - } - if ((/წელი/).test(s)) { - return s.replace(/წელი$/, 'წლის წინ'); - } - }, - s : 'რამდენიმე წამი', - m : 'წუთი', - mm : '%d წუთი', - h : 'საათი', - hh : '%d საათი', - d : 'დღე', - dd : '%d დღე', - M : 'თვე', - MM : '%d თვე', - y : 'წელი', - yy : '%d წელი' - }, - ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, - ordinal : function (number) { - if (number === 0) { - return number; - } - if (number === 1) { - return number + '-ლი'; - } - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { - return 'მე-' + number; - } - return number + '-ე'; - }, - week : { - dow : 1, - doy : 7 - } - }); - - //! moment.js locale configuration - //! locale : khmer (km) - //! author : Kruy Vanna : https://github.com/kruyvanna - - var km = moment.defineLocale('km', { - months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), - monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), - weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS : 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[ថ្ងៃនៈ ម៉ោង] LT', - nextDay: '[ស្អែក ម៉ោង] LT', - nextWeek: 'dddd [ម៉ោង] LT', - lastDay: '[ម្សិលមិញ ម៉ោង] LT', - lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L' - }, - relativeTime: { - future: '%sទៀត', - past: '%sមុន', - s: 'ប៉ុន្មានវិនាទី', - m: 'មួយនាទី', - mm: '%d នាទី', - h: 'មួយម៉ោង', - hh: '%d ម៉ោង', - d: 'មួយថ្ងៃ', - dd: '%d ថ្ងៃ', - M: 'មួយខែ', - MM: '%d ខែ', - y: 'មួយឆ្នាំ', - yy: '%d ឆ្នាំ' - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : korean (ko) - //! - //! authors - //! - //! - Kyungwook, Park : https://github.com/kyungw00k - //! - Jeeeyul Lee <jeeeyul@gmail.com> - - var ko = moment.defineLocale('ko', { - months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), - weekdaysShort : '일_월_화_수_목_금_토'.split('_'), - weekdaysMin : '일_월_화_수_목_금_토'.split('_'), - longDateFormat : { - LT : 'A h시 m분', - LTS : 'A h시 m분 s초', - L : 'YYYY.MM.DD', - LL : 'YYYY년 MMMM D일', - LLL : 'YYYY년 MMMM D일 A h시 m분', - LLLL : 'YYYY년 MMMM D일 dddd A h시 m분' - }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s 후', - past : '%s 전', - s : '몇초', - ss : '%d초', - m : '일분', - mm : '%d분', - h : '한시간', - hh : '%d시간', - d : '하루', - dd : '%d일', - M : '한달', - MM : '%d달', - y : '일년', - yy : '%d년' - }, - ordinalParse : /\d{1,2}일/, - ordinal : '%d일', - meridiemParse : /오전|오후/, - isPM : function (token) { - return token === '오후'; - }, - meridiem : function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; - } - }); - - //! moment.js locale configuration - //! locale : Luxembourgish (lb) - //! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz - - function lb__processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eng Minutt', 'enger Minutt'], - 'h': ['eng Stonn', 'enger Stonn'], - 'd': ['een Dag', 'engem Dag'], - 'M': ['ee Mount', 'engem Mount'], - 'y': ['ee Joer', 'engem Joer'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - function processFutureTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'a ' + string; - } - return 'an ' + string; - } - function processPastTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'viru ' + string; - } - return 'virun ' + string; - } - /** - * Returns true if the word before the given number loses the '-n' ending. - * e.g. 'an 10 Deeg' but 'a 5 Deeg' - * - * @param number {integer} - * @returns {boolean} - */ - function eifelerRegelAppliesToNumber(number) { - number = parseInt(number, 10); - if (isNaN(number)) { - return false; - } - if (number < 0) { - // Negative Number --> always true - return true; - } else if (number < 10) { - // Only 1 digit - if (4 <= number && number <= 7) { - return true; - } - return false; - } else if (number < 100) { - // 2 digits - var lastDigit = number % 10, firstDigit = number / 10; - if (lastDigit === 0) { - return eifelerRegelAppliesToNumber(firstDigit); - } - return eifelerRegelAppliesToNumber(lastDigit); - } else if (number < 10000) { - // 3 or 4 digits --> recursively check first digit - while (number >= 10) { - number = number / 10; - } - return eifelerRegelAppliesToNumber(number); - } else { - // Anything larger than 4 digits: recursively check first n-3 digits - number = number / 1000; - return eifelerRegelAppliesToNumber(number); - } - } - - var lb = moment.defineLocale('lb', { - months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), - weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'H:mm [Auer]', - LTS: 'H:mm:ss [Auer]', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm [Auer]', - LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' - }, - calendar: { - sameDay: '[Haut um] LT', - sameElse: 'L', - nextDay: '[Muer um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gëschter um] LT', - lastWeek: function () { - // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule - switch (this.day()) { - case 2: - case 4: - return '[Leschten] dddd [um] LT'; - default: - return '[Leschte] dddd [um] LT'; - } - } - }, - relativeTime : { - future : processFutureTime, - past : processPastTime, - s : 'e puer Sekonnen', - m : lb__processRelativeTime, - mm : '%d Minutten', - h : lb__processRelativeTime, - hh : '%d Stonnen', - d : lb__processRelativeTime, - dd : '%d Deeg', - M : lb__processRelativeTime, - MM : '%d Méint', - y : lb__processRelativeTime, - yy : '%d Joer' - }, - ordinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Lithuanian (lt) - //! author : Mindaugas Mozūras : https://github.com/mmozuras - - var lt__units = { - 'm' : 'minutė_minutės_minutę', - 'mm': 'minutės_minučių_minutes', - 'h' : 'valanda_valandos_valandą', - 'hh': 'valandos_valandų_valandas', - 'd' : 'diena_dienos_dieną', - 'dd': 'dienos_dienų_dienas', - 'M' : 'mėnuo_mėnesio_mėnesį', - 'MM': 'mėnesiai_mėnesių_mėnesius', - 'y' : 'metai_metų_metus', - 'yy': 'metai_metų_metus' - }, - weekDays = 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'); - function translateSeconds(number, withoutSuffix, key, isFuture) { - if (withoutSuffix) { - return 'kelios sekundės'; - } else { - return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; - } - } - function lt__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), - 'accusative': 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); - } - function special(number) { - return number % 10 === 0 || (number > 10 && number < 20); - } - function forms(key) { - return lt__units[key].split('_'); - } - function lt__translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - if (number === 1) { - return result + translateSingular(number, withoutSuffix, key[0], isFuture); - } else if (withoutSuffix) { - return result + (special(number) ? forms(key)[1] : forms(key)[0]); - } else { - if (isFuture) { - return result + forms(key)[1]; - } else { - return result + (special(number) ? forms(key)[1] : forms(key)[2]); - } - } - } - function relativeWeekDay(moment, format) { - var nominative = format.indexOf('dddd HH:mm') === -1, - weekDay = weekDays[moment.day()]; - return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + 'į'; - } - - var lt = moment.defineLocale('lt', { - months : lt__monthsCaseReplace, - monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays : relativeWeekDay, - weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), - weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY [m.] MMMM D [d.]', - LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', - l : 'YYYY-MM-DD', - ll : 'YYYY [m.] MMMM D [d.]', - lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' - }, - calendar : { - sameDay : '[Šiandien] LT', - nextDay : '[Rytoj] LT', - nextWeek : 'dddd LT', - lastDay : '[Vakar] LT', - lastWeek : '[Praėjusį] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : 'po %s', - past : 'prieš %s', - s : translateSeconds, - m : translateSingular, - mm : lt__translate, - h : translateSingular, - hh : lt__translate, - d : translateSingular, - dd : lt__translate, - M : translateSingular, - MM : lt__translate, - y : translateSingular, - yy : lt__translate - }, - ordinalParse: /\d{1,2}-oji/, - ordinal : function (number) { - return number + '-oji'; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : latvian (lv) - //! author : Kristaps Karlsons : https://github.com/skakri - //! author : Jānis Elmeris : https://github.com/JanisE - - var lv__units = { - 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'h': 'stundas_stundām_stunda_stundas'.split('_'), - 'hh': 'stundas_stundām_stunda_stundas'.split('_'), - 'd': 'dienas_dienām_diena_dienas'.split('_'), - 'dd': 'dienas_dienām_diena_dienas'.split('_'), - 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'y': 'gada_gadiem_gads_gadi'.split('_'), - 'yy': 'gada_gadiem_gads_gadi'.split('_') - }; - /** - * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. - */ - function format(forms, number, withoutSuffix) { - if (withoutSuffix) { - // E.g. "21 minūte", "3 minūtes". - return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; - } else { - // E.g. "21 minūtes" as in "pēc 21 minūtes". - // E.g. "3 minūtēm" as in "pēc 3 minūtēm". - return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; - } - } - function lv__relativeTimeWithPlural(number, withoutSuffix, key) { - return number + ' ' + format(lv__units[key], number, withoutSuffix); - } - function relativeTimeWithSingular(number, withoutSuffix, key) { - return format(lv__units[key], number, withoutSuffix); - } - function relativeSeconds(number, withoutSuffix) { - return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; - } - - var lv = moment.defineLocale('lv', { - months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), - weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY.', - LL : 'YYYY. [gada] D. MMMM', - LLL : 'YYYY. [gada] D. MMMM, HH:mm', - LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' - }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'pēc %s', - past : 'pirms %s', - s : relativeSeconds, - m : relativeTimeWithSingular, - mm : lv__relativeTimeWithPlural, - h : relativeTimeWithSingular, - hh : lv__relativeTimeWithPlural, - d : relativeTimeWithSingular, - dd : lv__relativeTimeWithPlural, - M : relativeTimeWithSingular, - MM : lv__relativeTimeWithPlural, - y : relativeTimeWithSingular, - yy : lv__relativeTimeWithPlural - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Montenegrin (me) - //! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac - - var me__translator = { - words: { //Different grammatical cases - m: ['jedan minut', 'jednog minuta'], - mm: ['minut', 'minuta', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mjesec', 'mjeseca', 'mjeseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = me__translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + me__translator.correctGrammaticalCase(number, wordKey); - } - } - }; - - var me = moment.defineLocale('me', { - months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], - monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], - weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sjutra u] LT', - - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedjelje] [u] LT', - '[prošlog] [ponedjeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srijede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'nekoliko sekundi', - m : me__translator.translate, - mm : me__translator.translate, - h : me__translator.translate, - hh : me__translator.translate, - d : 'dan', - dd : me__translator.translate, - M : 'mjesec', - MM : me__translator.translate, - y : 'godinu', - yy : me__translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : macedonian (mk) - //! author : Borislav Mickov : https://github.com/B0k0 - - var mk = moment.defineLocale('mk', { - months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), - weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), - weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Денес во] LT', - nextDay : '[Утре во] LT', - nextWeek : 'dddd [во] LT', - lastDay : '[Вчера во] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[Во изминатата] dddd [во] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Во изминатиот] dddd [во] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'после %s', - past : 'пред %s', - s : 'неколку секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дена', - M : 'месец', - MM : '%d месеци', - y : 'година', - yy : '%d години' - }, - ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : malayalam (ml) - //! author : Floyd Pink : https://github.com/floydpink - - var ml = moment.defineLocale('ml', { - months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), - monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), - weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), - weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), - weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), - longDateFormat : { - LT : 'A h:mm -നു', - LTS : 'A h:mm:ss -നു', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm -നു', - LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' - }, - calendar : { - sameDay : '[ഇന്ന്] LT', - nextDay : '[നാളെ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ഇന്നലെ] LT', - lastWeek : '[കഴിഞ്ഞ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s കഴിഞ്ഞ്', - past : '%s മുൻപ്', - s : 'അൽപ നിമിഷങ്ങൾ', - m : 'ഒരു മിനിറ്റ്', - mm : '%d മിനിറ്റ്', - h : 'ഒരു മണിക്കൂർ', - hh : '%d മണിക്കൂർ', - d : 'ഒരു ദിവസം', - dd : '%d ദിവസം', - M : 'ഒരു മാസം', - MM : '%d മാസം', - y : 'ഒരു വർഷം', - yy : '%d വർഷം' - }, - meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, - isPM : function (input) { - return /^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'രാത്രി'; - } else if (hour < 12) { - return 'രാവിലെ'; - } else if (hour < 17) { - return 'ഉച്ച കഴിഞ്ഞ്'; - } else if (hour < 20) { - return 'വൈകുന്നേരം'; - } else { - return 'രാത്രി'; - } - } - }); - - //! moment.js locale configuration - //! locale : Marathi (mr) - //! author : Harshad Kale : https://github.com/kalehv - - var mr__symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - mr__numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - var mr = moment.defineLocale('mr', { - months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), - weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm वाजता', - LTS : 'A h:mm:ss वाजता', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm वाजता', - LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[उद्या] LT', - nextWeek : 'dddd, LT', - lastDay : '[काल] LT', - lastWeek: '[मागील] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s नंतर', - past : '%s पूर्वी', - s : 'सेकंद', - m: 'एक मिनिट', - mm: '%d मिनिटे', - h : 'एक तास', - hh : '%d तास', - d : 'एक दिवस', - dd : '%d दिवस', - M : 'एक महिना', - MM : '%d महिने', - y : 'एक वर्ष', - yy : '%d वर्षे' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return mr__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return mr__symbolMap[match]; - }); - }, - meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात्री') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सकाळी') { - return hour; - } else if (meridiem === 'दुपारी') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'सायंकाळी') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'रात्री'; - } else if (hour < 10) { - return 'सकाळी'; - } else if (hour < 17) { - return 'दुपारी'; - } else if (hour < 20) { - return 'सायंकाळी'; - } else { - return 'रात्री'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Bahasa Malaysia (ms-MY) - //! author : Weldan Jamili : https://github.com/weldan - - var ms_my = moment.defineLocale('ms-my', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Bahasa Malaysia (ms-MY) - //! author : Weldan Jamili : https://github.com/weldan - - var ms = moment.defineLocale('ms', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Burmese (my) - //! author : Squar team, mysquar.com - - var my__symbolMap = { - '1': '၁', - '2': '၂', - '3': '၃', - '4': '၄', - '5': '၅', - '6': '၆', - '7': '၇', - '8': '၈', - '9': '၉', - '0': '၀' - }, my__numberMap = { - '၁': '1', - '၂': '2', - '၃': '3', - '၄': '4', - '၅': '5', - '၆': '6', - '၇': '7', - '၈': '8', - '၉': '9', - '၀': '0' - }; - - var my = moment.defineLocale('my', { - months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), - monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), - weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), - weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[ယနေ.] LT [မှာ]', - nextDay: '[မနက်ဖြန်] LT [မှာ]', - nextWeek: 'dddd LT [မှာ]', - lastDay: '[မနေ.က] LT [မှာ]', - lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', - sameElse: 'L' - }, - relativeTime: { - future: 'လာမည့် %s မှာ', - past: 'လွန်ခဲ့သော %s က', - s: 'စက္ကန်.အနည်းငယ်', - m: 'တစ်မိနစ်', - mm: '%d မိနစ်', - h: 'တစ်နာရီ', - hh: '%d နာရီ', - d: 'တစ်ရက်', - dd: '%d ရက်', - M: 'တစ်လ', - MM: '%d လ', - y: 'တစ်နှစ်', - yy: '%d နှစ်' - }, - preparse: function (string) { - return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { - return my__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return my__symbolMap[match]; - }); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : norwegian bokmål (nb) - //! authors : Espen Hovlandsdal : https://github.com/rexxars - //! Sigurd Gartmann : https://github.com/sigurdga - - var nb = moment.defineLocale('nb', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tirs_ons_tors_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'H.mm', - LTS : 'H.mm.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H.mm', - LLLL : 'dddd D. MMMM YYYY [kl.] H.mm' - }, - calendar : { - sameDay: '[i dag kl.] LT', - nextDay: '[i morgen kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[i går kl.] LT', - lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'for %s siden', - s : 'noen sekunder', - m : 'ett minutt', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dager', - M : 'en måned', - MM : '%d måneder', - y : 'ett år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : nepali/nepalese - //! author : suvash : https://github.com/suvash - - var ne__symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - ne__numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - var ne = moment.defineLocale('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split('_'), - longDateFormat : { - LT : 'Aको h:mm बजे', - LTS : 'Aको h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, Aको h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return ne__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return ne__symbolMap[match]; - }); - }, - meridiemParse: /राती|बिहान|दिउँसो|बेलुका|साँझ|राती/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'राती') { - return hour < 3 ? hour : hour + 12; - } else if (meridiem === 'बिहान') { - return hour; - } else if (meridiem === 'दिउँसो') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'बेलुका' || meridiem === 'साँझ') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 3) { - return 'राती'; - } else if (hour < 10) { - return 'बिहान'; - } else if (hour < 15) { - return 'दिउँसो'; - } else if (hour < 18) { - return 'बेलुका'; - } else if (hour < 20) { - return 'साँझ'; - } else { - return 'राती'; - } - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[भोली] LT', - nextWeek : '[आउँदो] dddd[,] LT', - lastDay : '[हिजो] LT', - lastWeek : '[गएको] dddd[,] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%sमा', - past : '%s अगाडी', - s : 'केही समय', - m : 'एक मिनेट', - mm : '%d मिनेट', - h : 'एक घण्टा', - hh : '%d घण्टा', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महिना', - MM : '%d महिना', - y : 'एक बर्ष', - yy : '%d बर्ष' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : dutch (nl) - //! author : Joris Röling : https://github.com/jjupiter - - var nl__monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - nl__monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - - var nl = moment.defineLocale('nl', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return nl__monthsShortWithoutDots[m.month()]; - } else { - return nl__monthsShortWithDots[m.month()]; - } - }, - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : norwegian nynorsk (nn) - //! author : https://github.com/mechuwind - - var nn = moment.defineLocale('nn', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), - weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), - weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[I dag klokka] LT', - nextDay: '[I morgon klokka] LT', - nextWeek: 'dddd [klokka] LT', - lastDay: '[I går klokka] LT', - lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'for %s sidan', - s : 'nokre sekund', - m : 'eit minutt', - mm : '%d minutt', - h : 'ein time', - hh : '%d timar', - d : 'ein dag', - dd : '%d dagar', - M : 'ein månad', - MM : '%d månader', - y : 'eit år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : polish (pl) - //! author : Rafal Hirsz : https://github.com/evoL - - var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), - monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); - function pl__plural(n) { - return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); - } - function pl__translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (pl__plural(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (pl__plural(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (pl__plural(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (pl__plural(number) ? 'lata' : 'lat'); - } - } - - var pl = moment.defineLocale('pl', { - months : function (momentToFormat, format) { - if (format === '') { - // Hack: if format empty we know this is used to generate - // RegExp by moment. Give then back both valid forms of months - // in RegExp ready format. - return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; - } else if (/D MMMM/.test(format)) { - return monthsSubjective[momentToFormat.month()]; - } else { - return monthsNominative[momentToFormat.month()]; - } - }, - monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), - weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), - weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'), - weekdaysMin : 'N_Pn_Wt_Śr_Cz_Pt_So'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Dziś o] LT', - nextDay: '[Jutro o] LT', - nextWeek: '[W] dddd [o] LT', - lastDay: '[Wczoraj o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : '%s temu', - s : 'kilka sekund', - m : pl__translate, - mm : pl__translate, - h : pl__translate, - hh : pl__translate, - d : '1 dzień', - dd : '%d dni', - M : 'miesiąc', - MM : pl__translate, - y : 'rok', - yy : pl__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : brazilian portuguese (pt-br) - //! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira - - var pt_br = moment.defineLocale('pt-br', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : '%s atrás', - s : 'poucos segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - ordinalParse: /\d{1,2}º/, - ordinal : '%dº' - }); - - //! moment.js locale configuration - //! locale : portuguese (pt) - //! author : Jefferson : https://github.com/jalex79 - - var pt = moment.defineLocale('pt', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - ordinalParse: /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : romanian (ro) - //! author : Vlad Gurdiga : https://github.com/gurdiga - //! author : Valentin Agachi : https://github.com/avaly - - function ro__relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'minute', - 'hh': 'ore', - 'dd': 'zile', - 'MM': 'luni', - 'yy': 'ani' - }, - separator = ' '; - if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { - separator = ' de '; - } - return number + separator + format[key]; - } - - var ro = moment.defineLocale('ro', { - months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), - monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), - weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), - weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), - weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[azi la] LT', - nextDay: '[mâine la] LT', - nextWeek: 'dddd [la] LT', - lastDay: '[ieri la] LT', - lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'peste %s', - past : '%s în urmă', - s : 'câteva secunde', - m : 'un minut', - mm : ro__relativeTimeWithPlural, - h : 'o oră', - hh : ro__relativeTimeWithPlural, - d : 'o zi', - dd : ro__relativeTimeWithPlural, - M : 'o lună', - MM : ro__relativeTimeWithPlural, - y : 'un an', - yy : ro__relativeTimeWithPlural - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : russian (ru) - //! author : Viktorminator : https://github.com/Viktorminator - //! Author : Menelion Elensúle : https://github.com/Oire - - function ru__plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function ru__relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' - }; - if (key === 'm') { - return withoutSuffix ? 'минута' : 'минуту'; - } - else { - return number + ' ' + ru__plural(format[key], +number); - } - } - function ru__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function ru__monthsShortCaseReplace(m, format) { - var monthsShort = { - 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return monthsShort[nounCase][m.month()]; - } - function ru__weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') - }, - nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; - } - - var ru = moment.defineLocale('ru', { - months : ru__monthsCaseReplace, - monthsShort : ru__monthsShortCaseReplace, - weekdays : ru__weekdaysCaseReplace, - weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., HH:mm', - LLLL : 'dddd, D MMMM YYYY г., HH:mm' - }, - calendar : { - sameDay: '[Сегодня в] LT', - nextDay: '[Завтра в] LT', - lastDay: '[Вчера в] LT', - nextWeek: function () { - return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; - }, - lastWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В прошлое] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd [в] LT'; - } else { - return '[В] dddd [в] LT'; - } - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'через %s', - past : '%s назад', - s : 'несколько секунд', - m : ru__relativeTimeWithPlural, - mm : ru__relativeTimeWithPlural, - h : 'час', - hh : ru__relativeTimeWithPlural, - d : 'день', - dd : ru__relativeTimeWithPlural, - M : 'месяц', - MM : ru__relativeTimeWithPlural, - y : 'год', - yy : ru__relativeTimeWithPlural - }, - meridiemParse: /ночи|утра|дня|вечера/i, - isPM : function (input) { - return /^(дня|вечера)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночи'; - } else if (hour < 12) { - return 'утра'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечера'; - } - }, - ordinalParse: /\d{1,2}-(й|го|я)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Sinhalese (si) - //! author : Sampath Sitinamaluwa : https://github.com/sampathsris - - var si = moment.defineLocale('si', { - months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), - monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), - weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), - weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'), - weekdaysMin : 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'), - longDateFormat : { - LT : 'a h:mm', - LTS : 'a h:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY MMMM D', - LLL : 'YYYY MMMM D, a h:mm', - LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' - }, - calendar : { - sameDay : '[අද] LT[ට]', - nextDay : '[හෙට] LT[ට]', - nextWeek : 'dddd LT[ට]', - lastDay : '[ඊයේ] LT[ට]', - lastWeek : '[පසුගිය] dddd LT[ට]', - sameElse : 'L' - }, - relativeTime : { - future : '%sකින්', - past : '%sකට පෙර', - s : 'තත්පර කිහිපය', - m : 'මිනිත්තුව', - mm : 'මිනිත්තු %d', - h : 'පැය', - hh : 'පැය %d', - d : 'දිනය', - dd : 'දින %d', - M : 'මාසය', - MM : 'මාස %d', - y : 'වසර', - yy : 'වසර %d' - }, - ordinalParse: /\d{1,2} වැනි/, - ordinal : function (number) { - return number + ' වැනි'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'ප.ව.' : 'පස් වරු'; - } else { - return isLower ? 'පෙ.ව.' : 'පෙර වරු'; - } - } - }); - - //! moment.js locale configuration - //! locale : slovak (sk) - //! author : Martin Minka : https://github.com/k2s - //! based on work of petrbela : https://github.com/petrbela - - var sk__months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), - sk__monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); - function sk__plural(n) { - return (n > 1) && (n < 5); - } - function sk__translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (sk__plural(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (sk__plural(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (sk__plural(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (sk__plural(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (sk__plural(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } - break; - } - } - - var sk = moment.defineLocale('sk', { - months : sk__months, - monthsShort : sk__monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(sk__months, sk__monthsShort)), - weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), - weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), - weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[dnes o] LT', - nextDay: '[zajtra o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo štvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; - } - }, - lastDay: '[včera o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pred %s', - s : sk__translate, - m : sk__translate, - mm : sk__translate, - h : sk__translate, - hh : sk__translate, - d : sk__translate, - dd : sk__translate, - M : sk__translate, - MM : sk__translate, - y : sk__translate, - yy : sk__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : slovenian (sl) - //! author : Robert Sedovšek : https://github.com/sedovsek - - function sl__processRelativeTime(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += withoutSuffix ? 'minuta' : 'minuto'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'minute' : 'minutami'; - } else { - result += withoutSuffix || isFuture ? 'minut' : 'minutami'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += withoutSuffix ? 'ura' : 'uro'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'uri' : 'urama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'ure' : 'urami'; - } else { - result += withoutSuffix || isFuture ? 'ur' : 'urami'; - } - return result; - case 'd': - return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; - case 'dd': - if (number === 1) { - result += withoutSuffix || isFuture ? 'dan' : 'dnem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; - } else { - result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; - } - return result; - case 'M': - return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; - case 'MM': - if (number === 1) { - result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; - } else { - result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; - } - return result; - case 'y': - return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; - case 'yy': - if (number === 1) { - result += withoutSuffix || isFuture ? 'leto' : 'letom'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'leti' : 'letoma'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'leta' : 'leti'; - } else { - result += withoutSuffix || isFuture ? 'let' : 'leti'; - } - return result; - } - } - - var sl = moment.defineLocale('sl', { - months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), - weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), - weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), - weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', - - nextWeek : function () { - switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - return '[prejšnjo] [nedeljo] [ob] LT'; - case 3: - return '[prejšnjo] [sredo] [ob] LT'; - case 6: - return '[prejšnjo] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'čez %s', - past : 'pred %s', - s : sl__processRelativeTime, - m : sl__processRelativeTime, - mm : sl__processRelativeTime, - h : sl__processRelativeTime, - hh : sl__processRelativeTime, - d : sl__processRelativeTime, - dd : sl__processRelativeTime, - M : sl__processRelativeTime, - MM : sl__processRelativeTime, - y : sl__processRelativeTime, - yy : sl__processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Albanian (sq) - //! author : Flakërim Ismani : https://github.com/flakerimi - //! author: Menelion Elensúle: https://github.com/Oire (tests) - //! author : Oerd Cukalla : https://github.com/oerd (fixes) - - var sq = moment.defineLocale('sq', { - months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), - monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), - weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), - weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), - weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), - meridiemParse: /PD|MD/, - isPM: function (input) { - return input.charAt(0) === 'M'; - }, - meridiem : function (hours, minutes, isLower) { - return hours < 12 ? 'PD' : 'MD'; - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Sot në] LT', - nextDay : '[Nesër në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'në %s', - past : '%s më parë', - s : 'disa sekonda', - m : 'një minutë', - mm : '%d minuta', - h : 'një orë', - hh : '%d orë', - d : 'një ditë', - dd : '%d ditë', - M : 'një muaj', - MM : '%d muaj', - y : 'një vit', - yy : '%d vite' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Serbian-cyrillic (sr-cyrl) - //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j - - var sr_cyrl__translator = { - words: { //Different grammatical cases - m: ['један минут', 'једне минуте'], - mm: ['минут', 'минуте', 'минута'], - h: ['један сат', 'једног сата'], - hh: ['сат', 'сата', 'сати'], - dd: ['дан', 'дана', 'дана'], - MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = sr_cyrl__translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + sr_cyrl__translator.correctGrammaticalCase(number, wordKey); - } - } - }; - - var sr_cyrl = moment.defineLocale('sr-cyrl', { - months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'], - monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'], - weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'], - weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[данас у] LT', - nextDay: '[сутра у] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; - } - }, - lastDay : '[јуче у] LT', - lastWeek : function () { - var lastWeekDays = [ - '[прошле] [недеље] [у] LT', - '[прошлог] [понедељка] [у] LT', - '[прошлог] [уторка] [у] LT', - '[прошле] [среде] [у] LT', - '[прошлог] [четвртка] [у] LT', - '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'за %s', - past : 'пре %s', - s : 'неколико секунди', - m : sr_cyrl__translator.translate, - mm : sr_cyrl__translator.translate, - h : sr_cyrl__translator.translate, - hh : sr_cyrl__translator.translate, - d : 'дан', - dd : sr_cyrl__translator.translate, - M : 'месец', - MM : sr_cyrl__translator.translate, - y : 'годину', - yy : sr_cyrl__translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Serbian-latin (sr) - //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j - - var sr__translator = { - words: { //Different grammatical cases - m: ['jedan minut', 'jedne minute'], - mm: ['minut', 'minute', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = sr__translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + sr__translator.correctGrammaticalCase(number, wordKey); - } - } - }; - - var sr = moment.defineLocale('sr', { - months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], - monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], - weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedelje] [u] LT', - '[prošlog] [ponedeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pre %s', - s : 'nekoliko sekundi', - m : sr__translator.translate, - mm : sr__translator.translate, - h : sr__translator.translate, - hh : sr__translator.translate, - d : 'dan', - dd : sr__translator.translate, - M : 'mesec', - MM : sr__translator.translate, - y : 'godinu', - yy : sr__translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : swedish (sv) - //! author : Jens Alm : https://github.com/ulmus - - var sv = moment.defineLocale('sv', { - months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), - weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), - weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Idag] LT', - nextDay: '[Imorgon] LT', - lastDay: '[Igår] LT', - nextWeek: '[På] dddd LT', - lastWeek: '[I] dddd[s] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'för %s sedan', - s : 'några sekunder', - m : 'en minut', - mm : '%d minuter', - h : 'en timme', - hh : '%d timmar', - d : 'en dag', - dd : '%d dagar', - M : 'en månad', - MM : '%d månader', - y : 'ett år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}(e|a)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : tamil (ta) - //! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 - - var ta = moment.defineLocale('ta', { - months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), - weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), - weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, HH:mm', - LLLL : 'dddd, D MMMM YYYY, HH:mm' - }, - calendar : { - sameDay : '[இன்று] LT', - nextDay : '[நாளை] LT', - nextWeek : 'dddd, LT', - lastDay : '[நேற்று] LT', - lastWeek : '[கடந்த வாரம்] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s இல்', - past : '%s முன்', - s : 'ஒரு சில விநாடிகள்', - m : 'ஒரு நிமிடம்', - mm : '%d நிமிடங்கள்', - h : 'ஒரு மணி நேரம்', - hh : '%d மணி நேரம்', - d : 'ஒரு நாள்', - dd : '%d நாட்கள்', - M : 'ஒரு மாதம்', - MM : '%d மாதங்கள்', - y : 'ஒரு வருடம்', - yy : '%d ஆண்டுகள்' - }, - ordinalParse: /\d{1,2}வது/, - ordinal : function (number) { - return number + 'வது'; - }, - // refer http://ta.wikipedia.org/s/1er1 - meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, - meridiem : function (hour, minute, isLower) { - if (hour < 2) { - return ' யாமம்'; - } else if (hour < 6) { - return ' வைகறை'; // வைகறை - } else if (hour < 10) { - return ' காலை'; // காலை - } else if (hour < 14) { - return ' நண்பகல்'; // நண்பகல் - } else if (hour < 18) { - return ' எற்பாடு'; // எற்பாடு - } else if (hour < 22) { - return ' மாலை'; // மாலை - } else { - return ' யாமம்'; - } - }, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'யாமம்') { - return hour < 2 ? hour : hour + 12; - } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { - return hour; - } else if (meridiem === 'நண்பகல்') { - return hour >= 10 ? hour : hour + 12; - } else { - return hour + 12; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : thai (th) - //! author : Kridsada Thanabulpong : https://github.com/sirn - - var th = moment.defineLocale('th', { - months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), - monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'), - weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), - weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference - weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), - longDateFormat : { - LT : 'H นาฬิกา m นาที', - LTS : 'H นาฬิกา m นาที s วินาที', - L : 'YYYY/MM/DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY เวลา H นาฬิกา m นาที', - LLLL : 'วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที' - }, - meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, - isPM: function (input) { - return input === 'หลังเที่ยง'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ก่อนเที่ยง'; - } else { - return 'หลังเที่ยง'; - } - }, - calendar : { - sameDay : '[วันนี้ เวลา] LT', - nextDay : '[พรุ่งนี้ เวลา] LT', - nextWeek : 'dddd[หน้า เวลา] LT', - lastDay : '[เมื่อวานนี้ เวลา] LT', - lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'อีก %s', - past : '%sที่แล้ว', - s : 'ไม่กี่วินาที', - m : '1 นาที', - mm : '%d นาที', - h : '1 ชั่วโมง', - hh : '%d ชั่วโมง', - d : '1 วัน', - dd : '%d วัน', - M : '1 เดือน', - MM : '%d เดือน', - y : '1 ปี', - yy : '%d ปี' - } - }); - - //! moment.js locale configuration - //! locale : Tagalog/Filipino (tl-ph) - //! author : Dan Hagman - - var tl_ph = moment.defineLocale('tl-ph', { - months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), - monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), - weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'MM/D/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY HH:mm', - LLLL : 'dddd, MMMM DD, YYYY HH:mm' - }, - calendar : { - sameDay: '[Ngayon sa] LT', - nextDay: '[Bukas sa] LT', - nextWeek: 'dddd [sa] LT', - lastDay: '[Kahapon sa] LT', - lastWeek: 'dddd [huling linggo] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'sa loob ng %s', - past : '%s ang nakalipas', - s : 'ilang segundo', - m : 'isang minuto', - mm : '%d minuto', - h : 'isang oras', - hh : '%d oras', - d : 'isang araw', - dd : '%d araw', - M : 'isang buwan', - MM : '%d buwan', - y : 'isang taon', - yy : '%d taon' - }, - ordinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : turkish (tr) - //! authors : Erhan Gundogan : https://github.com/erhangundogan, - //! Burak Yiğit Kaya: https://github.com/BYK - - var tr__suffixes = { - 1: '\'inci', - 5: '\'inci', - 8: '\'inci', - 70: '\'inci', - 80: '\'inci', - 2: '\'nci', - 7: '\'nci', - 20: '\'nci', - 50: '\'nci', - 3: '\'üncü', - 4: '\'üncü', - 100: '\'üncü', - 6: '\'ncı', - 9: '\'uncu', - 10: '\'uncu', - 30: '\'uncu', - 60: '\'ıncı', - 90: '\'ıncı' - }; - - var tr = moment.defineLocale('tr', { - months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), - monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), - weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), - weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), - weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[haftaya] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen hafta] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s önce', - s : 'birkaç saniye', - m : 'bir dakika', - mm : '%d dakika', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir yıl', - yy : '%d yıl' - }, - ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + '\'ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (tr__suffixes[a] || tr__suffixes[b] || tr__suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : talossan (tzl) - //! author : Robin van der Vliet : https://github.com/robin0van0der0v with the help of Iustì Canun - - - var tzl = moment.defineLocale('tzl', { - months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), - monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), - weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), - weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), - weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'LT.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM [dallas] YYYY', - LLL : 'D. MMMM [dallas] YYYY LT', - LLLL : 'dddd, [li] D. MMMM [dallas] YYYY LT' - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'd\'o' : 'D\'O'; - } else { - return isLower ? 'd\'a' : 'D\'A'; - } - }, - calendar : { - sameDay : '[oxhi à] LT', - nextDay : '[demà à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[ieiri à] LT', - lastWeek : '[sür el] dddd [lasteu à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'osprei %s', - past : 'ja%s', - s : tzl__processRelativeTime, - m : tzl__processRelativeTime, - mm : tzl__processRelativeTime, - h : tzl__processRelativeTime, - hh : tzl__processRelativeTime, - d : tzl__processRelativeTime, - dd : tzl__processRelativeTime, - M : tzl__processRelativeTime, - MM : tzl__processRelativeTime, - y : tzl__processRelativeTime, - yy : tzl__processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - function tzl__processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's': ['viensas secunds', '\'iensas secunds'], - 'm': ['\'n míut', '\'iens míut'], - 'mm': [number + ' míuts', ' ' + number + ' míuts'], - 'h': ['\'n þora', '\'iensa þora'], - 'hh': [number + ' þoras', ' ' + number + ' þoras'], - 'd': ['\'n ziua', '\'iensa ziua'], - 'dd': [number + ' ziuas', ' ' + number + ' ziuas'], - 'M': ['\'n mes', '\'iens mes'], - 'MM': [number + ' mesen', ' ' + number + ' mesen'], - 'y': ['\'n ar', '\'iens ar'], - 'yy': [number + ' ars', ' ' + number + ' ars'] - }; - return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1].trim()); - } - - //! moment.js locale configuration - //! locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn) - //! author : Abdel Said : https://github.com/abdelsaid - - var tzm_latn = moment.defineLocale('tzm-latn', { - months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[asdkh g] LT', - nextDay: '[aska g] LT', - nextWeek: 'dddd [g] LT', - lastDay: '[assant g] LT', - lastWeek: 'dddd [g] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dadkh s yan %s', - past : 'yan %s', - s : 'imik', - m : 'minuḍ', - mm : '%d minuḍ', - h : 'saɛa', - hh : '%d tassaɛin', - d : 'ass', - dd : '%d ossan', - M : 'ayowr', - MM : '%d iyyirn', - y : 'asgas', - yy : '%d isgasn' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Morocco Central Atlas Tamaziɣt (tzm) - //! author : Abdel Said : https://github.com/abdelsaid - - var tzm = moment.defineLocale('tzm', { - months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', - nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', - nextWeek: 'dddd [ⴴ] LT', - lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', - lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', - past : 'ⵢⴰⵏ %s', - s : 'ⵉⵎⵉⴽ', - m : 'ⵎⵉⵏⵓⴺ', - mm : '%d ⵎⵉⵏⵓⴺ', - h : 'ⵙⴰⵄⴰ', - hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', - d : 'ⴰⵙⵙ', - dd : '%d oⵙⵙⴰⵏ', - M : 'ⴰⵢoⵓⵔ', - MM : '%d ⵉⵢⵢⵉⵔⵏ', - y : 'ⴰⵙⴳⴰⵙ', - yy : '%d ⵉⵙⴳⴰⵙⵏ' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : ukrainian (uk) - //! author : zemlanin : https://github.com/zemlanin - //! Author : Menelion Elensúle : https://github.com/Oire - - function uk__plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function uk__relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'хвилина_хвилини_хвилин', - 'hh': 'година_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' - }; - if (key === 'm') { - return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { - return withoutSuffix ? 'година' : 'годину'; - } - else { - return number + ' ' + uk__plural(format[key], +number); - } - } - function uk__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), - 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') - }, - nounCase = (/D[oD]? *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function uk__weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }, - nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); - return weekdays[nounCase][m.day()]; - } - function processHoursFunction(str) { - return function () { - return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; - }; - } - - var uk = moment.defineLocale('uk', { - months : uk__monthsCaseReplace, - monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), - weekdays : uk__weekdaysCaseReplace, - weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY р.', - LLL : 'D MMMM YYYY р., HH:mm', - LLLL : 'dddd, D MMMM YYYY р., HH:mm' - }, - calendar : { - sameDay: processHoursFunction('[Сьогодні '), - nextDay: processHoursFunction('[Завтра '), - lastDay: processHoursFunction('[Вчора '), - nextWeek: processHoursFunction('[У] dddd ['), - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'за %s', - past : '%s тому', - s : 'декілька секунд', - m : uk__relativeTimeWithPlural, - mm : uk__relativeTimeWithPlural, - h : 'годину', - hh : uk__relativeTimeWithPlural, - d : 'день', - dd : uk__relativeTimeWithPlural, - M : 'місяць', - MM : uk__relativeTimeWithPlural, - y : 'рік', - yy : uk__relativeTimeWithPlural - }, - // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason - meridiemParse: /ночі|ранку|дня|вечора/, - isPM: function (input) { - return /^(дня|вечора)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночі'; - } else if (hour < 12) { - return 'ранку'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечора'; - } - }, - ordinalParse: /\d{1,2}-(й|го)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : uzbek (uz) - //! author : Sardor Muminov : https://github.com/muminoff - - var uz = moment.defineLocale('uz', { - months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), - weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), - weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - calendar : { - sameDay : '[Бугун соат] LT [да]', - nextDay : '[Эртага] LT [да]', - nextWeek : 'dddd [куни соат] LT [да]', - lastDay : '[Кеча соат] LT [да]', - lastWeek : '[Утган] dddd [куни соат] LT [да]', - sameElse : 'L' - }, - relativeTime : { - future : 'Якин %s ичида', - past : 'Бир неча %s олдин', - s : 'фурсат', - m : 'бир дакика', - mm : '%d дакика', - h : 'бир соат', - hh : '%d соат', - d : 'бир кун', - dd : '%d кун', - M : 'бир ой', - MM : '%d ой', - y : 'бир йил', - yy : '%d йил' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : vietnamese (vi) - //! author : Bang Nguyen : https://github.com/bangnk - - var vi = moment.defineLocale('vi', { - months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), - monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), - weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), - weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [năm] YYYY', - LLL : 'D MMMM [năm] YYYY HH:mm', - LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', - l : 'DD/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Hôm nay lúc] LT', - nextDay: '[Ngày mai lúc] LT', - nextWeek: 'dddd [tuần tới lúc] LT', - lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần rồi lúc] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s tới', - past : '%s trước', - s : 'vài giây', - m : 'một phút', - mm : '%d phút', - h : 'một giờ', - hh : '%d giờ', - d : 'một ngày', - dd : '%d ngày', - M : 'một tháng', - MM : '%d tháng', - y : 'một năm', - yy : '%d năm' - }, - ordinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : chinese (zh-cn) - //! author : suupic : https://github.com/suupic - //! author : Zeno Zeng : https://github.com/zenozeng - - var zh_cn = moment.defineLocale('zh-cn', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'Ah点mm分', - LTS : 'Ah点m分s秒', - L : 'YYYY-MM-DD', - LL : 'YYYY年MMMD日', - LLL : 'YYYY年MMMD日Ah点mm分', - LLLL : 'YYYY年MMMD日ddddAh点mm分', - l : 'YYYY-MM-DD', - ll : 'YYYY年MMMD日', - lll : 'YYYY年MMMD日Ah点mm分', - llll : 'YYYY年MMMD日ddddAh点mm分' - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || - meridiem === '上午') { - return hour; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } else { - // '中午' - return hour >= 11 ? hour : hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : function () { - return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT'; - }, - nextDay : function () { - return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT'; - }, - lastDay : function () { - return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT'; - }, - nextWeek : function () { - var startOfWeek, prefix; - startOfWeek = moment().startOf('week'); - prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; - return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; - }, - lastWeek : function () { - var startOfWeek, prefix; - startOfWeek = moment().startOf('week'); - prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; - return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; - }, - sameElse : 'LL' - }, - ordinalParse: /\d{1,2}(日|月|周)/, - ordinal : function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '周'; - default: - return number; - } - }, - relativeTime : { - future : '%s内', - past : '%s前', - s : '几秒', - m : '1 分钟', - mm : '%d 分钟', - h : '1 小时', - hh : '%d 小时', - d : '1 天', - dd : '%d 天', - M : '1 个月', - MM : '%d 个月', - y : '1 年', - yy : '%d 年' - }, - week : { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : traditional chinese (zh-tw) - //! author : Ben : https://github.com/ben-lin - - var zh_tw = moment.defineLocale('zh-tw', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'Ah點mm分', - LTS : 'Ah點m分s秒', - L : 'YYYY年MMMD日', - LL : 'YYYY年MMMD日', - LLL : 'YYYY年MMMD日Ah點mm分', - LLLL : 'YYYY年MMMD日ddddAh點mm分', - l : 'YYYY年MMMD日', - ll : 'YYYY年MMMD日', - lll : 'YYYY年MMMD日Ah點mm分', - llll : 'YYYY年MMMD日ddddAh點mm分' - }, - meridiemParse: /早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - ordinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { - switch (period) { - case 'd' : - case 'D' : - case 'DDD' : - return number + '日'; - case 'M' : - return number + '月'; - case 'w' : - case 'W' : - return number + '週'; - default : - return number; - } - }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - m : '一分鐘', - mm : '%d分鐘', - h : '一小時', - hh : '%d小時', - d : '一天', - dd : '%d天', - M : '一個月', - MM : '%d個月', - y : '一年', - yy : '%d年' - } - }); - - - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/min/locales.min.js b/elgg_clean/bower_components/moment/min/locales.min.js deleted file mode 100644 index c758a076..00000000 --- a/elgg_clean/bower_components/moment/min/locales.min.js +++ /dev/null @@ -1,78 +0,0 @@ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?b(require("../moment")):"function"==typeof define&&define.amd?define(["moment"],b):b(a.moment)}(this,function(a){"use strict"; -//! moment.js locale configuration -//! locale : belarusian (be) -//! author : Dmitry Demidov : https://github.com/demidov91 -//! author: Praleska: http://praleska.pro/ -//! Author : Menelion Elensúle : https://github.com/Oire -function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:c?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:c?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===d?c?"хвіліна":"хвіліну":"h"===d?c?"гадзіна":"гадзіну":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_"),accusative:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),accusative:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_")},d=/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]} -//! moment.js locale configuration -//! locale : breton (br) -//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou -function f(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+i(d[c],a)}function g(a){switch(h(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function h(a){return a>9?h(a%10):a}function i(a,b){return 2===b?j(a):a}function j(a){var b={m:"v",b:"v",d:"z"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)} -//! moment.js locale configuration -//! locale : bosnian (bs) -//! author : Nedim Cholich : https://github.com/frontyard -//! based on (hr) translation by Bojan Marković -function k(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function l(a){return a>1&&5>a&&1!==~~(a/10)}function m(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekund":"pár sekundami";case"m":return b?"minuta":d?"minutu":"minutou";case"mm":return b||d?e+(l(a)?"minuty":"minut"):e+"minutami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(l(a)?"hodiny":"hodin"):e+"hodinami";break;case"d":return b||d?"den":"dnem";case"dd":return b||d?e+(l(a)?"dny":"dní"):e+"dny";break;case"M":return b||d?"měsíc":"měsícem";case"MM":return b||d?e+(l(a)?"měsíce":"měsíců"):e+"měsíci";break;case"y":return b||d?"rok":"rokem";case"yy":return b||d?e+(l(a)?"roky":"let"):e+"lety"}} -//! moment.js locale configuration -//! locale : austrian german (de-at) -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -//! author : Martin Groller : https://github.com/MadMG -function n(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} -//! moment.js locale configuration -//! locale : german (de) -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -function o(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} -//! moment.js locale configuration -//! locale : estonian (et) -//! author : Henry Kehlmann : https://github.com/madhenry -//! improvements : Illimar Tambek : https://github.com/ragulka -function p(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}function q(a,b,c,d){var e="";switch(c){case"s":return d?"muutaman sekunnin":"muutama sekunti";case"m":return d?"minuutin":"minuutti";case"mm":e=d?"minuutin":"minuuttia";break;case"h":return d?"tunnin":"tunti";case"hh":e=d?"tunnin":"tuntia";break;case"d":return d?"päivän":"päivä";case"dd":e=d?"päivän":"päivää";break;case"M":return d?"kuukauden":"kuukausi";case"MM":e=d?"kuukauden":"kuukautta";break;case"y":return d?"vuoden":"vuosi";case"yy":e=d?"vuoden":"vuotta"}return e=r(a,d)+" "+e}function r(a,b){return 10>a?b?Aa[a]:za[a]:a} -//! moment.js locale configuration -//! locale : hrvatski (hr) -//! author : Bojan Marković : https://github.com/bmarkovic -function s(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function t(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function u(a){return(a?"":"[múlt] ")+"["+Fa[this.day()]+"] LT[-kor]"} -//! moment.js locale configuration -//! locale : Armenian (hy-am) -//! author : Armendarabyan : https://github.com/armendarabyan -function v(a,b){var c={nominative:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_"),accusative:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function w(a,b){var c="հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_");return c[a.month()]}function x(a,b){var c="կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_");return c[a.day()]} -//! moment.js locale configuration -//! locale : icelandic (is) -//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik -function y(a){return a%100===11?!0:a%10===1?!1:!0}function z(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return b?"mínúta":"mínútu";case"mm":return y(a)?e+(b||d?"mínútur":"mínútum"):b?e+"mínúta":e+"mínútu";case"hh":return y(a)?e+(b||d?"klukkustundir":"klukkustundum"):e+"klukkustund";case"d":return b?"dagur":d?"dag":"degi";case"dd":return y(a)?b?e+"dagar":e+(d?"daga":"dögum"):b?e+"dagur":e+(d?"dag":"degi");case"M":return b?"mánuður":d?"mánuð":"mánuði";case"MM":return y(a)?b?e+"mánuðir":e+(d?"mánuði":"mánuðum"):b?e+"mánuður":e+(d?"mánuð":"mánuði");case"y":return b||d?"ár":"ári";case"yy":return y(a)?e+(b||d?"ár":"árum"):e+(b||d?"ár":"ári")}} -//! moment.js locale configuration -//! locale : Georgian (ka) -//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili -function A(a,b){var c={nominative:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),accusative:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},d=/D[oD] *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function B(a,b){var c={nominative:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),accusative:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_")},d=/(წინა|შემდეგ)/.test(b)?"accusative":"nominative";return c[d][a.day()]} -//! moment.js locale configuration -//! locale : Luxembourgish (lb) -//! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz -function C(a,b,c,d){var e={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return b?e[c][0]:e[c][1]}function D(a){var b=a.substr(0,a.indexOf(" "));return F(b)?"a "+a:"an "+a}function E(a){var b=a.substr(0,a.indexOf(" "));return F(b)?"viru "+a:"virun "+a}function F(a){if(a=parseInt(a,10),isNaN(a))return!1;if(0>a)return!0;if(10>a)return a>=4&&7>=a?!0:!1;if(100>a){var b=a%10,c=a/10;return F(0===b?c:b)}if(1e4>a){for(;a>=10;)a/=10;return F(a)}return a/=1e3,F(a)}function G(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function H(a,b){var c={nominative:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),accusative:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function I(a,b,c,d){return b?K(c)[0]:d?K(c)[1]:K(c)[2]}function J(a){return a%10===0||a>10&&20>a}function K(a){return Ga[a].split("_")}function L(a,b,c,d){var e=a+" ";return 1===a?e+I(a,b,c[0],d):b?e+(J(a)?K(c)[1]:K(c)[0]):d?e+K(c)[1]:e+(J(a)?K(c)[1]:K(c)[2])}function M(a,b){var c=-1===b.indexOf("dddd HH:mm"),d=Ha[a.day()];return c?d:d.substring(0,d.length-2)+"į"}function N(a,b,c){return c?b%10===1&&11!==b?a[2]:a[3]:b%10===1&&11!==b?a[0]:a[1]}function O(a,b,c){return a+" "+N(Ia[c],a,b)}function P(a,b,c){return N(Ia[c],a,b)}function Q(a,b){return b?"dažas sekundes":"dažām sekundēm"}function R(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function S(a,b,c){var d=a+" ";switch(c){case"m":return b?"minuta":"minutę";case"mm":return d+(R(a)?"minuty":"minut");case"h":return b?"godzina":"godzinę";case"hh":return d+(R(a)?"godziny":"godzin");case"MM":return d+(R(a)?"miesiące":"miesięcy");case"yy":return d+(R(a)?"lata":"lat")}} -//! moment.js locale configuration -//! locale : romanian (ro) -//! author : Vlad Gurdiga : https://github.com/gurdiga -//! author : Valentin Agachi : https://github.com/avaly -function T(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]} -//! moment.js locale configuration -//! locale : russian (ru) -//! author : Viktorminator : https://github.com/Viktorminator -//! Author : Menelion Elensúle : https://github.com/Oire -function U(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function V(a,b,c){var d={mm:b?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===c?b?"минута":"минуту":a+" "+U(d[c],+a)}function W(a,b){var c={nominative:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),accusative:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function X(a,b){var c={nominative:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),accusative:"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Y(a,b){var c={nominative:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),accusative:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_")},d=/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]}function Z(a){return a>1&&5>a}function $(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekúnd":"pár sekundami";case"m":return b?"minúta":d?"minútu":"minútou";case"mm":return b||d?e+(Z(a)?"minúty":"minút"):e+"minútami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(Z(a)?"hodiny":"hodín"):e+"hodinami";break;case"d":return b||d?"deň":"dňom";case"dd":return b||d?e+(Z(a)?"dni":"dní"):e+"dňami";break;case"M":return b||d?"mesiac":"mesiacom";case"MM":return b||d?e+(Z(a)?"mesiace":"mesiacov"):e+"mesiacmi";break;case"y":return b||d?"rok":"rokom";case"yy":return b||d?e+(Z(a)?"roky":"rokov"):e+"rokmi"}} -//! moment.js locale configuration -//! locale : slovenian (sl) -//! author : Robert Sedovšek : https://github.com/sedovsek -function _(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":5>a?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":5>a?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":5>a?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":5>a?b||d?"leta":"leti":b||d?"let":"leti"}}function aa(a,b,c,d){var e={s:["viensas secunds","'iensas secunds"],m:["'n míut","'iens míut"],mm:[a+" míuts"," "+a+" míuts"],h:["'n þora","'iensa þora"],hh:[a+" þoras"," "+a+" þoras"],d:["'n ziua","'iensa ziua"],dd:[a+" ziuas"," "+a+" ziuas"],M:["'n mes","'iens mes"],MM:[a+" mesen"," "+a+" mesen"],y:["'n ar","'iens ar"],yy:[a+" ars"," "+a+" ars"]};return d?e[c][0]:b?e[c][0]:e[c][1].trim()} -//! moment.js locale configuration -//! locale : ukrainian (uk) -//! author : zemlanin : https://github.com/zemlanin -//! Author : Menelion Elensúle : https://github.com/Oire -function ba(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function ca(a,b,c){var d={mm:"хвилина_хвилини_хвилин",hh:"година_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===c?b?"хвилина":"хвилину":"h"===c?b?"година":"годину":a+" "+ba(d[c],+a)}function da(a,b){var c={nominative:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),accusative:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_")},d=/D[oD]? *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function ea(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function fa(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}} -//! moment.js locale configuration -//! locale : afrikaans (af) -//! author : Werner Mollentze : https://github.com/wernerm -var ga=(a.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(a){return/^nm$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"vm":"VM":c?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),a.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),ha={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},ia=(a.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return ha[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return ga[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),a.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),ja={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},ka=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},la={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},ma=function(a){return function(b,c,d,e){var f=ka(b),g=la[a][ka(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},na=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],oa=(a.defineLocale("ar",{months:na,monthsShort:na,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:ma("s"),m:ma("m"),mm:ma("m"),h:ma("h"),hh:ma("h"),d:ma("d"),dd:ma("d"),M:ma("M"),MM:ma("M"),y:ma("y"),yy:ma("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return ja[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return ia[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),{1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"}),pa=(a.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(a){return/^(gündüz|axşam)$/.test(a)},meridiem:function(a,b,c){return 4>a?"gecə":12>a?"səhər":17>a?"gündüz":"axşam"},ordinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(a){if(0===a)return a+"-ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(oa[b]||oa[c]||oa[d])},week:{dow:1,doy:7}}),a.defineLocale("be",{months:d,monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:e,weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:c,mm:c,h:c,hh:c,d:"дзень",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(a){return/^(дня|вечара)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночы":12>a?"раніцы":17>a?"дня":"вечара"},ordinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a%10!==2&&a%10!==3||a%100===12||a%100===13?a+"-ы":a+"-і";case"D":return a+"-га";default:return a}},week:{dow:1,doy:7}}),a.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),{1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"}),qa={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},ra=(a.defineLocale("bn",{months:"জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি".split("_"),weekdaysMin:"রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কএক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(a){return a.replace(/[১২৩৪৫৬৭৮৯০]/g,function(a){return qa[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return pa[a]})},meridiemParse:/রাত|সকাল|দুপুর|বিকেল|রাত/,isPM:function(a){return/^(দুপুর|বিকেল|রাত)$/.test(a)},meridiem:function(a,b,c){return 4>a?"রাত":10>a?"সকাল":17>a?"দুপুর":20>a?"বিকেল":"রাত"},week:{dow:0,doy:6}}),{1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"}),sa={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"},ta=(a.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(a){return a.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(a){return sa[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return ra[a]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,isPM:function(a){return/^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(a)},meridiem:function(a,b,c){return 4>a?"མཚན་མོ":10>a?"ཞོགས་ཀས":17>a?"ཉིན་གུང":20>a?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}}),a.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:f,h:"un eur",hh:"%d eur",d:"un devezh",dd:f,M:"ur miz",MM:f,y:"ur bloaz",yy:g},ordinalParse:/\d{1,2}(añ|vet)/,ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}}),a.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:k,mm:k,h:k,hh:k,d:"dan",dd:k,M:"mjesec",MM:k,y:"godinu",yy:k},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),a.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",LTS:"LT:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return("w"===b||"W"===b)&&(c="a"),a+c},week:{dow:1,doy:4}}),"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_")),ua="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),va=(a.defineLocale("cs",{months:ta,monthsShort:ua,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(ta,ua),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:m,m:m,mm:m,h:m,hh:m,d:m,dd:m,M:m,MM:m,y:m,yy:m},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/ҫул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пӗр-ик ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},ordinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}}),a.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}}),a.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[Heute um] LT [Uhr]",sameElse:"L",nextDay:"[Morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[Gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:n,mm:"%d Minuten",h:n,hh:"%d Stunden",d:n,dd:n,M:n,MM:n,y:n,yy:n},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[Heute um] LT [Uhr]",sameElse:"L",nextDay:"[Morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[Gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:o,mm:"%d Minuten",h:o,hh:"%d Stunden",d:o,dd:o,M:o,MM:o,y:o,yy:o},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return"function"==typeof c&&(c=c.apply(b)),c.replace("{}",d%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}}),a.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),a.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY h:mm A",LLLL:"dddd, D MMMM, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),a.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-an de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(a){return"p"===a.charAt(0).toLowerCase()},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}}),"Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.".split("_")),wa="Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic".split("_"),xa=(a.defineLocale("es",{months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?wa[a.month()]:va[a.month()]},weekdays:"Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mié._Jue._Vie._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),a.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:p,m:p,mm:p,h:p,hh:p,d:p,dd:"%d päeva",M:p,MM:p,y:p,yy:p},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷", -8:"۸",9:"۹",0:"۰"}),ya={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},za=(a.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return ya[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return xa[a]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}}),"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" ")),Aa=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",za[7],za[8],za[9]],Ba=(a.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:q,m:q,mm:q,h:q,hh:q,d:q,dd:q,M:q,MM:q,y:q,yy:q},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")}}),a.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_")),Ca="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),Da=(a.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Ca[a.month()]:Ba[a.month()]},weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),a.defineLocale("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return"uns segundos"===a?"nuns segundos":"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:7}}),a.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),Ea={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Fa=(a.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Ea[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Da[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?4>a?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}}),a.defineLocale("hr",{months:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:s,mm:s,h:s,hh:s,d:"dan",dd:s,M:"mjesec",MM:s,y:"godinu",yy:s},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),"vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ")),Ga=(a.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return u.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return u.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),a.defineLocale("hy-am",{months:v,monthsShort:w,weekdays:x,weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(a){return/^(ցերեկվա|երեկոյան)$/.test(a)},meridiem:function(a){return 4>a?"գիշերվա":12>a?"առավոտվա":17>a?"ցերեկվա":"երեկոյան"},ordinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}}),a.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),a.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:z,m:z,mm:z,h:"klukkustund",hh:z,d:z,dd:z,M:z,MM:z,y:z,yy:z},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),a.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}}),a.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(a,b){return 12===a&&(a=0),"enjing"===b?a:"siyang"===b?a>=11?a:a+12:"sonten"===b||"ndalu"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"enjing":15>a?"siyang":19>a?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),a.defineLocale("ka",{months:A,monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:B,weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(a)?a.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(a){return 0===a?a:1===a?a+"-ლი":20>a||100>=a&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}}),a.defineLocale("km",{months:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysMin:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[ថ្ងៃនៈ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}}),a.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇초",ss:"%d초",m:"일분",mm:"%d분",h:"한시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한달",MM:"%d달",y:"일년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return 12>a?"오전":"오후"}}),a.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:D,past:E,s:"e puer Sekonnen",m:C,mm:"%d Minutten",h:C,hh:"%d Stonnen",d:C,dd:"%d Deeg",M:C,MM:"%d Méint",y:C,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"}),Ha="sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),Ia=(a.defineLocale("lt",{months:H,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:M,weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:G,m:I,mm:L,h:I,hh:L,d:I,dd:L,M:I,MM:L,y:I,yy:L},ordinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}}),{m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")}),Ja=(a.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:Q,m:P,mm:O,h:P,hh:O,d:P,dd:O,M:P,MM:O,y:P,yy:O},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=Ja.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Ja.correctGrammaticalCase(a,d)}}),Ka=(a.defineLocale("me",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sri.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",m:Ja.translate,mm:Ja.translate,h:Ja.translate,hh:Ja.translate,d:"dan",dd:Ja.translate,M:"mjesec",MM:Ja.translate,y:"godinu",yy:Ja.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),a.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Во изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Во изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),a.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,isPM:function(a){return/^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(a)},meridiem:function(a,b,c){return 4>a?"രാത്രി":12>a?"രാവിലെ":17>a?"ഉച്ച കഴിഞ്ഞ്":20>a?"വൈകുന്നേരം":"രാത്രി"}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),La={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Ma=(a.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%s नंतर",past:"%s पूर्वी",s:"सेकंद",m:"एक मिनिट",mm:"%d मिनिटे",h:"एक तास",hh:"%d तास",d:"एक दिवस",dd:"%d दिवस",M:"एक महिना",MM:"%d महिने",y:"एक वर्ष",yy:"%d वर्षे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return La[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Ka[a]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात्री"===b?4>a?a:a+12:"सकाळी"===b?a:"दुपारी"===b?a>=10?a:a+12:"सायंकाळी"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात्री":10>a?"सकाळी":17>a?"दुपारी":20>a?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}}),a.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),a.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), -weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),{1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"}),Na={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"},Oa=(a.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(a){return a.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(a){return Na[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Ma[a]})},week:{dow:1,doy:4}}),a.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tirs_ons_tors_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"H.mm",LTS:"H.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H.mm",LLLL:"dddd D. MMMM YYYY [kl.] H.mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),Pa={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Qa=(a.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आइ._सो._मङ्_बु._बि._शु._श.".split("_"),longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Pa[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Oa[a]})},meridiemParse:/राती|बिहान|दिउँसो|बेलुका|साँझ|राती/,meridiemHour:function(a,b){return 12===a&&(a=0),"राती"===b?3>a?a:a+12:"बिहान"===b?a:"दिउँसो"===b?a>=10?a:a+12:"बेलुका"===b||"साँझ"===b?a+12:void 0},meridiem:function(a,b,c){return 3>a?"राती":10>a?"बिहान":15>a?"दिउँसो":18>a?"बेलुका":20>a?"साँझ":"राती"},calendar:{sameDay:"[आज] LT",nextDay:"[भोली] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडी",s:"केही समय",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:1,doy:7}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),Ra="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),Sa=(a.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Ra[a.month()]:Qa[a.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),a.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),"styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_")),Ta="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),Ua=(a.defineLocale("pl",{months:function(a,b){return""===b?"("+Ta[a.month()]+"|"+Sa[a.month()]+")":/D MMMM/.test(b)?Ta[a.month()]:Sa[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:S,mm:S,h:S,hh:S,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:S,y:"rok",yy:S},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"}),a.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),a.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:T,h:"o oră",hh:T,d:"o zi",dd:T,M:"o lună",MM:T,y:"un an",yy:T},week:{dow:1,doy:7}}),a.defineLocale("ru",{months:W,monthsShort:X,weekdays:Y,weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(){return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT"},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:V,mm:V,h:"час",hh:V,d:"день",dd:V,M:"месяц",MM:V,y:"год",yy:V},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}}),a.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්ර_සි_සෙ".split("_"),longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},ordinalParse:/\d{1,2} වැනි/,ordinal:function(a){return a+" වැනි"},meridiem:function(a,b,c){return a>11?c?"ප.ව.":"පස් වරු":c?"පෙ.ව.":"පෙර වරු"}}),"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_")),Va="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),Wa=(a.defineLocale("sk",{months:Ua,monthsShort:Va,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(Ua,Va),weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:$,m:$,mm:$,h:$,hh:$,d:$,dd:$,M:$,MM:$,y:$,yy:$},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:_,m:_,mm:_,h:_,hh:_,d:_,dd:_,M:_,MM:_,y:_,yy:_},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),a.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),meridiemParse:/PD|MD/,isPM:function(a){return"M"===a.charAt(0)},meridiem:function(a,b,c){return 12>a?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=Wa.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Wa.correctGrammaticalCase(a,d)}}),Xa=(a.defineLocale("sr-cyrl",{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],monthsShort:["јан.","феб.","мар.","апр.","мај","јун","јул","авг.","сеп.","окт.","нов.","дец."],weekdays:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],weekdaysShort:["нед.","пон.","уто.","сре.","чет.","пет.","суб."],weekdaysMin:["не","по","ут","ср","че","пе","су"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:Wa.translate,mm:Wa.translate,h:Wa.translate,hh:Wa.translate,d:"дан",dd:Wa.translate,M:"месец",MM:Wa.translate,y:"годину",yy:Wa.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=Xa.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Xa.correctGrammaticalCase(a,d)}}),Ya=(a.defineLocale("sr",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sre.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:Xa.translate,mm:Xa.translate,h:Xa.translate,hh:Xa.translate,d:"dan",dd:Xa.translate,M:"mesec",MM:Xa.translate,y:"godinu",yy:Xa.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),a.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}}),a.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},ordinalParse:/\d{1,2}வது/,ordinal:function(a){return a+"வது"},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(a,b,c){return 2>a?" யாமம்":6>a?" வைகறை":10>a?" காலை":14>a?" நண்பகல்":18>a?" எற்பாடு":22>a?" மாலை":" யாமம்"},meridiemHour:function(a,b){return 12===a&&(a=0),"யாமம்"===b?2>a?a:a+12:"வைகறை"===b||"காலை"===b?a:"நண்பகல்"===b&&a>=10?a:a+12},week:{dow:0,doy:6}}),a.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),longDateFormat:{LT:"H นาฬิกา m นาที",LTS:"H นาฬิกา m นาที s วินาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H นาฬิกา m นาที",LLLL:"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}}),a.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),{1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"});a.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Ya[b]||Ya[c]||Ya[d])},week:{dow:1,doy:7}}),a.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"LT.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY LT",LLLL:"dddd, [li] D. MMMM [dallas] YYYY LT"},meridiem:function(a,b,c){return a>11?c?"d'o":"D'O":c?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:aa,m:aa,mm:aa,h:aa,hh:aa,d:aa,dd:aa,M:aa,MM:aa,y:aa,yy:aa},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),a.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}}),a.defineLocale("uk",{months:da,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:ea,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:fa("[Сьогодні "),nextDay:fa("[Завтра "),lastDay:fa("[Вчора "),nextWeek:fa("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return fa("[Минулої] dddd [").call(this);case 1:case 2:case 4:return fa("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:ca,mm:ca,h:"годину",hh:ca,d:"день",dd:ca,M:"місяць",MM:ca,y:"рік",yy:ca},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}}),a.defineLocale("uz",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}}),a.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), -weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()-b.unix()>=604800?"[下]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},lastWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()<b.unix()?"[上]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},sameElse:"LL"},ordinalParse:/\d{1,2}(日|月|周)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"周";default:return a}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}}),a.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah點mm分",LTS:"Ah點m分s秒",L:"YYYY年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah點mm分",LLLL:"YYYY年MMMD日ddddAh點mm分",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah點mm分",llll:"YYYY年MMMD日ddddAh點mm分"},meridiemParse:/早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"早上"===b||"上午"===b?a:"中午"===b?a>=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d分鐘",h:"一小時",hh:"%d小時",d:"一天",dd:"%d天",M:"一個月",MM:"%d個月",y:"一年",yy:"%d年"}})}); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/min/moment-with-locales.js b/elgg_clean/bower_components/moment/min/moment-with-locales.js deleted file mode 100644 index e2bc4a12..00000000 --- a/elgg_clean/bower_components/moment/min/moment-with-locales.js +++ /dev/null @@ -1,9977 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - global.moment = factory() -}(this, function () { 'use strict'; - - var hookCallback; - - function utils_hooks__hooks () { - return hookCallback.apply(null, arguments); - } - - // This is done to register the method called with moment() - // without creating circular dependencies. - function setHookCallback (callback) { - hookCallback = callback; - } - - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } - - function isDate(input) { - return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; - } - - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } - - function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); - } - - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; - } - - function create_utc__createUTC (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); - } - - function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false - }; - } - - function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; - } - - function valid__isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m); - m._isValid = !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated; - - if (m._strict) { - m._isValid = m._isValid && - flags.charsLeftOver === 0 && - flags.unusedTokens.length === 0 && - flags.bigHour === undefined; - } - } - return m._isValid; - } - - function valid__createInvalid (flags) { - var m = create_utc__createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } - else { - getParsingFlags(m).userInvalidated = true; - } - - return m; - } - - var momentProperties = utils_hooks__hooks.momentProperties = []; - - function copyConfig(to, from) { - var i, prop, val; - - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = getParsingFlags(from); - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } - - return to; - } - - var updateInProgress = false; - - // Moment prototype object - function Moment(config) { - copyConfig(this, config); - this._d = new Date(config._d != null ? config._d.getTime() : NaN); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - utils_hooks__hooks.updateOffset(this); - updateInProgress = false; - } - } - - function isMoment (obj) { - return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); - } - - function absFloor (number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - - return value; - } - - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } - - function Locale() { - } - - var locales = {}; - var globalLocale; - - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } - - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } - - function loadLocale(name) { - var oldLocale = null; - // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && typeof module !== 'undefined' && - module && module.exports) { - try { - oldLocale = globalLocale._abbr; - require('./locale/' + name); - // because defineLocale currently also sets the global locale, we - // want to undo that for lazy loaded locales - locale_locales__getSetGlobalLocale(oldLocale); - } catch (e) { } - } - return locales[name]; - } - - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - function locale_locales__getSetGlobalLocale (key, values) { - var data; - if (key) { - if (typeof values === 'undefined') { - data = locale_locales__getLocale(key); - } - else { - data = defineLocale(key, values); - } - - if (data) { - // moment.duration._locale = moment._locale = data; - globalLocale = data; - } - } - - return globalLocale._abbr; - } - - function defineLocale (name, values) { - if (values !== null) { - values.abbr = name; - locales[name] = locales[name] || new Locale(); - locales[name].set(values); - - // backwards compat for now: also set the locale - locale_locales__getSetGlobalLocale(name); - - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - } - - // returns locale data - function locale_locales__getLocale (key) { - var locale; - - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } - - if (!key) { - return globalLocale; - } - - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } - - return chooseLocale(key); - } - - var aliases = {}; - - function addUnitAlias (unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; - } - - function normalizeUnits(units) { - return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; - } - - function makeGetSet (unit, keepTime) { - return function (value) { - if (value != null) { - get_set__set(this, unit, value); - utils_hooks__hooks.updateOffset(this, keepTime); - return this; - } else { - return get_set__get(this, unit); - } - }; - } - - function get_set__get (mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); - } - - function get_set__set (mom, unit, value) { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - - // MOMENTS - - function getSet (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - return this[units](value); - } - } - return this; - } - - function zeroFill(number, targetLength, forceSign) { - var absNumber = '' + Math.abs(number), - zerosToFill = targetLength - absNumber.length, - sign = number >= 0; - return (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; - } - - var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; - - var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - - var formatFunctions = {}; - - var formatTokenFunctions = {}; - - // token: 'M' - // padded: ['MM', 2] - // ordinal: 'Mo' - // callback: function () { this.month() + 1 } - function addFormatToken (token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); - }; - } - } - - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } - - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } - - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } - - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } - - format = expandFormat(format, m.localeData()); - formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); - - return formatFunctions[format](m); - } - - function expandFormat(format, locale) { - var i = 5; - - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } - - return format; - } - - var match1 = /\d/; // 0 - 9 - var match2 = /\d\d/; // 00 - 99 - var match3 = /\d{3}/; // 000 - 999 - var match4 = /\d{4}/; // 0000 - 9999 - var match6 = /[+-]?\d{6}/; // -999999 - 999999 - var match1to2 = /\d\d?/; // 0 - 99 - var match1to3 = /\d{1,3}/; // 0 - 999 - var match1to4 = /\d{1,4}/; // 0 - 9999 - var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 - - var matchUnsigned = /\d+/; // 0 - inf - var matchSigned = /[+-]?\d+/; // -inf - inf - - var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z - - var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 - - // any word (or two) characters or numbers including two/three word month in arabic. - var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; - - var regexes = {}; - - function isFunction (sth) { - // https://github.com/moment/moment/issues/2325 - return typeof sth === 'function' && - Object.prototype.toString.call(sth) === '[object Function]'; - } - - - function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; - } - - function getParseRegexForToken (token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } - - return regexes[token](config._strict, config._locale); - } - - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function unescapeFormat(s) { - return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } - - var tokens = {}; - - function addParseToken (token, callback) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (typeof callback === 'number') { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } - } - - function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); - } - - function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } - } - - var YEAR = 0; - var MONTH = 1; - var DATE = 2; - var HOUR = 3; - var MINUTE = 4; - var SECOND = 5; - var MILLISECOND = 6; - - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } - - // FORMATTING - - addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; - }); - - addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); - }); - - addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); - }); - - // ALIASES - - addUnitAlias('month', 'M'); - - // PARSING - - addRegexToken('M', match1to2); - addRegexToken('MM', match1to2, match2); - addRegexToken('MMM', matchWord); - addRegexToken('MMMM', matchWord); - - addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; - }); - - addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } - }); - - // LOCALES - - var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); - function localeMonths (m) { - return this._months[m.month()]; - } - - var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); - function localeMonthsShort (m) { - return this._monthsShort[m.month()]; - } - - function localeMonthsParse (monthName, format, strict) { - var i, mom, regex; - - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } - - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = create_utc__createUTC([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - } - - // MOMENTS - - function setMonth (mom, value) { - var dayOfMonth; - - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } - - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } - - function getSetMonth (value) { - if (value != null) { - setMonth(this, value); - utils_hooks__hooks.updateOffset(this, true); - return this; - } else { - return get_set__get(this, 'Month'); - } - } - - function getDaysInMonth () { - return daysInMonth(this.year(), this.month()); - } - - function checkOverflow (m) { - var overflow; - var a = m._a; - - if (a && getParsingFlags(m).overflow === -2) { - overflow = - a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : - a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : - a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : - a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : - a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : - a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - - getParsingFlags(m).overflow = overflow; - } - - return m; - } - - function warn(msg) { - if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } - - function deprecate(msg, fn) { - var firstTime = true; - - return extend(function () { - if (firstTime) { - warn(msg + '\n' + (new Error()).stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - - var deprecations = {}; - - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } - } - - utils_hooks__hooks.suppressDeprecationWarnings = false; - - var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - - var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ]; - - // iso time formats and regexes - var isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ]; - - var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; - - // date from iso format - function configFromISO(config) { - var i, l, - string = config._i, - match = from_string__isoRegex.exec(string); - - if (match) { - getParsingFlags(config).iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - config._f = isoDates[i][0]; - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - // match[6] should be 'T' or space - config._f += (match[6] || ' ') + isoTimes[i][0]; - break; - } - } - if (string.match(matchOffset)) { - config._f += 'Z'; - } - configFromStringAndFormat(config); - } else { - config._isValid = false; - } - } - - // date from iso format or fallback - function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); - - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } - - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - utils_hooks__hooks.createFromInputFallback(config); - } - } - - utils_hooks__hooks.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); - - function createDate (y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); - - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } - - function createUTCDate (y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; - } - - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); - - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - - // ALIASES - - addUnitAlias('year', 'y'); - - // PARSING - - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); - - addParseToken(['YYYYY', 'YYYYYY'], YEAR); - addParseToken('YYYY', function (input, array) { - array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input); - }); - addParseToken('YY', function (input, array) { - array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); - }); - - // HELPERS - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - - // HOOKS - - utils_hooks__hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - - // MOMENTS - - var getSetYear = makeGetSet('FullYear', false); - - function getIsLeapYear () { - return isLeapYear(this.year()); - } - - addFormatToken('w', ['ww', 2], 'wo', 'week'); - addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - - // ALIASES - - addUnitAlias('week', 'w'); - addUnitAlias('isoWeek', 'W'); - - // PARSING - - addRegexToken('w', match1to2); - addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); - addRegexToken('WW', match1to2, match2); - - addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); - }); - - // HELPERS - - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; - - - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } - - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } - - adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } - - // LOCALES - - function localeWeek (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - } - - var defaultLocaleWeek = { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }; - - function localeFirstDayOfWeek () { - return this._week.dow; - } - - function localeFirstDayOfYear () { - return this._week.doy; - } - - // MOMENTS - - function getSetWeek (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - function getSetISOWeek (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - - // ALIASES - - addUnitAlias('dayOfYear', 'DDD'); - - // PARSING - - addRegexToken('DDD', match1to3); - addRegexToken('DDDD', match3); - addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); - }); - - // HELPERS - - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear; - if (d < firstDayOfWeek) { - d += 7; - } - - weekday = weekday != null ? 1 * weekday : firstDayOfWeek; - - dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday; - - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; - } - - // MOMENTS - - function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - } - - // Pick the first defined of two or three arguments. - function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; - } - - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()]; - } - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } - - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function configFromArray (config) { - var i, date, input = [], currentDate, yearToUse; - - if (config._d) { - return; - } - - currentDate = currentDateArray(config); - - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } - - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse)) { - getParsingFlags(config)._overflowDayOfYear = true; - } - - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } - - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } - - if (config._nextDay) { - config._a[HOUR] = 24; - } - } - - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year); - week = defaults(w.w, 1); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } - - utils_hooks__hooks.ISO_8601 = function () {}; - - // date from string and format string - function configFromStringAndFormat(config) { - // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === utils_hooks__hooks.ISO_8601) { - configFromISO(config); - return; - } - - config._a = []; - getParsingFlags(config).empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } - else { - getParsingFlags(config).unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); - } - } - - // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } - - // clear _12h flag if hour is <= 12 - if (getParsingFlags(config).bigHour === true && - config._a[HOUR] <= 12 && - config._a[HOUR] > 0) { - getParsingFlags(config).bigHour = undefined; - } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); - - configFromArray(config); - checkOverflow(config); - } - - - function meridiemFixWrap (locale, hour, meridiem) { - var isPm; - - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // this is not supposed to happen - return hour; - } - } - - function configFromStringAndArray(config) { - var tempConfig, - bestMoment, - - scoreToBeat, - i, - currentScore; - - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; - } - - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); - - if (!valid__isValid(tempConfig)) { - continue; - } - - // if there is any input that was not parsed add a penalty for that format - currentScore += getParsingFlags(tempConfig).charsLeftOver; - - //or tokens - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - - getParsingFlags(tempConfig).score = currentScore; - - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } - - extend(config, bestMoment || tempConfig); - } - - function configFromObject(config) { - if (config._d) { - return; - } - - var i = normalizeObjectUnits(config._i); - config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond]; - - configFromArray(config); - } - - function createFromConfig (config) { - var res = new Moment(checkOverflow(prepareConfig(config))); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } - - return res; - } - - function prepareConfig (config) { - var input = config._i, - format = config._f; - - config._locale = config._locale || locale_locales__getLocale(config._l); - - if (input === null || (format === undefined && input === '')) { - return valid__createInvalid({nullInput: true}); - } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } - - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else if (isDate(input)) { - config._d = input; - } else { - configFromInput(config); - } - - return config; - } - - function configFromInput(config) { - var input = config._i; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if (typeof input === 'string') { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (typeof(input) === 'object') { - configFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - utils_hooks__hooks.createFromInputFallback(config); - } - } - - function createLocalOrUTC (input, format, locale, strict, isUTC) { - var c = {}; - - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - - return createFromConfig(c); - } - - function local__createLocal (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); - } - - var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function () { - var other = local__createLocal.apply(null, arguments); - return other < this ? this : other; - } - ); - - var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function () { - var other = local__createLocal.apply(null, arguments); - return other > this ? this : other; - } - ); - - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return local__createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } - - // TODO: Use [].sort instead? - function min () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - } - - function max () { - var args = [].slice.call(arguments, 0); - - return pickBy('isAfter', args); - } - - function Duration (duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = locale_locales__getLocale(); - - this._bubble(); - } - - function isDuration (obj) { - return obj instanceof Duration; - } - - function offset (token, separator) { - addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(); - var sign = '+'; - if (offset < 0) { - offset = -offset; - sign = '-'; - } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); - }); - } - - offset('Z', ':'); - offset('ZZ', ''); - - // PARSING - - addRegexToken('Z', matchOffset); - addRegexToken('ZZ', matchOffset); - addParseToken(['Z', 'ZZ'], function (input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(input); - }); - - // HELPERS - - // timezone chunker - // '+10:00' > ['10', '00'] - // '-1530' > ['-15', '30'] - var chunkOffset = /([\+\-]|\d\d)/gi; - - function offsetFromString(string) { - var matches = ((string || '').match(matchOffset) || []); - var chunk = matches[matches.length - 1] || []; - var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - var minutes = +(parts[1] * 60) + toInt(parts[2]); - - return parts[0] === '+' ? minutes : -minutes; - } - - // Return a moment from input, that is local/utc/zone equivalent to model. - function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - utils_hooks__hooks.updateOffset(res, false); - return res; - } else { - return local__createLocal(input).local(); - } - } - - function getDateOffset (m) { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset() / 15) * 15; - } - - // HOOKS - - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - utils_hooks__hooks.updateOffset = function () {}; - - // MOMENTS - - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - function getSetOffset (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = offsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - utils_hooks__hooks.updateOffset(this, true); - this._changeInProgress = null; - } - } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); - } - } - - function getSetZone (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } - - this.utcOffset(input, keepLocalTime); - - return this; - } else { - return -this.utcOffset(); - } - } - - function setOffsetToUTC (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - } - - function setOffsetToLocal (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - - if (keepLocalTime) { - this.subtract(getDateOffset(this), 'm'); - } - } - return this; - } - - function setOffsetToParsedOffset () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(offsetFromString(this._i)); - } - return this; - } - - function hasAlignedHourOffset (input) { - input = input ? local__createLocal(input).utcOffset() : 0; - - return (this.utcOffset() - input) % 60 === 0; - } - - function isDaylightSavingTime () { - return ( - this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset() - ); - } - - function isDaylightSavingTimeShifted () { - if (typeof this._isDSTShifted !== 'undefined') { - return this._isDSTShifted; - } - - var c = {}; - - copyConfig(c, this); - c = prepareConfig(c); - - if (c._a) { - var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a); - this._isDSTShifted = this.isValid() && - compareArrays(c._a, other.toArray()) > 0; - } else { - this._isDSTShifted = false; - } - - return this._isDSTShifted; - } - - function isLocal () { - return !this._isUTC; - } - - function isUtcOffset () { - return this._isUTC; - } - - function isUtc () { - return this._isUTC && this._offset === 0; - } - - var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/; - - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; - - function create__createDuration (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - diffRes; - - if (isDuration(input)) { - duration = { - ms : input._milliseconds, - d : input._days, - M : input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : 0, - d : toInt(match[DATE]) * sign, - h : toInt(match[HOUR]) * sign, - m : toInt(match[MINUTE]) * sign, - s : toInt(match[SECOND]) * sign, - ms : toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = create__isoRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : parseIso(match[2], sign), - M : parseIso(match[3], sign), - d : parseIso(match[4], sign), - h : parseIso(match[5], sign), - m : parseIso(match[6], sign), - s : parseIso(match[7], sign), - w : parseIso(match[8], sign) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)); - - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - - ret = new Duration(duration); - - if (isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } - - return ret; - } - - create__createDuration.fn = Duration.prototype; - - function parseIso (inp, sign) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - } - - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; - } - - function momentsDifference(base, other) { - var res; - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - - return res; - } - - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = create__createDuration(val, period); - add_subtract__addSubtract(this, dur, direction); - return this; - }; - } - - function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); - } - if (months) { - setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - utils_hooks__hooks.updateOffset(mom, days || months); - } - } - - var add_subtract__add = createAdder(1, 'add'); - var add_subtract__subtract = createAdder(-1, 'subtract'); - - function moment_calendar__calendar (time, formats) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're local/utc/offset or not. - var now = time || local__createLocal(), - sod = cloneWithOffset(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(formats && formats[format] || this.localeData().calendar(format, this, local__createLocal(now))); - } - - function clone () { - return new Moment(this); - } - - function isAfter (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this > +input; - } else { - inputMs = isMoment(input) ? +input : +local__createLocal(input); - return inputMs < +this.clone().startOf(units); - } - } - - function isBefore (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this < +input; - } else { - inputMs = isMoment(input) ? +input : +local__createLocal(input); - return +this.clone().endOf(units) < inputMs; - } - } - - function isBetween (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - } - - function isSame (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this === +input; - } else { - inputMs = +local__createLocal(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - } - - function diff (input, units, asFloat) { - var that = cloneWithOffset(input, this), - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4, - delta, output; - - units = normalizeUnits(units); - - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - delta = this - that; - output = units === 'second' ? delta / 1e3 : // 1000 - units === 'minute' ? delta / 6e4 : // 1000 * 60 - units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - delta; - } - return asFloat ? output : absFloor(output); - } - - function monthDiff (a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; - - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } - - return -(wholeMonthDiff + adjust); - } - - utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; - - function toString () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - } - - function moment_format__toISOString () { - var m = this.clone().utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } - - function moment_format__format (inputString) { - var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat); - return this.localeData().postformat(output); - } - - function from (time, withoutSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - } - - function fromNow (withoutSuffix) { - return this.from(local__createLocal(), withoutSuffix); - } - - function to (time, withoutSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); - } - - function toNow (withoutSuffix) { - return this.to(local__createLocal(), withoutSuffix); - } - - function locale (key) { - var newLocaleData; - - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = locale_locales__getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - } - - var lang = deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ); - - function localeData () { - return this._locale; - } - - function startOf (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - } - - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } - if (units === 'isoWeek') { - this.isoWeekday(1); - } - - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } - - return this; - } - - function endOf (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - } - - function to_type__valueOf () { - return +this._d - ((this._offset || 0) * 60000); - } - - function unix () { - return Math.floor(+this / 1000); - } - - function toDate () { - return this._offset ? new Date(+this) : this._d; - } - - function toArray () { - var m = this; - return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; - } - - function toObject () { - var m = this; - return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds() - }; - } - - function moment_valid__isValid () { - return valid__isValid(this); - } - - function parsingFlags () { - return extend({}, getParsingFlags(this)); - } - - function invalidAt () { - return getParsingFlags(this).overflow; - } - - addFormatToken(0, ['gg', 2], 0, function () { - return this.weekYear() % 100; - }); - - addFormatToken(0, ['GG', 2], 0, function () { - return this.isoWeekYear() % 100; - }); - - function addWeekYearFormatToken (token, getter) { - addFormatToken(0, [token, token.length], 0, getter); - } - - addWeekYearFormatToken('gggg', 'weekYear'); - addWeekYearFormatToken('ggggg', 'weekYear'); - addWeekYearFormatToken('GGGG', 'isoWeekYear'); - addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - - // ALIASES - - addUnitAlias('weekYear', 'gg'); - addUnitAlias('isoWeekYear', 'GG'); - - // PARSING - - addRegexToken('G', matchSigned); - addRegexToken('g', matchSigned); - addRegexToken('GG', match1to2, match2); - addRegexToken('gg', match1to2, match2); - addRegexToken('GGGG', match1to4, match4); - addRegexToken('gggg', match1to4, match4); - addRegexToken('GGGGG', match1to6, match6); - addRegexToken('ggggg', match1to6, match6); - - addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { - week[token.substr(0, 2)] = toInt(input); - }); - - addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = utils_hooks__hooks.parseTwoDigitYear(input); - }); - - // HELPERS - - function weeksInYear(year, dow, doy) { - return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week; - } - - // MOMENTS - - function getSetWeekYear (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - } - - function getSetISOWeekYear (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - } - - function getISOWeeksInYear () { - return weeksInYear(this.year(), 1, 4); - } - - function getWeeksInYear () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - } - - addFormatToken('Q', 0, 0, 'quarter'); - - // ALIASES - - addUnitAlias('quarter', 'Q'); - - // PARSING - - addRegexToken('Q', match1); - addParseToken('Q', function (input, array) { - array[MONTH] = (toInt(input) - 1) * 3; - }); - - // MOMENTS - - function getSetQuarter (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - } - - addFormatToken('D', ['DD', 2], 'Do', 'date'); - - // ALIASES - - addUnitAlias('date', 'D'); - - // PARSING - - addRegexToken('D', match1to2); - addRegexToken('DD', match1to2, match2); - addRegexToken('Do', function (isStrict, locale) { - return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; - }); - - addParseToken(['D', 'DD'], DATE); - addParseToken('Do', function (input, array) { - array[DATE] = toInt(input.match(match1to2)[0], 10); - }); - - // MOMENTS - - var getSetDayOfMonth = makeGetSet('Date', true); - - addFormatToken('d', 0, 'do', 'day'); - - addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); - }); - - addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); - }); - - addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); - }); - - addFormatToken('e', 0, 0, 'weekday'); - addFormatToken('E', 0, 0, 'isoWeekday'); - - // ALIASES - - addUnitAlias('day', 'd'); - addUnitAlias('weekday', 'e'); - addUnitAlias('isoWeekday', 'E'); - - // PARSING - - addRegexToken('d', match1to2); - addRegexToken('e', match1to2); - addRegexToken('E', match1to2); - addRegexToken('dd', matchWord); - addRegexToken('ddd', matchWord); - addRegexToken('dddd', matchWord); - - addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) { - var weekday = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; - } - }); - - addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); - }); - - // HELPERS - - function parseWeekday(input, locale) { - if (typeof input !== 'string') { - return input; - } - - if (!isNaN(input)) { - return parseInt(input, 10); - } - - input = locale.weekdaysParse(input); - if (typeof input === 'number') { - return input; - } - - return null; - } - - // LOCALES - - var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); - function localeWeekdays (m) { - return this._weekdays[m.day()]; - } - - var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); - function localeWeekdaysShort (m) { - return this._weekdaysShort[m.day()]; - } - - var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); - function localeWeekdaysMin (m) { - return this._weekdaysMin[m.day()]; - } - - function localeWeekdaysParse (weekdayName) { - var i, mom, regex; - - this._weekdaysParse = this._weekdaysParse || []; - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = local__createLocal([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - } - - // MOMENTS - - function getSetDayOfWeek (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - } - - function getSetLocaleDayOfWeek (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - } - - function getSetISODayOfWeek (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - } - - addFormatToken('H', ['HH', 2], 0, 'hour'); - addFormatToken('h', ['hh', 2], 0, function () { - return this.hours() % 12 || 12; - }); - - function meridiem (token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); - }); - } - - meridiem('a', true); - meridiem('A', false); - - // ALIASES - - addUnitAlias('hour', 'h'); - - // PARSING - - function matchMeridiem (isStrict, locale) { - return locale._meridiemParse; - } - - addRegexToken('a', matchMeridiem); - addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('HH', match1to2, match2); - addRegexToken('hh', match1to2, match2); - - addParseToken(['H', 'HH'], HOUR); - addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; - }); - addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; - }); - - // LOCALES - - function localeIsPM (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - } - - var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; - function localeMeridiem (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - } - - - // MOMENTS - - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - var getSetHour = makeGetSet('Hours', true); - - addFormatToken('m', ['mm', 2], 0, 'minute'); - - // ALIASES - - addUnitAlias('minute', 'm'); - - // PARSING - - addRegexToken('m', match1to2); - addRegexToken('mm', match1to2, match2); - addParseToken(['m', 'mm'], MINUTE); - - // MOMENTS - - var getSetMinute = makeGetSet('Minutes', false); - - addFormatToken('s', ['ss', 2], 0, 'second'); - - // ALIASES - - addUnitAlias('second', 's'); - - // PARSING - - addRegexToken('s', match1to2); - addRegexToken('ss', match1to2, match2); - addParseToken(['s', 'ss'], SECOND); - - // MOMENTS - - var getSetSecond = makeGetSet('Seconds', false); - - addFormatToken('S', 0, 0, function () { - return ~~(this.millisecond() / 100); - }); - - addFormatToken(0, ['SS', 2], 0, function () { - return ~~(this.millisecond() / 10); - }); - - addFormatToken(0, ['SSS', 3], 0, 'millisecond'); - addFormatToken(0, ['SSSS', 4], 0, function () { - return this.millisecond() * 10; - }); - addFormatToken(0, ['SSSSS', 5], 0, function () { - return this.millisecond() * 100; - }); - addFormatToken(0, ['SSSSSS', 6], 0, function () { - return this.millisecond() * 1000; - }); - addFormatToken(0, ['SSSSSSS', 7], 0, function () { - return this.millisecond() * 10000; - }); - addFormatToken(0, ['SSSSSSSS', 8], 0, function () { - return this.millisecond() * 100000; - }); - addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { - return this.millisecond() * 1000000; - }); - - - // ALIASES - - addUnitAlias('millisecond', 'ms'); - - // PARSING - - addRegexToken('S', match1to3, match1); - addRegexToken('SS', match1to3, match2); - addRegexToken('SSS', match1to3, match3); - - var token; - for (token = 'SSSS'; token.length <= 9; token += 'S') { - addRegexToken(token, matchUnsigned); - } - - function parseMs(input, array) { - array[MILLISECOND] = toInt(('0.' + input) * 1000); - } - - for (token = 'S'; token.length <= 9; token += 'S') { - addParseToken(token, parseMs); - } - // MOMENTS - - var getSetMillisecond = makeGetSet('Milliseconds', false); - - addFormatToken('z', 0, 0, 'zoneAbbr'); - addFormatToken('zz', 0, 0, 'zoneName'); - - // MOMENTS - - function getZoneAbbr () { - return this._isUTC ? 'UTC' : ''; - } - - function getZoneName () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - } - - var momentPrototype__proto = Moment.prototype; - - momentPrototype__proto.add = add_subtract__add; - momentPrototype__proto.calendar = moment_calendar__calendar; - momentPrototype__proto.clone = clone; - momentPrototype__proto.diff = diff; - momentPrototype__proto.endOf = endOf; - momentPrototype__proto.format = moment_format__format; - momentPrototype__proto.from = from; - momentPrototype__proto.fromNow = fromNow; - momentPrototype__proto.to = to; - momentPrototype__proto.toNow = toNow; - momentPrototype__proto.get = getSet; - momentPrototype__proto.invalidAt = invalidAt; - momentPrototype__proto.isAfter = isAfter; - momentPrototype__proto.isBefore = isBefore; - momentPrototype__proto.isBetween = isBetween; - momentPrototype__proto.isSame = isSame; - momentPrototype__proto.isValid = moment_valid__isValid; - momentPrototype__proto.lang = lang; - momentPrototype__proto.locale = locale; - momentPrototype__proto.localeData = localeData; - momentPrototype__proto.max = prototypeMax; - momentPrototype__proto.min = prototypeMin; - momentPrototype__proto.parsingFlags = parsingFlags; - momentPrototype__proto.set = getSet; - momentPrototype__proto.startOf = startOf; - momentPrototype__proto.subtract = add_subtract__subtract; - momentPrototype__proto.toArray = toArray; - momentPrototype__proto.toObject = toObject; - momentPrototype__proto.toDate = toDate; - momentPrototype__proto.toISOString = moment_format__toISOString; - momentPrototype__proto.toJSON = moment_format__toISOString; - momentPrototype__proto.toString = toString; - momentPrototype__proto.unix = unix; - momentPrototype__proto.valueOf = to_type__valueOf; - - // Year - momentPrototype__proto.year = getSetYear; - momentPrototype__proto.isLeapYear = getIsLeapYear; - - // Week Year - momentPrototype__proto.weekYear = getSetWeekYear; - momentPrototype__proto.isoWeekYear = getSetISOWeekYear; - - // Quarter - momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter; - - // Month - momentPrototype__proto.month = getSetMonth; - momentPrototype__proto.daysInMonth = getDaysInMonth; - - // Week - momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek; - momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek; - momentPrototype__proto.weeksInYear = getWeeksInYear; - momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear; - - // Day - momentPrototype__proto.date = getSetDayOfMonth; - momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek; - momentPrototype__proto.weekday = getSetLocaleDayOfWeek; - momentPrototype__proto.isoWeekday = getSetISODayOfWeek; - momentPrototype__proto.dayOfYear = getSetDayOfYear; - - // Hour - momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour; - - // Minute - momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute; - - // Second - momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond; - - // Millisecond - momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond; - - // Offset - momentPrototype__proto.utcOffset = getSetOffset; - momentPrototype__proto.utc = setOffsetToUTC; - momentPrototype__proto.local = setOffsetToLocal; - momentPrototype__proto.parseZone = setOffsetToParsedOffset; - momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset; - momentPrototype__proto.isDST = isDaylightSavingTime; - momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted; - momentPrototype__proto.isLocal = isLocal; - momentPrototype__proto.isUtcOffset = isUtcOffset; - momentPrototype__proto.isUtc = isUtc; - momentPrototype__proto.isUTC = isUtc; - - // Timezone - momentPrototype__proto.zoneAbbr = getZoneAbbr; - momentPrototype__proto.zoneName = getZoneName; - - // Deprecations - momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); - momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); - momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); - momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone); - - var momentPrototype = momentPrototype__proto; - - function moment_moment__createUnix (input) { - return local__createLocal(input * 1000); - } - - function moment_moment__createInZone () { - return local__createLocal.apply(null, arguments).parseZone(); - } - - var defaultCalendar = { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }; - - function locale_calendar__calendar (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.call(mom, now) : output; - } - - var defaultLongDateFormat = { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' - }; - - function longDateFormat (key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; - - if (format || !formatUpper) { - return format; - } - - this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - - return this._longDateFormat[key]; - } - - var defaultInvalidDate = 'Invalid date'; - - function invalidDate () { - return this._invalidDate; - } - - var defaultOrdinal = '%d'; - var defaultOrdinalParse = /\d{1,2}/; - - function ordinal (number) { - return this._ordinal.replace('%d', number); - } - - function preParsePostFormat (string) { - return string; - } - - var defaultRelativeTime = { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }; - - function relative__relativeTime (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - } - - function pastFuture (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - } - - function locale_set__set (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); - } - - var prototype__proto = Locale.prototype; - - prototype__proto._calendar = defaultCalendar; - prototype__proto.calendar = locale_calendar__calendar; - prototype__proto._longDateFormat = defaultLongDateFormat; - prototype__proto.longDateFormat = longDateFormat; - prototype__proto._invalidDate = defaultInvalidDate; - prototype__proto.invalidDate = invalidDate; - prototype__proto._ordinal = defaultOrdinal; - prototype__proto.ordinal = ordinal; - prototype__proto._ordinalParse = defaultOrdinalParse; - prototype__proto.preparse = preParsePostFormat; - prototype__proto.postformat = preParsePostFormat; - prototype__proto._relativeTime = defaultRelativeTime; - prototype__proto.relativeTime = relative__relativeTime; - prototype__proto.pastFuture = pastFuture; - prototype__proto.set = locale_set__set; - - // Month - prototype__proto.months = localeMonths; - prototype__proto._months = defaultLocaleMonths; - prototype__proto.monthsShort = localeMonthsShort; - prototype__proto._monthsShort = defaultLocaleMonthsShort; - prototype__proto.monthsParse = localeMonthsParse; - - // Week - prototype__proto.week = localeWeek; - prototype__proto._week = defaultLocaleWeek; - prototype__proto.firstDayOfYear = localeFirstDayOfYear; - prototype__proto.firstDayOfWeek = localeFirstDayOfWeek; - - // Day of Week - prototype__proto.weekdays = localeWeekdays; - prototype__proto._weekdays = defaultLocaleWeekdays; - prototype__proto.weekdaysMin = localeWeekdaysMin; - prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin; - prototype__proto.weekdaysShort = localeWeekdaysShort; - prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort; - prototype__proto.weekdaysParse = localeWeekdaysParse; - - // Hours - prototype__proto.isPM = localeIsPM; - prototype__proto._meridiemParse = defaultLocaleMeridiemParse; - prototype__proto.meridiem = localeMeridiem; - - function lists__get (format, index, field, setter) { - var locale = locale_locales__getLocale(); - var utc = create_utc__createUTC().set(setter, index); - return locale[field](utc, format); - } - - function list (format, index, field, count, setter) { - if (typeof format === 'number') { - index = format; - format = undefined; - } - - format = format || ''; - - if (index != null) { - return lists__get(format, index, field, setter); - } - - var i; - var out = []; - for (i = 0; i < count; i++) { - out[i] = lists__get(format, i, field, setter); - } - return out; - } - - function lists__listMonths (format, index) { - return list(format, index, 'months', 12, 'month'); - } - - function lists__listMonthsShort (format, index) { - return list(format, index, 'monthsShort', 12, 'month'); - } - - function lists__listWeekdays (format, index) { - return list(format, index, 'weekdays', 7, 'day'); - } - - function lists__listWeekdaysShort (format, index) { - return list(format, index, 'weekdaysShort', 7, 'day'); - } - - function lists__listWeekdaysMin (format, index) { - return list(format, index, 'weekdaysMin', 7, 'day'); - } - - locale_locales__getSetGlobalLocale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - // Side effect imports - utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale); - utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale); - - var mathAbs = Math.abs; - - function duration_abs__abs () { - var data = this._data; - - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); - - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); - - return this; - } - - function duration_add_subtract__addSubtract (duration, input, value, direction) { - var other = create__createDuration(input, value); - - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; - - return duration._bubble(); - } - - // supports only 2.0-style add(1, 's') or add(duration) - function duration_add_subtract__add (input, value) { - return duration_add_subtract__addSubtract(this, input, value, 1); - } - - // supports only 2.0-style subtract(1, 's') or subtract(duration) - function duration_add_subtract__subtract (input, value) { - return duration_add_subtract__addSubtract(this, input, value, -1); - } - - function absCeil (number) { - if (number < 0) { - return Math.floor(number); - } else { - return Math.ceil(number); - } - } - - function bubble () { - var milliseconds = this._milliseconds; - var days = this._days; - var months = this._months; - var data = this._data; - var seconds, minutes, hours, years, monthsFromDays; - - // if we have a mix of positive and negative values, bubble down first - // check: https://github.com/moment/moment/issues/2166 - if (!((milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0))) { - milliseconds += absCeil(monthsToDays(months) + days) * 864e5; - days = 0; - months = 0; - } - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; - - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; - - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; - - hours = absFloor(minutes / 60); - data.hours = hours % 24; - - days += absFloor(hours / 24); - - // convert days to months - monthsFromDays = absFloor(daysToMonths(days)); - months += monthsFromDays; - days -= absCeil(monthsToDays(monthsFromDays)); - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - data.days = days; - data.months = months; - data.years = years; - - return this; - } - - function daysToMonths (days) { - // 400 years have 146097 days (taking into account leap year rules) - // 400 years have 12 months === 4800 - return days * 4800 / 146097; - } - - function monthsToDays (months) { - // the reverse of daysToMonths - return months * 146097 / 4800; - } - - function as (units) { - var days; - var months; - var milliseconds = this._milliseconds; - - units = normalizeUnits(units); - - if (units === 'month' || units === 'year') { - days = this._days + milliseconds / 864e5; - months = this._months + daysToMonths(days); - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(monthsToDays(this._months)); - switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 1440 + milliseconds / 6e4; - case 'second' : return days * 86400 + milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 864e5) + milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - } - - // TODO: Use this.as('ms')? - function duration_as__valueOf () { - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); - } - - function makeAs (alias) { - return function () { - return this.as(alias); - }; - } - - var asMilliseconds = makeAs('ms'); - var asSeconds = makeAs('s'); - var asMinutes = makeAs('m'); - var asHours = makeAs('h'); - var asDays = makeAs('d'); - var asWeeks = makeAs('w'); - var asMonths = makeAs('M'); - var asYears = makeAs('y'); - - function duration_get__get (units) { - units = normalizeUnits(units); - return this[units + 's'](); - } - - function makeGetter(name) { - return function () { - return this._data[name]; - }; - } - - var milliseconds = makeGetter('milliseconds'); - var seconds = makeGetter('seconds'); - var minutes = makeGetter('minutes'); - var hours = makeGetter('hours'); - var days = makeGetter('days'); - var duration_get__months = makeGetter('months'); - var years = makeGetter('years'); - - function weeks () { - return absFloor(this.days() / 7); - } - - var round = Math.round; - var thresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }; - - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } - - function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) { - var duration = create__createDuration(posNegDuration).abs(); - var seconds = round(duration.as('s')); - var minutes = round(duration.as('m')); - var hours = round(duration.as('h')); - var days = round(duration.as('d')); - var months = round(duration.as('M')); - var years = round(duration.as('y')); - - var a = seconds < thresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < thresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < thresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < thresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < thresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; - - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); - } - - // This function allows you to set a threshold for relative time strings - function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return thresholds[threshold]; - } - thresholds[threshold] = limit; - return true; - } - - function humanize (withSuffix) { - var locale = this.localeData(); - var output = duration_humanize__relativeTime(this, !withSuffix, locale); - - if (withSuffix) { - output = locale.pastFuture(+this, output); - } - - return locale.postformat(output); - } - - var iso_string__abs = Math.abs; - - function iso_string__toISOString() { - // for ISO strings we do not use the normal bubbling rules: - // * milliseconds bubble up until they become hours - // * days do not bubble at all - // * months bubble up until they become years - // This is because there is no context-free conversion between hours and days - // (think of clock changes) - // and also not between days and months (28-31 days per month) - var seconds = iso_string__abs(this._milliseconds) / 1000; - var days = iso_string__abs(this._days); - var months = iso_string__abs(this._months); - var minutes, hours, years; - - // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); - seconds %= 60; - minutes %= 60; - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var Y = years; - var M = months; - var D = days; - var h = hours; - var m = minutes; - var s = seconds; - var total = this.asSeconds(); - - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - - return (total < 0 ? '-' : '') + - 'P' + - (Y ? Y + 'Y' : '') + - (M ? M + 'M' : '') + - (D ? D + 'D' : '') + - ((h || m || s) ? 'T' : '') + - (h ? h + 'H' : '') + - (m ? m + 'M' : '') + - (s ? s + 'S' : ''); - } - - var duration_prototype__proto = Duration.prototype; - - duration_prototype__proto.abs = duration_abs__abs; - duration_prototype__proto.add = duration_add_subtract__add; - duration_prototype__proto.subtract = duration_add_subtract__subtract; - duration_prototype__proto.as = as; - duration_prototype__proto.asMilliseconds = asMilliseconds; - duration_prototype__proto.asSeconds = asSeconds; - duration_prototype__proto.asMinutes = asMinutes; - duration_prototype__proto.asHours = asHours; - duration_prototype__proto.asDays = asDays; - duration_prototype__proto.asWeeks = asWeeks; - duration_prototype__proto.asMonths = asMonths; - duration_prototype__proto.asYears = asYears; - duration_prototype__proto.valueOf = duration_as__valueOf; - duration_prototype__proto._bubble = bubble; - duration_prototype__proto.get = duration_get__get; - duration_prototype__proto.milliseconds = milliseconds; - duration_prototype__proto.seconds = seconds; - duration_prototype__proto.minutes = minutes; - duration_prototype__proto.hours = hours; - duration_prototype__proto.days = days; - duration_prototype__proto.weeks = weeks; - duration_prototype__proto.months = duration_get__months; - duration_prototype__proto.years = years; - duration_prototype__proto.humanize = humanize; - duration_prototype__proto.toISOString = iso_string__toISOString; - duration_prototype__proto.toString = iso_string__toISOString; - duration_prototype__proto.toJSON = iso_string__toISOString; - duration_prototype__proto.locale = locale; - duration_prototype__proto.localeData = localeData; - - // Deprecations - duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString); - duration_prototype__proto.lang = lang; - - // Side effect imports - - addFormatToken('X', 0, 0, 'unix'); - addFormatToken('x', 0, 0, 'valueOf'); - - // PARSING - - addRegexToken('x', matchSigned); - addRegexToken('X', matchTimestamp); - addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input, 10) * 1000); - }); - addParseToken('x', function (input, array, config) { - config._d = new Date(toInt(input)); - }); - - // Side effect imports - - ; - - //! moment.js - //! version : 2.10.6 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com - - utils_hooks__hooks.version = '2.10.6'; - - setHookCallback(local__createLocal); - - utils_hooks__hooks.fn = momentPrototype; - utils_hooks__hooks.min = min; - utils_hooks__hooks.max = max; - utils_hooks__hooks.utc = create_utc__createUTC; - utils_hooks__hooks.unix = moment_moment__createUnix; - utils_hooks__hooks.months = lists__listMonths; - utils_hooks__hooks.isDate = isDate; - utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale; - utils_hooks__hooks.invalid = valid__createInvalid; - utils_hooks__hooks.duration = create__createDuration; - utils_hooks__hooks.isMoment = isMoment; - utils_hooks__hooks.weekdays = lists__listWeekdays; - utils_hooks__hooks.parseZone = moment_moment__createInZone; - utils_hooks__hooks.localeData = locale_locales__getLocale; - utils_hooks__hooks.isDuration = isDuration; - utils_hooks__hooks.monthsShort = lists__listMonthsShort; - utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; - utils_hooks__hooks.defineLocale = defineLocale; - utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; - utils_hooks__hooks.normalizeUnits = normalizeUnits; - utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; - - var _moment__default = utils_hooks__hooks; - - //! moment.js locale configuration - //! locale : afrikaans (af) - //! author : Werner Mollentze : https://github.com/wernerm - - var af = _moment__default.defineLocale('af', { - months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), - weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), - weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), - meridiemParse: /vm|nm/i, - isPM : function (input) { - return /^nm$/i.test(input); - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'vm' : 'VM'; - } else { - return isLower ? 'nm' : 'NM'; - } - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Vandag om] LT', - nextDay : '[Môre om] LT', - nextWeek : 'dddd [om] LT', - lastDay : '[Gister om] LT', - lastWeek : '[Laas] dddd [om] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'oor %s', - past : '%s gelede', - s : '\'n paar sekondes', - m : '\'n minuut', - mm : '%d minute', - h : '\'n uur', - hh : '%d ure', - d : '\'n dag', - dd : '%d dae', - M : '\'n maand', - MM : '%d maande', - y : '\'n jaar', - yy : '%d jaar' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter - }, - week : { - dow : 1, // Maandag is die eerste dag van die week. - doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - } - }); - - //! moment.js locale configuration - //! locale : Moroccan Arabic (ar-ma) - //! author : ElFadili Yassine : https://github.com/ElFadiliY - //! author : Abdel Said : https://github.com/abdelsaid - - var ar_ma = _moment__default.defineLocale('ar-ma', { - months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Arabic Saudi Arabia (ar-sa) - //! author : Suhail Alkowaileet : https://github.com/xsoh - - var ar_sa__symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, ar_sa__numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }; - - var ar_sa = _moment__default.defineLocale('ar-sa', { - months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - preparse: function (string) { - return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return ar_sa__numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return ar_sa__symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Tunisian Arabic (ar-tn) - - var ar_tn = _moment__default.defineLocale('ar-tn', { - months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات' - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! Locale: Arabic (ar) - //! Author: Abdel Said: https://github.com/abdelsaid - //! Changes in months, weekdays: Ahmed Elkhatib - //! Native plural forms: forabi https://github.com/forabi - - var ar__symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, ar__numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }, pluralForm = function (n) { - return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; - }, plurals = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] - }, pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, ar__months = [ - 'كانون الثاني يناير', - 'شباط فبراير', - 'آذار مارس', - 'نيسان أبريل', - 'أيار مايو', - 'حزيران يونيو', - 'تموز يوليو', - 'آب أغسطس', - 'أيلول سبتمبر', - 'تشرين الأول أكتوبر', - 'تشرين الثاني نوفمبر', - 'كانون الأول ديسمبر' - ]; - - var ar = _moment__default.defineLocale('ar', { - months : ar__months, - monthsShort : ar__months, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/\u200FM/\u200FYYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize('s'), - m : pluralize('m'), - mm : pluralize('m'), - h : pluralize('h'), - hh : pluralize('h'), - d : pluralize('d'), - dd : pluralize('d'), - M : pluralize('M'), - MM : pluralize('M'), - y : pluralize('y'), - yy : pluralize('y') - }, - preparse: function (string) { - return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return ar__numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return ar__symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : azerbaijani (az) - //! author : topchiyev : https://github.com/topchiyev - - var az__suffixes = { - 1: '-inci', - 5: '-inci', - 8: '-inci', - 70: '-inci', - 80: '-inci', - 2: '-nci', - 7: '-nci', - 20: '-nci', - 50: '-nci', - 3: '-üncü', - 4: '-üncü', - 100: '-üncü', - 6: '-ncı', - 9: '-uncu', - 10: '-uncu', - 30: '-uncu', - 60: '-ıncı', - 90: '-ıncı' - }; - - var az = _moment__default.defineLocale('az', { - months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), - monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), - weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), - weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), - weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[sabah saat] LT', - nextWeek : '[gələn həftə] dddd [saat] LT', - lastDay : '[dünən] LT', - lastWeek : '[keçən həftə] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s əvvəl', - s : 'birneçə saniyyə', - m : 'bir dəqiqə', - mm : '%d dəqiqə', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir il', - yy : '%d il' - }, - meridiemParse: /gecə|səhər|gündüz|axşam/, - isPM : function (input) { - return /^(gündüz|axşam)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'gecə'; - } else if (hour < 12) { - return 'səhər'; - } else if (hour < 17) { - return 'gündüz'; - } else { - return 'axşam'; - } - }, - ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + '-ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (az__suffixes[a] || az__suffixes[b] || az__suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : belarusian (be) - //! author : Dmitry Demidov : https://github.com/demidov91 - //! author: Praleska: http://praleska.pro/ - //! Author : Menelion Elensúle : https://github.com/Oire - - function be__plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function be__relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', - 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', - 'dd': 'дзень_дні_дзён', - 'MM': 'месяц_месяцы_месяцаў', - 'yy': 'год_гады_гадоў' - }; - if (key === 'm') { - return withoutSuffix ? 'хвіліна' : 'хвіліну'; - } - else if (key === 'h') { - return withoutSuffix ? 'гадзіна' : 'гадзіну'; - } - else { - return number + ' ' + be__plural(format[key], +number); - } - } - function be__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), - 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function be__weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), - 'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_') - }, - nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; - } - - var be = _moment__default.defineLocale('be', { - months : be__monthsCaseReplace, - monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), - weekdays : be__weekdaysCaseReplace, - weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., HH:mm', - LLLL : 'dddd, D MMMM YYYY г., HH:mm' - }, - calendar : { - sameDay: '[Сёння ў] LT', - nextDay: '[Заўтра ў] LT', - lastDay: '[Учора ў] LT', - nextWeek: function () { - return '[У] dddd [ў] LT'; - }, - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return '[У мінулую] dddd [ў] LT'; - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'праз %s', - past : '%s таму', - s : 'некалькі секунд', - m : be__relativeTimeWithPlural, - mm : be__relativeTimeWithPlural, - h : be__relativeTimeWithPlural, - hh : be__relativeTimeWithPlural, - d : 'дзень', - dd : be__relativeTimeWithPlural, - M : 'месяц', - MM : be__relativeTimeWithPlural, - y : 'год', - yy : be__relativeTimeWithPlural - }, - meridiemParse: /ночы|раніцы|дня|вечара/, - isPM : function (input) { - return /^(дня|вечара)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночы'; - } else if (hour < 12) { - return 'раніцы'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечара'; - } - }, - ordinalParse: /\d{1,2}-(і|ы|га)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; - case 'D': - return number + '-га'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : bulgarian (bg) - //! author : Krasen Borisov : https://github.com/kraz - - var bg = _moment__default.defineLocale('bg', { - months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), - weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'след %s', - past : 'преди %s', - s : 'няколко секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дни', - M : 'месец', - MM : '%d месеца', - y : 'година', - yy : '%d години' - }, - ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Bengali (bn) - //! author : Kaushik Gandhi : https://github.com/kaushikgandhi - - var bn__symbolMap = { - '1': '১', - '2': '২', - '3': '৩', - '4': '৪', - '5': '৫', - '6': '৬', - '7': '৭', - '8': '৮', - '9': '৯', - '0': '০' - }, - bn__numberMap = { - '১': '1', - '২': '2', - '৩': '3', - '৪': '4', - '৫': '5', - '৬': '6', - '৭': '7', - '৮': '8', - '৯': '9', - '০': '0' - }; - - var bn = _moment__default.defineLocale('bn', { - months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), - monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'), - weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split('_'), - weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split('_'), - weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'), - longDateFormat : { - LT : 'A h:mm সময়', - LTS : 'A h:mm:ss সময়', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm সময়', - LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' - }, - calendar : { - sameDay : '[আজ] LT', - nextDay : '[আগামীকাল] LT', - nextWeek : 'dddd, LT', - lastDay : '[গতকাল] LT', - lastWeek : '[গত] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s পরে', - past : '%s আগে', - s : 'কএক সেকেন্ড', - m : 'এক মিনিট', - mm : '%d মিনিট', - h : 'এক ঘন্টা', - hh : '%d ঘন্টা', - d : 'এক দিন', - dd : '%d দিন', - M : 'এক মাস', - MM : '%d মাস', - y : 'এক বছর', - yy : '%d বছর' - }, - preparse: function (string) { - return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return bn__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return bn__symbolMap[match]; - }); - }, - meridiemParse: /রাত|সকাল|দুপুর|বিকেল|রাত/, - isPM: function (input) { - return /^(দুপুর|বিকেল|রাত)$/.test(input); - }, - //Bengali is a vast language its spoken - //in different forms in various parts of the world. - //I have just generalized with most common one used - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'রাত'; - } else if (hour < 10) { - return 'সকাল'; - } else if (hour < 17) { - return 'দুপুর'; - } else if (hour < 20) { - return 'বিকেল'; - } else { - return 'রাত'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : tibetan (bo) - //! author : Thupten N. Chakrishar : https://github.com/vajradog - - var bo__symbolMap = { - '1': '༡', - '2': '༢', - '3': '༣', - '4': '༤', - '5': '༥', - '6': '༦', - '7': '༧', - '8': '༨', - '9': '༩', - '0': '༠' - }, - bo__numberMap = { - '༡': '1', - '༢': '2', - '༣': '3', - '༤': '4', - '༥': '5', - '༦': '6', - '༧': '7', - '༨': '8', - '༩': '9', - '༠': '0' - }; - - var bo = _moment__default.defineLocale('bo', { - months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), - weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm', - LLLL : 'dddd, D MMMM YYYY, A h:mm' - }, - calendar : { - sameDay : '[དི་རིང] LT', - nextDay : '[སང་ཉིན] LT', - nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', - lastDay : '[ཁ་སང] LT', - lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ལ་', - past : '%s སྔན་ལ', - s : 'ལམ་སང', - m : 'སྐར་མ་གཅིག', - mm : '%d སྐར་མ', - h : 'ཆུ་ཚོད་གཅིག', - hh : '%d ཆུ་ཚོད', - d : 'ཉིན་གཅིག', - dd : '%d ཉིན་', - M : 'ཟླ་བ་གཅིག', - MM : '%d ཟླ་བ', - y : 'ལོ་གཅིག', - yy : '%d ལོ' - }, - preparse: function (string) { - return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { - return bo__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return bo__symbolMap[match]; - }); - }, - meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, - isPM: function (input) { - return /^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'མཚན་མོ'; - } else if (hour < 10) { - return 'ཞོགས་ཀས'; - } else if (hour < 17) { - return 'ཉིན་གུང'; - } else if (hour < 20) { - return 'དགོང་དག'; - } else { - return 'མཚན་མོ'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : breton (br) - //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou - - function relativeTimeWithMutation(number, withoutSuffix, key) { - var format = { - 'mm': 'munutenn', - 'MM': 'miz', - 'dd': 'devezh' - }; - return number + ' ' + mutation(format[key], number); - } - function specialMutationForYears(number) { - switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; - } - } - function lastNumber(number) { - if (number > 9) { - return lastNumber(number % 10); - } - return number; - } - function mutation(text, number) { - if (number === 2) { - return softMutation(text); - } - return text; - } - function softMutation(text) { - var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' - }; - if (mutationTable[text.charAt(0)] === undefined) { - return text; - } - return mutationTable[text.charAt(0)] + text.substring(1); - } - - var br = _moment__default.defineLocale('br', { - months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), - monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), - weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), - weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), - weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), - longDateFormat : { - LT : 'h[e]mm A', - LTS : 'h[e]mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [a viz] MMMM YYYY', - LLL : 'D [a viz] MMMM YYYY h[e]mm A', - LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' - }, - calendar : { - sameDay : '[Hiziv da] LT', - nextDay : '[Warc\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'a-benn %s', - past : '%s \'zo', - s : 'un nebeud segondennoù', - m : 'ur vunutenn', - mm : relativeTimeWithMutation, - h : 'un eur', - hh : '%d eur', - d : 'un devezh', - dd : relativeTimeWithMutation, - M : 'ur miz', - MM : relativeTimeWithMutation, - y : 'ur bloaz', - yy : specialMutationForYears - }, - ordinalParse: /\d{1,2}(añ|vet)/, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : bosnian (bs) - //! author : Nedim Cholich : https://github.com/frontyard - //! based on (hr) translation by Bojan Marković - - function bs__translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } - - var bs = _moment__default.defineLocale('bs', { - months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - m : bs__translate, - mm : bs__translate, - h : bs__translate, - hh : bs__translate, - d : 'dan', - dd : bs__translate, - M : 'mjesec', - MM : bs__translate, - y : 'godinu', - yy : bs__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : catalan (ca) - //! author : Juan G. Hurtado : https://github.com/juanghurtado - - var ca = _moment__default.defineLocale('ca', { - months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), - monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'), - weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), - weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), - weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'LT:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd D MMMM YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'fa %s', - s : 'uns segons', - m : 'un minut', - mm : '%d minuts', - h : 'una hora', - hh : '%d hores', - d : 'un dia', - dd : '%d dies', - M : 'un mes', - MM : '%d mesos', - y : 'un any', - yy : '%d anys' - }, - ordinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal : function (number, period) { - var output = (number === 1) ? 'r' : - (number === 2) ? 'n' : - (number === 3) ? 'r' : - (number === 4) ? 't' : 'è'; - if (period === 'w' || period === 'W') { - output = 'a'; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : czech (cs) - //! author : petrbela : https://github.com/petrbela - - var cs__months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), - cs__monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); - function cs__plural(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); - } - function cs__translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (cs__plural(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (cs__plural(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (cs__plural(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (cs__plural(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (cs__plural(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; - } - break; - } - } - - var cs = _moment__default.defineLocale('cs', { - months : cs__months, - monthsShort : cs__monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(cs__months, cs__monthsShort)), - weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), - weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), - weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[dnes v] LT', - nextDay: '[zítra v] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; - } - }, - lastDay: '[včera v] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'před %s', - s : cs__translate, - m : cs__translate, - mm : cs__translate, - h : cs__translate, - hh : cs__translate, - d : cs__translate, - dd : cs__translate, - M : cs__translate, - MM : cs__translate, - y : cs__translate, - yy : cs__translate - }, - ordinalParse : /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : chuvash (cv) - //! author : Anatoly Mironov : https://github.com/mirontoli - - var cv = _moment__default.defineLocale('cv', { - months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), - monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), - weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), - weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), - weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' - }, - calendar : { - sameDay: '[Паян] LT [сехетре]', - nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ӗнер] LT [сехетре]', - nextWeek: '[Ҫитес] dddd LT [сехетре]', - lastWeek: '[Иртнӗ] dddd LT [сехетре]', - sameElse: 'L' - }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; - return output + affix; - }, - past : '%s каялла', - s : 'пӗр-ик ҫеккунт', - m : 'пӗр минут', - mm : '%d минут', - h : 'пӗр сехет', - hh : '%d сехет', - d : 'пӗр кун', - dd : '%d кун', - M : 'пӗр уйӑх', - MM : '%d уйӑх', - y : 'пӗр ҫул', - yy : '%d ҫул' - }, - ordinalParse: /\d{1,2}-мӗш/, - ordinal : '%d-мӗш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Welsh (cy) - //! author : Robert Allen - - var cy = _moment__default.defineLocale('cy', { - months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), - monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), - weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), - weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), - weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), - // time formats are the same as en-gb - longDateFormat: { - LT: 'HH:mm', - LTS : 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[Heddiw am] LT', - nextDay: '[Yfory am] LT', - nextWeek: 'dddd [am] LT', - lastDay: '[Ddoe am] LT', - lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'mewn %s', - past: '%s yn ôl', - s: 'ychydig eiliadau', - m: 'munud', - mm: '%d munud', - h: 'awr', - hh: '%d awr', - d: 'diwrnod', - dd: '%d diwrnod', - M: 'mis', - MM: '%d mis', - y: 'blwyddyn', - yy: '%d flynedd' - }, - ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, - // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh - ordinal: function (number) { - var b = number, - output = '', - lookup = [ - '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed - 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed - ]; - if (b > 20) { - if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { - output = 'fed'; // not 30ain, 70ain or 90ain - } else { - output = 'ain'; - } - } else if (b > 0) { - output = lookup[b]; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : danish (da) - //! author : Ulrik Nielsen : https://github.com/mrbase - - var da = _moment__default.defineLocale('da', { - months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd [d.] D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[I dag kl.] LT', - nextDay : '[I morgen kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[I går kl.] LT', - lastWeek : '[sidste] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'få sekunder', - m : 'et minut', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dage', - M : 'en måned', - MM : '%d måneder', - y : 'et år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : austrian german (de-at) - //! author : lluchs : https://github.com/lluchs - //! author: Menelion Elensúle: https://github.com/Oire - //! author : Martin Groller : https://github.com/MadMG - - function de_at__processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - var de_at = _moment__default.defineLocale('de-at', { - months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[Morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[Gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - m : de_at__processRelativeTime, - mm : '%d Minuten', - h : de_at__processRelativeTime, - hh : '%d Stunden', - d : de_at__processRelativeTime, - dd : de_at__processRelativeTime, - M : de_at__processRelativeTime, - MM : de_at__processRelativeTime, - y : de_at__processRelativeTime, - yy : de_at__processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : german (de) - //! author : lluchs : https://github.com/lluchs - //! author: Menelion Elensúle: https://github.com/Oire - - function de__processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - var de = _moment__default.defineLocale('de', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[Morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[Gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - m : de__processRelativeTime, - mm : '%d Minuten', - h : de__processRelativeTime, - hh : '%d Stunden', - d : de__processRelativeTime, - dd : de__processRelativeTime, - M : de__processRelativeTime, - MM : de__processRelativeTime, - y : de__processRelativeTime, - yy : de__processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : modern greek (el) - //! author : Aggelos Karalias : https://github.com/mehiel - - var el = _moment__default.defineLocale('el', { - monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), - monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), - months : function (momentToFormat, format) { - if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' - return this._monthsGenitiveEl[momentToFormat.month()]; - } else { - return this._monthsNominativeEl[momentToFormat.month()]; - } - }, - monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), - weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), - weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), - weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'μμ' : 'ΜΜ'; - } else { - return isLower ? 'πμ' : 'ΠΜ'; - } - }, - isPM : function (input) { - return ((input + '').toLowerCase()[0] === 'μ'); - }, - meridiemParse : /[ΠΜ]\.?Μ?\.?/i, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : function () { - switch (this.day()) { - case 6: - return '[το προηγούμενο] dddd [{}] LT'; - default: - return '[την προηγούμενη] dddd [{}] LT'; - } - }, - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendarEl[key], - hours = mom && mom.hours(); - if (typeof output === 'function') { - output = output.apply(mom); - } - return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); - }, - relativeTime : { - future : 'σε %s', - past : '%s πριν', - s : 'λίγα δευτερόλεπτα', - m : 'ένα λεπτό', - mm : '%d λεπτά', - h : 'μία ώρα', - hh : '%d ώρες', - d : 'μία μέρα', - dd : '%d μέρες', - M : 'ένας μήνας', - MM : '%d μήνες', - y : 'ένας χρόνος', - yy : '%d χρόνια' - }, - ordinalParse: /\d{1,2}η/, - ordinal: '%dη', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : australian english (en-au) - - var en_au = _moment__default.defineLocale('en-au', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : canadian english (en-ca) - //! author : Jonathan Abourbih : https://github.com/jonbca - - var en_ca = _moment__default.defineLocale('en-ca', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'YYYY-MM-DD', - LL : 'D MMMM, YYYY', - LLL : 'D MMMM, YYYY h:mm A', - LLLL : 'dddd, D MMMM, YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - //! moment.js locale configuration - //! locale : great britain english (en-gb) - //! author : Chris Gedrim : https://github.com/chrisgedrim - - var en_gb = _moment__default.defineLocale('en-gb', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : esperanto (eo) - //! author : Colin Dean : https://github.com/colindean - //! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. - //! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! - - var eo = _moment__default.defineLocale('eo', { - months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), - weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'), - weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D[-an de] MMMM, YYYY', - LLL : 'D[-an de] MMMM, YYYY HH:mm', - LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm' - }, - meridiemParse: /[ap]\.t\.m/i, - isPM: function (input) { - return input.charAt(0).toLowerCase() === 'p'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'p.t.m.' : 'P.T.M.'; - } else { - return isLower ? 'a.t.m.' : 'A.T.M.'; - } - }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'je %s', - past : 'antaŭ %s', - s : 'sekundoj', - m : 'minuto', - mm : '%d minutoj', - h : 'horo', - hh : '%d horoj', - d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo - dd : '%d tagoj', - M : 'monato', - MM : '%d monatoj', - y : 'jaro', - yy : '%d jaroj' - }, - ordinalParse: /\d{1,2}a/, - ordinal : '%da', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : spanish (es) - //! author : Julio Napurí : https://github.com/julionc - - var monthsShortDot = 'Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.'.split('_'), - es__monthsShort = 'Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic'.split('_'); - - var es = _moment__default.defineLocale('es', { - months : 'Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return es__monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - weekdays : 'Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado'.split('_'), - weekdaysShort : 'Dom._Lun._Mar._Mié._Jue._Vie._Sáb.'.split('_'), - weekdaysMin : 'Do_Lu_Ma_Mi_Ju_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - ordinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : estonian (et) - //! author : Henry Kehlmann : https://github.com/madhenry - //! improvements : Illimar Tambek : https://github.com/ragulka - - function et__processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - 'm' : ['ühe minuti', 'üks minut'], - 'mm': [number + ' minuti', number + ' minutit'], - 'h' : ['ühe tunni', 'tund aega', 'üks tund'], - 'hh': [number + ' tunni', number + ' tundi'], - 'd' : ['ühe päeva', 'üks päev'], - 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], - 'MM': [number + ' kuu', number + ' kuud'], - 'y' : ['ühe aasta', 'aasta', 'üks aasta'], - 'yy': [number + ' aasta', number + ' aastat'] - }; - if (withoutSuffix) { - return format[key][2] ? format[key][2] : format[key][1]; - } - return isFuture ? format[key][0] : format[key][1]; - } - - var et = _moment__default.defineLocale('et', { - months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), - monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), - weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), - weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), - weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s pärast', - past : '%s tagasi', - s : et__processRelativeTime, - m : et__processRelativeTime, - mm : et__processRelativeTime, - h : et__processRelativeTime, - hh : et__processRelativeTime, - d : et__processRelativeTime, - dd : '%d päeva', - M : et__processRelativeTime, - MM : et__processRelativeTime, - y : et__processRelativeTime, - yy : et__processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : euskara (eu) - //! author : Eneko Illarramendi : https://github.com/eillarra - - var eu = _moment__default.defineLocale('eu', { - months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), - monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), - weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), - weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), - weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY[ko] MMMM[ren] D[a]', - LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', - LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - l : 'YYYY-M-D', - ll : 'YYYY[ko] MMM D[a]', - lll : 'YYYY[ko] MMM D[a] HH:mm', - llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' - }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' - }, - relativeTime : { - future : '%s barru', - past : 'duela %s', - s : 'segundo batzuk', - m : 'minutu bat', - mm : '%d minutu', - h : 'ordu bat', - hh : '%d ordu', - d : 'egun bat', - dd : '%d egun', - M : 'hilabete bat', - MM : '%d hilabete', - y : 'urte bat', - yy : '%d urte' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Persian (fa) - //! author : Ebrahim Byagowi : https://github.com/ebraminio - - var fa__symbolMap = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰' - }, fa__numberMap = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0' - }; - - var fa = _moment__default.defineLocale('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - meridiemParse: /قبل از ظهر|بعد از ظهر/, - isPM: function (input) { - return /بعد از ظهر/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'قبل از ظهر'; - } else { - return 'بعد از ظهر'; - } - }, - calendar : { - sameDay : '[امروز ساعت] LT', - nextDay : '[فردا ساعت] LT', - nextWeek : 'dddd [ساعت] LT', - lastDay : '[دیروز ساعت] LT', - lastWeek : 'dddd [پیش] [ساعت] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'در %s', - past : '%s پیش', - s : 'چندین ثانیه', - m : 'یک دقیقه', - mm : '%d دقیقه', - h : 'یک ساعت', - hh : '%d ساعت', - d : 'یک روز', - dd : '%d روز', - M : 'یک ماه', - MM : '%d ماه', - y : 'یک سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/[۰-۹]/g, function (match) { - return fa__numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return fa__symbolMap[match]; - }).replace(/,/g, '،'); - }, - ordinalParse: /\d{1,2}م/, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : finnish (fi) - //! author : Tarmo Aidantausta : https://github.com/bleadof - - var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), - numbersFuture = [ - 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbersPast[7], numbersPast[8], numbersPast[9] - ]; - function fi__translate(number, withoutSuffix, key, isFuture) { - var result = ''; - switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; - } - result = verbalNumber(number, isFuture) + ' ' + result; - return result; - } - function verbalNumber(number, isFuture) { - return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; - } - - var fi = _moment__default.defineLocale('fi', { - months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), - monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), - weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), - weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), - weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'Do MMMM[ta] YYYY', - LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', - LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', - l : 'D.M.YYYY', - ll : 'Do MMM YYYY', - lll : 'Do MMM YYYY, [klo] HH.mm', - llll : 'ddd, Do MMM YYYY, [klo] HH.mm' - }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s päästä', - past : '%s sitten', - s : fi__translate, - m : fi__translate, - mm : fi__translate, - h : fi__translate, - hh : fi__translate, - d : fi__translate, - dd : fi__translate, - M : fi__translate, - MM : fi__translate, - y : fi__translate, - yy : fi__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : faroese (fo) - //! author : Ragnar Johannesen : https://github.com/ragnar123 - - var fo = _moment__default.defineLocale('fo', { - months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), - weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), - weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D. MMMM, YYYY HH:mm' - }, - calendar : { - sameDay : '[Í dag kl.] LT', - nextDay : '[Í morgin kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[Í gjár kl.] LT', - lastWeek : '[síðstu] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'um %s', - past : '%s síðani', - s : 'fá sekund', - m : 'ein minutt', - mm : '%d minuttir', - h : 'ein tími', - hh : '%d tímar', - d : 'ein dagur', - dd : '%d dagar', - M : 'ein mánaði', - MM : '%d mánaðir', - y : 'eitt ár', - yy : '%d ár' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : canadian french (fr-ca) - //! author : Jonathan Abourbih : https://github.com/jonbca - - var fr_ca = _moment__default.defineLocale('fr-ca', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Aujourd\'hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - ordinalParse: /\d{1,2}(er|e)/, - ordinal : function (number) { - return number + (number === 1 ? 'er' : 'e'); - } - }); - - //! moment.js locale configuration - //! locale : french (fr) - //! author : John Fischer : https://github.com/jfroffice - - var fr = _moment__default.defineLocale('fr', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Aujourd\'hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - ordinalParse: /\d{1,2}(er|)/, - ordinal : function (number) { - return number + (number === 1 ? 'er' : ''); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : frisian (fy) - //! author : Robin van der Vliet : https://github.com/robin0van0der0v - - var fy__monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), - fy__monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); - - var fy = _moment__default.defineLocale('fy', { - months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return fy__monthsShortWithoutDots[m.month()]; - } else { - return fy__monthsShortWithDots[m.month()]; - } - }, - weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), - weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), - weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[hjoed om] LT', - nextDay: '[moarn om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[juster om] LT', - lastWeek: '[ôfrûne] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'oer %s', - past : '%s lyn', - s : 'in pear sekonden', - m : 'ien minút', - mm : '%d minuten', - h : 'ien oere', - hh : '%d oeren', - d : 'ien dei', - dd : '%d dagen', - M : 'ien moanne', - MM : '%d moannen', - y : 'ien jier', - yy : '%d jierren' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : galician (gl) - //! author : Juan G. Hurtado : https://github.com/juanghurtado - - var gl = _moment__default.defineLocale('gl', { - months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'), - monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'), - weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'), - weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.'.split('_'), - weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd D MMMM YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; - }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : function (str) { - if (str === 'uns segundos') { - return 'nuns segundos'; - } - return 'en ' + str; - }, - past : 'hai %s', - s : 'uns segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'unha hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un ano', - yy : '%d anos' - }, - ordinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Hebrew (he) - //! author : Tomer Cohen : https://github.com/tomer - //! author : Moshe Simantov : https://github.com/DevelopmentIL - //! author : Tal Ater : https://github.com/TalAter - - var he = _moment__default.defineLocale('he', { - months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), - monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), - weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), - weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), - weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [ב]MMMM YYYY', - LLL : 'D [ב]MMMM YYYY HH:mm', - LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', - l : 'D/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay : '[היום ב־]LT', - nextDay : '[מחר ב־]LT', - nextWeek : 'dddd [בשעה] LT', - lastDay : '[אתמול ב־]LT', - lastWeek : '[ביום] dddd [האחרון בשעה] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'בעוד %s', - past : 'לפני %s', - s : 'מספר שניות', - m : 'דקה', - mm : '%d דקות', - h : 'שעה', - hh : function (number) { - if (number === 2) { - return 'שעתיים'; - } - return number + ' שעות'; - }, - d : 'יום', - dd : function (number) { - if (number === 2) { - return 'יומיים'; - } - return number + ' ימים'; - }, - M : 'חודש', - MM : function (number) { - if (number === 2) { - return 'חודשיים'; - } - return number + ' חודשים'; - }, - y : 'שנה', - yy : function (number) { - if (number === 2) { - return 'שנתיים'; - } else if (number % 10 === 0 && number !== 10) { - return number + ' שנה'; - } - return number + ' שנים'; - } - } - }); - - //! moment.js locale configuration - //! locale : hindi (hi) - //! author : Mayank Singhal : https://github.com/mayanksinghal - - var hi__symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - hi__numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - var hi = _moment__default.defineLocale('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm बजे', - LTS : 'A h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[कल] LT', - nextWeek : 'dddd, LT', - lastDay : '[कल] LT', - lastWeek : '[पिछले] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s में', - past : '%s पहले', - s : 'कुछ ही क्षण', - m : 'एक मिनट', - mm : '%d मिनट', - h : 'एक घंटा', - hh : '%d घंटे', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महीने', - MM : '%d महीने', - y : 'एक वर्ष', - yy : '%d वर्ष' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return hi__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return hi__symbolMap[match]; - }); - }, - // Hindi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. - meridiemParse: /रात|सुबह|दोपहर|शाम/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सुबह') { - return hour; - } else if (meridiem === 'दोपहर') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'शाम') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'रात'; - } else if (hour < 10) { - return 'सुबह'; - } else if (hour < 17) { - return 'दोपहर'; - } else if (hour < 20) { - return 'शाम'; - } else { - return 'रात'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : hrvatski (hr) - //! author : Bojan Marković : https://github.com/bmarkovic - - function hr__translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } - - var hr = _moment__default.defineLocale('hr', { - months : 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'), - monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - m : hr__translate, - mm : hr__translate, - h : hr__translate, - hh : hr__translate, - d : 'dan', - dd : hr__translate, - M : 'mjesec', - MM : hr__translate, - y : 'godinu', - yy : hr__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : hungarian (hu) - //! author : Adam Brunner : https://github.com/adambrunner - - var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); - function hu__translate(number, withoutSuffix, key, isFuture) { - var num = number, - suffix; - switch (key) { - case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); - } - return ''; - } - function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; - } - - var hu = _moment__default.defineLocale('hu', { - months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), - monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), - weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), - weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), - weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY. MMMM D.', - LLL : 'YYYY. MMMM D. H:mm', - LLLL : 'YYYY. MMMM D., dddd H:mm' - }, - meridiemParse: /de|du/i, - isPM: function (input) { - return input.charAt(1).toLowerCase() === 'u'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower === true ? 'de' : 'DE'; - } else { - return isLower === true ? 'du' : 'DU'; - } - }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { - return week.call(this, true); - }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { - return week.call(this, false); - }, - sameElse : 'L' - }, - relativeTime : { - future : '%s múlva', - past : '%s', - s : hu__translate, - m : hu__translate, - mm : hu__translate, - h : hu__translate, - hh : hu__translate, - d : hu__translate, - dd : hu__translate, - M : hu__translate, - MM : hu__translate, - y : hu__translate, - yy : hu__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Armenian (hy-am) - //! author : Armendarabyan : https://github.com/armendarabyan - - function hy_am__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), - 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function hy_am__monthsShortCaseReplace(m, format) { - var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'); - return monthsShort[m.month()]; - } - function hy_am__weekdaysCaseReplace(m, format) { - var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'); - return weekdays[m.day()]; - } - - var hy_am = _moment__default.defineLocale('hy-am', { - months : hy_am__monthsCaseReplace, - monthsShort : hy_am__monthsShortCaseReplace, - weekdays : hy_am__weekdaysCaseReplace, - weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY թ.', - LLL : 'D MMMM YYYY թ., HH:mm', - LLLL : 'dddd, D MMMM YYYY թ., HH:mm' - }, - calendar : { - sameDay: '[այսօր] LT', - nextDay: '[վաղը] LT', - lastDay: '[երեկ] LT', - nextWeek: function () { - return 'dddd [օրը ժամը] LT'; - }, - lastWeek: function () { - return '[անցած] dddd [օրը ժամը] LT'; - }, - sameElse: 'L' - }, - relativeTime : { - future : '%s հետո', - past : '%s առաջ', - s : 'մի քանի վայրկյան', - m : 'րոպե', - mm : '%d րոպե', - h : 'ժամ', - hh : '%d ժամ', - d : 'օր', - dd : '%d օր', - M : 'ամիս', - MM : '%d ամիս', - y : 'տարի', - yy : '%d տարի' - }, - meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, - isPM: function (input) { - return /^(ցերեկվա|երեկոյան)$/.test(input); - }, - meridiem : function (hour) { - if (hour < 4) { - return 'գիշերվա'; - } else if (hour < 12) { - return 'առավոտվա'; - } else if (hour < 17) { - return 'ցերեկվա'; - } else { - return 'երեկոյան'; - } - }, - ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, - ordinal: function (number, period) { - switch (period) { - case 'DDD': - case 'w': - case 'W': - case 'DDDo': - if (number === 1) { - return number + '-ին'; - } - return number + '-րդ'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Bahasa Indonesia (id) - //! author : Mohammad Satrio Utomo : https://github.com/tyok - //! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan - - var id = _moment__default.defineLocale('id', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|siang|sore|malam/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'siang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sore' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'siang'; - } else if (hours < 19) { - return 'sore'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lalu', - s : 'beberapa detik', - m : 'semenit', - mm : '%d menit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : icelandic (is) - //! author : Hinrik Örn Sigurðsson : https://github.com/hinrik - - function is__plural(n) { - if (n % 100 === 11) { - return true; - } else if (n % 10 === 1) { - return false; - } - return true; - } - function is__translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (is__plural(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (is__plural(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (is__plural(number)) { - if (withoutSuffix) { - return result + 'dagar'; - } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (is__plural(number)) { - if (withoutSuffix) { - return result + 'mánuðir'; - } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (is__plural(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); - } - } - - var is = _moment__default.defineLocale('is', { - months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), - weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), - weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), - weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' - }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'eftir %s', - past : 'fyrir %s síðan', - s : is__translate, - m : is__translate, - mm : is__translate, - h : 'klukkustund', - hh : is__translate, - d : is__translate, - dd : is__translate, - M : is__translate, - MM : is__translate, - y : is__translate, - yy : is__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : italian (it) - //! author : Lorenzo : https://github.com/aliem - //! author: Mattia Larentis: https://github.com/nostalgiaz - - var it = _moment__default.defineLocale('it', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'), - weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'), - weekdaysMin : 'D_L_Ma_Me_G_V_S'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[la scorsa] dddd [alle] LT'; - default: - return '[lo scorso] dddd [alle] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; - }, - past : '%s fa', - s : 'alcuni secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' - }, - ordinalParse : /\d{1,2}º/, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : japanese (ja) - //! author : LI Long : https://github.com/baryon - - var ja = _moment__default.defineLocale('ja', { - months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), - weekdaysShort : '日_月_火_水_木_金_土'.split('_'), - weekdaysMin : '日_月_火_水_木_金_土'.split('_'), - longDateFormat : { - LT : 'Ah時m分', - LTS : 'Ah時m分s秒', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日Ah時m分', - LLLL : 'YYYY年M月D日Ah時m分 dddd' - }, - meridiemParse: /午前|午後/i, - isPM : function (input) { - return input === '午後'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return '午前'; - } else { - return '午後'; - } - }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : '[来週]dddd LT', - lastDay : '[昨日] LT', - lastWeek : '[前週]dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s後', - past : '%s前', - s : '数秒', - m : '1分', - mm : '%d分', - h : '1時間', - hh : '%d時間', - d : '1日', - dd : '%d日', - M : '1ヶ月', - MM : '%dヶ月', - y : '1年', - yy : '%d年' - } - }); - - //! moment.js locale configuration - //! locale : Boso Jowo (jv) - //! author : Rony Lantip : https://github.com/lantip - //! reference: http://jv.wikipedia.org/wiki/Basa_Jawa - - var jv = _moment__default.defineLocale('jv', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), - weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /enjing|siyang|sonten|ndalu/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'enjing') { - return hour; - } else if (meridiem === 'siyang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sonten' || meridiem === 'ndalu') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'enjing'; - } else if (hours < 15) { - return 'siyang'; - } else if (hours < 19) { - return 'sonten'; - } else { - return 'ndalu'; - } - }, - calendar : { - sameDay : '[Dinten puniko pukul] LT', - nextDay : '[Mbenjang pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kala wingi pukul] LT', - lastWeek : 'dddd [kepengker pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'wonten ing %s', - past : '%s ingkang kepengker', - s : 'sawetawis detik', - m : 'setunggal menit', - mm : '%d menit', - h : 'setunggal jam', - hh : '%d jam', - d : 'sedinten', - dd : '%d dinten', - M : 'sewulan', - MM : '%d wulan', - y : 'setaun', - yy : '%d taun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Georgian (ka) - //! author : Irakli Janiashvili : https://github.com/irakli-janiashvili - - function ka__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, - nounCase = (/D[oD] *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function ka__weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') - }, - nounCase = (/(წინა|შემდეგ)/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; - } - - var ka = _moment__default.defineLocale('ka', { - months : ka__monthsCaseReplace, - monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays : ka__weekdaysCaseReplace, - weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), - weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, 'ში') : - s + 'ში'; - }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { - return s.replace(/(ი|ე)$/, 'ის წინ'); - } - if ((/წელი/).test(s)) { - return s.replace(/წელი$/, 'წლის წინ'); - } - }, - s : 'რამდენიმე წამი', - m : 'წუთი', - mm : '%d წუთი', - h : 'საათი', - hh : '%d საათი', - d : 'დღე', - dd : '%d დღე', - M : 'თვე', - MM : '%d თვე', - y : 'წელი', - yy : '%d წელი' - }, - ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, - ordinal : function (number) { - if (number === 0) { - return number; - } - if (number === 1) { - return number + '-ლი'; - } - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { - return 'მე-' + number; - } - return number + '-ე'; - }, - week : { - dow : 1, - doy : 7 - } - }); - - //! moment.js locale configuration - //! locale : khmer (km) - //! author : Kruy Vanna : https://github.com/kruyvanna - - var km = _moment__default.defineLocale('km', { - months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), - monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), - weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS : 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[ថ្ងៃនៈ ម៉ោង] LT', - nextDay: '[ស្អែក ម៉ោង] LT', - nextWeek: 'dddd [ម៉ោង] LT', - lastDay: '[ម្សិលមិញ ម៉ោង] LT', - lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L' - }, - relativeTime: { - future: '%sទៀត', - past: '%sមុន', - s: 'ប៉ុន្មានវិនាទី', - m: 'មួយនាទី', - mm: '%d នាទី', - h: 'មួយម៉ោង', - hh: '%d ម៉ោង', - d: 'មួយថ្ងៃ', - dd: '%d ថ្ងៃ', - M: 'មួយខែ', - MM: '%d ខែ', - y: 'មួយឆ្នាំ', - yy: '%d ឆ្នាំ' - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : korean (ko) - //! - //! authors - //! - //! - Kyungwook, Park : https://github.com/kyungw00k - //! - Jeeeyul Lee <jeeeyul@gmail.com> - - var ko = _moment__default.defineLocale('ko', { - months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), - weekdaysShort : '일_월_화_수_목_금_토'.split('_'), - weekdaysMin : '일_월_화_수_목_금_토'.split('_'), - longDateFormat : { - LT : 'A h시 m분', - LTS : 'A h시 m분 s초', - L : 'YYYY.MM.DD', - LL : 'YYYY년 MMMM D일', - LLL : 'YYYY년 MMMM D일 A h시 m분', - LLLL : 'YYYY년 MMMM D일 dddd A h시 m분' - }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s 후', - past : '%s 전', - s : '몇초', - ss : '%d초', - m : '일분', - mm : '%d분', - h : '한시간', - hh : '%d시간', - d : '하루', - dd : '%d일', - M : '한달', - MM : '%d달', - y : '일년', - yy : '%d년' - }, - ordinalParse : /\d{1,2}일/, - ordinal : '%d일', - meridiemParse : /오전|오후/, - isPM : function (token) { - return token === '오후'; - }, - meridiem : function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; - } - }); - - //! moment.js locale configuration - //! locale : Luxembourgish (lb) - //! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz - - function lb__processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eng Minutt', 'enger Minutt'], - 'h': ['eng Stonn', 'enger Stonn'], - 'd': ['een Dag', 'engem Dag'], - 'M': ['ee Mount', 'engem Mount'], - 'y': ['ee Joer', 'engem Joer'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - function processFutureTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'a ' + string; - } - return 'an ' + string; - } - function processPastTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'viru ' + string; - } - return 'virun ' + string; - } - /** - * Returns true if the word before the given number loses the '-n' ending. - * e.g. 'an 10 Deeg' but 'a 5 Deeg' - * - * @param number {integer} - * @returns {boolean} - */ - function eifelerRegelAppliesToNumber(number) { - number = parseInt(number, 10); - if (isNaN(number)) { - return false; - } - if (number < 0) { - // Negative Number --> always true - return true; - } else if (number < 10) { - // Only 1 digit - if (4 <= number && number <= 7) { - return true; - } - return false; - } else if (number < 100) { - // 2 digits - var lastDigit = number % 10, firstDigit = number / 10; - if (lastDigit === 0) { - return eifelerRegelAppliesToNumber(firstDigit); - } - return eifelerRegelAppliesToNumber(lastDigit); - } else if (number < 10000) { - // 3 or 4 digits --> recursively check first digit - while (number >= 10) { - number = number / 10; - } - return eifelerRegelAppliesToNumber(number); - } else { - // Anything larger than 4 digits: recursively check first n-3 digits - number = number / 1000; - return eifelerRegelAppliesToNumber(number); - } - } - - var lb = _moment__default.defineLocale('lb', { - months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), - weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'H:mm [Auer]', - LTS: 'H:mm:ss [Auer]', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm [Auer]', - LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' - }, - calendar: { - sameDay: '[Haut um] LT', - sameElse: 'L', - nextDay: '[Muer um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gëschter um] LT', - lastWeek: function () { - // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule - switch (this.day()) { - case 2: - case 4: - return '[Leschten] dddd [um] LT'; - default: - return '[Leschte] dddd [um] LT'; - } - } - }, - relativeTime : { - future : processFutureTime, - past : processPastTime, - s : 'e puer Sekonnen', - m : lb__processRelativeTime, - mm : '%d Minutten', - h : lb__processRelativeTime, - hh : '%d Stonnen', - d : lb__processRelativeTime, - dd : '%d Deeg', - M : lb__processRelativeTime, - MM : '%d Méint', - y : lb__processRelativeTime, - yy : '%d Joer' - }, - ordinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Lithuanian (lt) - //! author : Mindaugas Mozūras : https://github.com/mmozuras - - var lt__units = { - 'm' : 'minutė_minutės_minutę', - 'mm': 'minutės_minučių_minutes', - 'h' : 'valanda_valandos_valandą', - 'hh': 'valandos_valandų_valandas', - 'd' : 'diena_dienos_dieną', - 'dd': 'dienos_dienų_dienas', - 'M' : 'mėnuo_mėnesio_mėnesį', - 'MM': 'mėnesiai_mėnesių_mėnesius', - 'y' : 'metai_metų_metus', - 'yy': 'metai_metų_metus' - }, - weekDays = 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'); - function translateSeconds(number, withoutSuffix, key, isFuture) { - if (withoutSuffix) { - return 'kelios sekundės'; - } else { - return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; - } - } - function lt__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), - 'accusative': 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); - } - function special(number) { - return number % 10 === 0 || (number > 10 && number < 20); - } - function forms(key) { - return lt__units[key].split('_'); - } - function lt__translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - if (number === 1) { - return result + translateSingular(number, withoutSuffix, key[0], isFuture); - } else if (withoutSuffix) { - return result + (special(number) ? forms(key)[1] : forms(key)[0]); - } else { - if (isFuture) { - return result + forms(key)[1]; - } else { - return result + (special(number) ? forms(key)[1] : forms(key)[2]); - } - } - } - function relativeWeekDay(moment, format) { - var nominative = format.indexOf('dddd HH:mm') === -1, - weekDay = weekDays[moment.day()]; - return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + 'į'; - } - - var lt = _moment__default.defineLocale('lt', { - months : lt__monthsCaseReplace, - monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays : relativeWeekDay, - weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), - weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY [m.] MMMM D [d.]', - LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', - l : 'YYYY-MM-DD', - ll : 'YYYY [m.] MMMM D [d.]', - lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' - }, - calendar : { - sameDay : '[Šiandien] LT', - nextDay : '[Rytoj] LT', - nextWeek : 'dddd LT', - lastDay : '[Vakar] LT', - lastWeek : '[Praėjusį] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : 'po %s', - past : 'prieš %s', - s : translateSeconds, - m : translateSingular, - mm : lt__translate, - h : translateSingular, - hh : lt__translate, - d : translateSingular, - dd : lt__translate, - M : translateSingular, - MM : lt__translate, - y : translateSingular, - yy : lt__translate - }, - ordinalParse: /\d{1,2}-oji/, - ordinal : function (number) { - return number + '-oji'; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : latvian (lv) - //! author : Kristaps Karlsons : https://github.com/skakri - //! author : Jānis Elmeris : https://github.com/JanisE - - var lv__units = { - 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'h': 'stundas_stundām_stunda_stundas'.split('_'), - 'hh': 'stundas_stundām_stunda_stundas'.split('_'), - 'd': 'dienas_dienām_diena_dienas'.split('_'), - 'dd': 'dienas_dienām_diena_dienas'.split('_'), - 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'y': 'gada_gadiem_gads_gadi'.split('_'), - 'yy': 'gada_gadiem_gads_gadi'.split('_') - }; - /** - * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. - */ - function lv__format(forms, number, withoutSuffix) { - if (withoutSuffix) { - // E.g. "21 minūte", "3 minūtes". - return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; - } else { - // E.g. "21 minūtes" as in "pēc 21 minūtes". - // E.g. "3 minūtēm" as in "pēc 3 minūtēm". - return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; - } - } - function lv__relativeTimeWithPlural(number, withoutSuffix, key) { - return number + ' ' + lv__format(lv__units[key], number, withoutSuffix); - } - function relativeTimeWithSingular(number, withoutSuffix, key) { - return lv__format(lv__units[key], number, withoutSuffix); - } - function relativeSeconds(number, withoutSuffix) { - return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; - } - - var lv = _moment__default.defineLocale('lv', { - months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), - weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY.', - LL : 'YYYY. [gada] D. MMMM', - LLL : 'YYYY. [gada] D. MMMM, HH:mm', - LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' - }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'pēc %s', - past : 'pirms %s', - s : relativeSeconds, - m : relativeTimeWithSingular, - mm : lv__relativeTimeWithPlural, - h : relativeTimeWithSingular, - hh : lv__relativeTimeWithPlural, - d : relativeTimeWithSingular, - dd : lv__relativeTimeWithPlural, - M : relativeTimeWithSingular, - MM : lv__relativeTimeWithPlural, - y : relativeTimeWithSingular, - yy : lv__relativeTimeWithPlural - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Montenegrin (me) - //! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac - - var me__translator = { - words: { //Different grammatical cases - m: ['jedan minut', 'jednog minuta'], - mm: ['minut', 'minuta', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mjesec', 'mjeseca', 'mjeseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = me__translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + me__translator.correctGrammaticalCase(number, wordKey); - } - } - }; - - var me = _moment__default.defineLocale('me', { - months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], - monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], - weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sjutra u] LT', - - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedjelje] [u] LT', - '[prošlog] [ponedjeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srijede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'nekoliko sekundi', - m : me__translator.translate, - mm : me__translator.translate, - h : me__translator.translate, - hh : me__translator.translate, - d : 'dan', - dd : me__translator.translate, - M : 'mjesec', - MM : me__translator.translate, - y : 'godinu', - yy : me__translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : macedonian (mk) - //! author : Borislav Mickov : https://github.com/B0k0 - - var mk = _moment__default.defineLocale('mk', { - months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), - weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), - weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Денес во] LT', - nextDay : '[Утре во] LT', - nextWeek : 'dddd [во] LT', - lastDay : '[Вчера во] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[Во изминатата] dddd [во] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Во изминатиот] dddd [во] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'после %s', - past : 'пред %s', - s : 'неколку секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дена', - M : 'месец', - MM : '%d месеци', - y : 'година', - yy : '%d години' - }, - ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : malayalam (ml) - //! author : Floyd Pink : https://github.com/floydpink - - var ml = _moment__default.defineLocale('ml', { - months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), - monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), - weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), - weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), - weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), - longDateFormat : { - LT : 'A h:mm -നു', - LTS : 'A h:mm:ss -നു', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm -നു', - LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' - }, - calendar : { - sameDay : '[ഇന്ന്] LT', - nextDay : '[നാളെ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ഇന്നലെ] LT', - lastWeek : '[കഴിഞ്ഞ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s കഴിഞ്ഞ്', - past : '%s മുൻപ്', - s : 'അൽപ നിമിഷങ്ങൾ', - m : 'ഒരു മിനിറ്റ്', - mm : '%d മിനിറ്റ്', - h : 'ഒരു മണിക്കൂർ', - hh : '%d മണിക്കൂർ', - d : 'ഒരു ദിവസം', - dd : '%d ദിവസം', - M : 'ഒരു മാസം', - MM : '%d മാസം', - y : 'ഒരു വർഷം', - yy : '%d വർഷം' - }, - meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, - isPM : function (input) { - return /^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'രാത്രി'; - } else if (hour < 12) { - return 'രാവിലെ'; - } else if (hour < 17) { - return 'ഉച്ച കഴിഞ്ഞ്'; - } else if (hour < 20) { - return 'വൈകുന്നേരം'; - } else { - return 'രാത്രി'; - } - } - }); - - //! moment.js locale configuration - //! locale : Marathi (mr) - //! author : Harshad Kale : https://github.com/kalehv - - var mr__symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - mr__numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - var mr = _moment__default.defineLocale('mr', { - months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), - weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm वाजता', - LTS : 'A h:mm:ss वाजता', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm वाजता', - LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[उद्या] LT', - nextWeek : 'dddd, LT', - lastDay : '[काल] LT', - lastWeek: '[मागील] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s नंतर', - past : '%s पूर्वी', - s : 'सेकंद', - m: 'एक मिनिट', - mm: '%d मिनिटे', - h : 'एक तास', - hh : '%d तास', - d : 'एक दिवस', - dd : '%d दिवस', - M : 'एक महिना', - MM : '%d महिने', - y : 'एक वर्ष', - yy : '%d वर्षे' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return mr__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return mr__symbolMap[match]; - }); - }, - meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात्री') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सकाळी') { - return hour; - } else if (meridiem === 'दुपारी') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'सायंकाळी') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'रात्री'; - } else if (hour < 10) { - return 'सकाळी'; - } else if (hour < 17) { - return 'दुपारी'; - } else if (hour < 20) { - return 'सायंकाळी'; - } else { - return 'रात्री'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Bahasa Malaysia (ms-MY) - //! author : Weldan Jamili : https://github.com/weldan - - var ms_my = _moment__default.defineLocale('ms-my', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Bahasa Malaysia (ms-MY) - //! author : Weldan Jamili : https://github.com/weldan - - var locale_ms = _moment__default.defineLocale('ms', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Burmese (my) - //! author : Squar team, mysquar.com - - var my__symbolMap = { - '1': '၁', - '2': '၂', - '3': '၃', - '4': '၄', - '5': '၅', - '6': '၆', - '7': '၇', - '8': '၈', - '9': '၉', - '0': '၀' - }, my__numberMap = { - '၁': '1', - '၂': '2', - '၃': '3', - '၄': '4', - '၅': '5', - '၆': '6', - '၇': '7', - '၈': '8', - '၉': '9', - '၀': '0' - }; - - var my = _moment__default.defineLocale('my', { - months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), - monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), - weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), - weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[ယနေ.] LT [မှာ]', - nextDay: '[မနက်ဖြန်] LT [မှာ]', - nextWeek: 'dddd LT [မှာ]', - lastDay: '[မနေ.က] LT [မှာ]', - lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', - sameElse: 'L' - }, - relativeTime: { - future: 'လာမည့် %s မှာ', - past: 'လွန်ခဲ့သော %s က', - s: 'စက္ကန်.အနည်းငယ်', - m: 'တစ်မိနစ်', - mm: '%d မိနစ်', - h: 'တစ်နာရီ', - hh: '%d နာရီ', - d: 'တစ်ရက်', - dd: '%d ရက်', - M: 'တစ်လ', - MM: '%d လ', - y: 'တစ်နှစ်', - yy: '%d နှစ်' - }, - preparse: function (string) { - return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { - return my__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return my__symbolMap[match]; - }); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : norwegian bokmål (nb) - //! authors : Espen Hovlandsdal : https://github.com/rexxars - //! Sigurd Gartmann : https://github.com/sigurdga - - var nb = _moment__default.defineLocale('nb', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tirs_ons_tors_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'H.mm', - LTS : 'H.mm.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H.mm', - LLLL : 'dddd D. MMMM YYYY [kl.] H.mm' - }, - calendar : { - sameDay: '[i dag kl.] LT', - nextDay: '[i morgen kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[i går kl.] LT', - lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'for %s siden', - s : 'noen sekunder', - m : 'ett minutt', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dager', - M : 'en måned', - MM : '%d måneder', - y : 'ett år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : nepali/nepalese - //! author : suvash : https://github.com/suvash - - var ne__symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - ne__numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - var ne = _moment__default.defineLocale('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split('_'), - longDateFormat : { - LT : 'Aको h:mm बजे', - LTS : 'Aको h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, Aको h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return ne__numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return ne__symbolMap[match]; - }); - }, - meridiemParse: /राती|बिहान|दिउँसो|बेलुका|साँझ|राती/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'राती') { - return hour < 3 ? hour : hour + 12; - } else if (meridiem === 'बिहान') { - return hour; - } else if (meridiem === 'दिउँसो') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'बेलुका' || meridiem === 'साँझ') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 3) { - return 'राती'; - } else if (hour < 10) { - return 'बिहान'; - } else if (hour < 15) { - return 'दिउँसो'; - } else if (hour < 18) { - return 'बेलुका'; - } else if (hour < 20) { - return 'साँझ'; - } else { - return 'राती'; - } - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[भोली] LT', - nextWeek : '[आउँदो] dddd[,] LT', - lastDay : '[हिजो] LT', - lastWeek : '[गएको] dddd[,] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%sमा', - past : '%s अगाडी', - s : 'केही समय', - m : 'एक मिनेट', - mm : '%d मिनेट', - h : 'एक घण्टा', - hh : '%d घण्टा', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महिना', - MM : '%d महिना', - y : 'एक बर्ष', - yy : '%d बर्ष' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : dutch (nl) - //! author : Joris Röling : https://github.com/jjupiter - - var nl__monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - nl__monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - - var nl = _moment__default.defineLocale('nl', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return nl__monthsShortWithoutDots[m.month()]; - } else { - return nl__monthsShortWithDots[m.month()]; - } - }, - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : norwegian nynorsk (nn) - //! author : https://github.com/mechuwind - - var nn = _moment__default.defineLocale('nn', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), - weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), - weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[I dag klokka] LT', - nextDay: '[I morgon klokka] LT', - nextWeek: 'dddd [klokka] LT', - lastDay: '[I går klokka] LT', - lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'for %s sidan', - s : 'nokre sekund', - m : 'eit minutt', - mm : '%d minutt', - h : 'ein time', - hh : '%d timar', - d : 'ein dag', - dd : '%d dagar', - M : 'ein månad', - MM : '%d månader', - y : 'eit år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : polish (pl) - //! author : Rafal Hirsz : https://github.com/evoL - - var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), - monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); - function pl__plural(n) { - return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); - } - function pl__translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (pl__plural(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (pl__plural(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (pl__plural(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (pl__plural(number) ? 'lata' : 'lat'); - } - } - - var pl = _moment__default.defineLocale('pl', { - months : function (momentToFormat, format) { - if (format === '') { - // Hack: if format empty we know this is used to generate - // RegExp by moment. Give then back both valid forms of months - // in RegExp ready format. - return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; - } else if (/D MMMM/.test(format)) { - return monthsSubjective[momentToFormat.month()]; - } else { - return monthsNominative[momentToFormat.month()]; - } - }, - monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), - weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), - weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'), - weekdaysMin : 'N_Pn_Wt_Śr_Cz_Pt_So'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Dziś o] LT', - nextDay: '[Jutro o] LT', - nextWeek: '[W] dddd [o] LT', - lastDay: '[Wczoraj o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : '%s temu', - s : 'kilka sekund', - m : pl__translate, - mm : pl__translate, - h : pl__translate, - hh : pl__translate, - d : '1 dzień', - dd : '%d dni', - M : 'miesiąc', - MM : pl__translate, - y : 'rok', - yy : pl__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : brazilian portuguese (pt-br) - //! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira - - var pt_br = _moment__default.defineLocale('pt-br', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : '%s atrás', - s : 'poucos segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - ordinalParse: /\d{1,2}º/, - ordinal : '%dº' - }); - - //! moment.js locale configuration - //! locale : portuguese (pt) - //! author : Jefferson : https://github.com/jalex79 - - var pt = _moment__default.defineLocale('pt', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - ordinalParse: /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : romanian (ro) - //! author : Vlad Gurdiga : https://github.com/gurdiga - //! author : Valentin Agachi : https://github.com/avaly - - function ro__relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'minute', - 'hh': 'ore', - 'dd': 'zile', - 'MM': 'luni', - 'yy': 'ani' - }, - separator = ' '; - if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { - separator = ' de '; - } - return number + separator + format[key]; - } - - var ro = _moment__default.defineLocale('ro', { - months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), - monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), - weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), - weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), - weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[azi la] LT', - nextDay: '[mâine la] LT', - nextWeek: 'dddd [la] LT', - lastDay: '[ieri la] LT', - lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'peste %s', - past : '%s în urmă', - s : 'câteva secunde', - m : 'un minut', - mm : ro__relativeTimeWithPlural, - h : 'o oră', - hh : ro__relativeTimeWithPlural, - d : 'o zi', - dd : ro__relativeTimeWithPlural, - M : 'o lună', - MM : ro__relativeTimeWithPlural, - y : 'un an', - yy : ro__relativeTimeWithPlural - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : russian (ru) - //! author : Viktorminator : https://github.com/Viktorminator - //! Author : Menelion Elensúle : https://github.com/Oire - - function ru__plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function ru__relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' - }; - if (key === 'm') { - return withoutSuffix ? 'минута' : 'минуту'; - } - else { - return number + ' ' + ru__plural(format[key], +number); - } - } - function ru__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function ru__monthsShortCaseReplace(m, format) { - var monthsShort = { - 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return monthsShort[nounCase][m.month()]; - } - function ru__weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') - }, - nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; - } - - var ru = _moment__default.defineLocale('ru', { - months : ru__monthsCaseReplace, - monthsShort : ru__monthsShortCaseReplace, - weekdays : ru__weekdaysCaseReplace, - weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., HH:mm', - LLLL : 'dddd, D MMMM YYYY г., HH:mm' - }, - calendar : { - sameDay: '[Сегодня в] LT', - nextDay: '[Завтра в] LT', - lastDay: '[Вчера в] LT', - nextWeek: function () { - return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; - }, - lastWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В прошлое] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd [в] LT'; - } else { - return '[В] dddd [в] LT'; - } - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'через %s', - past : '%s назад', - s : 'несколько секунд', - m : ru__relativeTimeWithPlural, - mm : ru__relativeTimeWithPlural, - h : 'час', - hh : ru__relativeTimeWithPlural, - d : 'день', - dd : ru__relativeTimeWithPlural, - M : 'месяц', - MM : ru__relativeTimeWithPlural, - y : 'год', - yy : ru__relativeTimeWithPlural - }, - meridiemParse: /ночи|утра|дня|вечера/i, - isPM : function (input) { - return /^(дня|вечера)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночи'; - } else if (hour < 12) { - return 'утра'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечера'; - } - }, - ordinalParse: /\d{1,2}-(й|го|я)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Sinhalese (si) - //! author : Sampath Sitinamaluwa : https://github.com/sampathsris - - var si = _moment__default.defineLocale('si', { - months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), - monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), - weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), - weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'), - weekdaysMin : 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'), - longDateFormat : { - LT : 'a h:mm', - LTS : 'a h:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY MMMM D', - LLL : 'YYYY MMMM D, a h:mm', - LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' - }, - calendar : { - sameDay : '[අද] LT[ට]', - nextDay : '[හෙට] LT[ට]', - nextWeek : 'dddd LT[ට]', - lastDay : '[ඊයේ] LT[ට]', - lastWeek : '[පසුගිය] dddd LT[ට]', - sameElse : 'L' - }, - relativeTime : { - future : '%sකින්', - past : '%sකට පෙර', - s : 'තත්පර කිහිපය', - m : 'මිනිත්තුව', - mm : 'මිනිත්තු %d', - h : 'පැය', - hh : 'පැය %d', - d : 'දිනය', - dd : 'දින %d', - M : 'මාසය', - MM : 'මාස %d', - y : 'වසර', - yy : 'වසර %d' - }, - ordinalParse: /\d{1,2} වැනි/, - ordinal : function (number) { - return number + ' වැනි'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'ප.ව.' : 'පස් වරු'; - } else { - return isLower ? 'පෙ.ව.' : 'පෙර වරු'; - } - } - }); - - //! moment.js locale configuration - //! locale : slovak (sk) - //! author : Martin Minka : https://github.com/k2s - //! based on work of petrbela : https://github.com/petrbela - - var sk__months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), - sk__monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); - function sk__plural(n) { - return (n > 1) && (n < 5); - } - function sk__translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (sk__plural(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (sk__plural(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (sk__plural(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (sk__plural(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (sk__plural(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } - break; - } - } - - var sk = _moment__default.defineLocale('sk', { - months : sk__months, - monthsShort : sk__monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(sk__months, sk__monthsShort)), - weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), - weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), - weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[dnes o] LT', - nextDay: '[zajtra o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo štvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; - } - }, - lastDay: '[včera o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pred %s', - s : sk__translate, - m : sk__translate, - mm : sk__translate, - h : sk__translate, - hh : sk__translate, - d : sk__translate, - dd : sk__translate, - M : sk__translate, - MM : sk__translate, - y : sk__translate, - yy : sk__translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : slovenian (sl) - //! author : Robert Sedovšek : https://github.com/sedovsek - - function sl__processRelativeTime(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += withoutSuffix ? 'minuta' : 'minuto'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'minute' : 'minutami'; - } else { - result += withoutSuffix || isFuture ? 'minut' : 'minutami'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += withoutSuffix ? 'ura' : 'uro'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'uri' : 'urama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'ure' : 'urami'; - } else { - result += withoutSuffix || isFuture ? 'ur' : 'urami'; - } - return result; - case 'd': - return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; - case 'dd': - if (number === 1) { - result += withoutSuffix || isFuture ? 'dan' : 'dnem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; - } else { - result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; - } - return result; - case 'M': - return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; - case 'MM': - if (number === 1) { - result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; - } else { - result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; - } - return result; - case 'y': - return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; - case 'yy': - if (number === 1) { - result += withoutSuffix || isFuture ? 'leto' : 'letom'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'leti' : 'letoma'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'leta' : 'leti'; - } else { - result += withoutSuffix || isFuture ? 'let' : 'leti'; - } - return result; - } - } - - var sl = _moment__default.defineLocale('sl', { - months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), - weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), - weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), - weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', - - nextWeek : function () { - switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - return '[prejšnjo] [nedeljo] [ob] LT'; - case 3: - return '[prejšnjo] [sredo] [ob] LT'; - case 6: - return '[prejšnjo] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'čez %s', - past : 'pred %s', - s : sl__processRelativeTime, - m : sl__processRelativeTime, - mm : sl__processRelativeTime, - h : sl__processRelativeTime, - hh : sl__processRelativeTime, - d : sl__processRelativeTime, - dd : sl__processRelativeTime, - M : sl__processRelativeTime, - MM : sl__processRelativeTime, - y : sl__processRelativeTime, - yy : sl__processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Albanian (sq) - //! author : Flakërim Ismani : https://github.com/flakerimi - //! author: Menelion Elensúle: https://github.com/Oire (tests) - //! author : Oerd Cukalla : https://github.com/oerd (fixes) - - var sq = _moment__default.defineLocale('sq', { - months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), - monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), - weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), - weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), - weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), - meridiemParse: /PD|MD/, - isPM: function (input) { - return input.charAt(0) === 'M'; - }, - meridiem : function (hours, minutes, isLower) { - return hours < 12 ? 'PD' : 'MD'; - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Sot në] LT', - nextDay : '[Nesër në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'në %s', - past : '%s më parë', - s : 'disa sekonda', - m : 'një minutë', - mm : '%d minuta', - h : 'një orë', - hh : '%d orë', - d : 'një ditë', - dd : '%d ditë', - M : 'një muaj', - MM : '%d muaj', - y : 'një vit', - yy : '%d vite' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Serbian-cyrillic (sr-cyrl) - //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j - - var sr_cyrl__translator = { - words: { //Different grammatical cases - m: ['један минут', 'једне минуте'], - mm: ['минут', 'минуте', 'минута'], - h: ['један сат', 'једног сата'], - hh: ['сат', 'сата', 'сати'], - dd: ['дан', 'дана', 'дана'], - MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = sr_cyrl__translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + sr_cyrl__translator.correctGrammaticalCase(number, wordKey); - } - } - }; - - var sr_cyrl = _moment__default.defineLocale('sr-cyrl', { - months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'], - monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'], - weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'], - weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[данас у] LT', - nextDay: '[сутра у] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; - } - }, - lastDay : '[јуче у] LT', - lastWeek : function () { - var lastWeekDays = [ - '[прошле] [недеље] [у] LT', - '[прошлог] [понедељка] [у] LT', - '[прошлог] [уторка] [у] LT', - '[прошле] [среде] [у] LT', - '[прошлог] [четвртка] [у] LT', - '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'за %s', - past : 'пре %s', - s : 'неколико секунди', - m : sr_cyrl__translator.translate, - mm : sr_cyrl__translator.translate, - h : sr_cyrl__translator.translate, - hh : sr_cyrl__translator.translate, - d : 'дан', - dd : sr_cyrl__translator.translate, - M : 'месец', - MM : sr_cyrl__translator.translate, - y : 'годину', - yy : sr_cyrl__translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Serbian-latin (sr) - //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j - - var sr__translator = { - words: { //Different grammatical cases - m: ['jedan minut', 'jedne minute'], - mm: ['minut', 'minute', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = sr__translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + sr__translator.correctGrammaticalCase(number, wordKey); - } - } - }; - - var sr = _moment__default.defineLocale('sr', { - months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], - monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], - weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedelje] [u] LT', - '[prošlog] [ponedeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pre %s', - s : 'nekoliko sekundi', - m : sr__translator.translate, - mm : sr__translator.translate, - h : sr__translator.translate, - hh : sr__translator.translate, - d : 'dan', - dd : sr__translator.translate, - M : 'mesec', - MM : sr__translator.translate, - y : 'godinu', - yy : sr__translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : swedish (sv) - //! author : Jens Alm : https://github.com/ulmus - - var sv = _moment__default.defineLocale('sv', { - months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), - weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), - weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Idag] LT', - nextDay: '[Imorgon] LT', - lastDay: '[Igår] LT', - nextWeek: '[På] dddd LT', - lastWeek: '[I] dddd[s] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'för %s sedan', - s : 'några sekunder', - m : 'en minut', - mm : '%d minuter', - h : 'en timme', - hh : '%d timmar', - d : 'en dag', - dd : '%d dagar', - M : 'en månad', - MM : '%d månader', - y : 'ett år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}(e|a)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : tamil (ta) - //! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 - - var ta = _moment__default.defineLocale('ta', { - months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), - weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), - weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, HH:mm', - LLLL : 'dddd, D MMMM YYYY, HH:mm' - }, - calendar : { - sameDay : '[இன்று] LT', - nextDay : '[நாளை] LT', - nextWeek : 'dddd, LT', - lastDay : '[நேற்று] LT', - lastWeek : '[கடந்த வாரம்] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s இல்', - past : '%s முன்', - s : 'ஒரு சில விநாடிகள்', - m : 'ஒரு நிமிடம்', - mm : '%d நிமிடங்கள்', - h : 'ஒரு மணி நேரம்', - hh : '%d மணி நேரம்', - d : 'ஒரு நாள்', - dd : '%d நாட்கள்', - M : 'ஒரு மாதம்', - MM : '%d மாதங்கள்', - y : 'ஒரு வருடம்', - yy : '%d ஆண்டுகள்' - }, - ordinalParse: /\d{1,2}வது/, - ordinal : function (number) { - return number + 'வது'; - }, - // refer http://ta.wikipedia.org/s/1er1 - meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, - meridiem : function (hour, minute, isLower) { - if (hour < 2) { - return ' யாமம்'; - } else if (hour < 6) { - return ' வைகறை'; // வைகறை - } else if (hour < 10) { - return ' காலை'; // காலை - } else if (hour < 14) { - return ' நண்பகல்'; // நண்பகல் - } else if (hour < 18) { - return ' எற்பாடு'; // எற்பாடு - } else if (hour < 22) { - return ' மாலை'; // மாலை - } else { - return ' யாமம்'; - } - }, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'யாமம்') { - return hour < 2 ? hour : hour + 12; - } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { - return hour; - } else if (meridiem === 'நண்பகல்') { - return hour >= 10 ? hour : hour + 12; - } else { - return hour + 12; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : thai (th) - //! author : Kridsada Thanabulpong : https://github.com/sirn - - var th = _moment__default.defineLocale('th', { - months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), - monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'), - weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), - weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference - weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), - longDateFormat : { - LT : 'H นาฬิกา m นาที', - LTS : 'H นาฬิกา m นาที s วินาที', - L : 'YYYY/MM/DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY เวลา H นาฬิกา m นาที', - LLLL : 'วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที' - }, - meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, - isPM: function (input) { - return input === 'หลังเที่ยง'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ก่อนเที่ยง'; - } else { - return 'หลังเที่ยง'; - } - }, - calendar : { - sameDay : '[วันนี้ เวลา] LT', - nextDay : '[พรุ่งนี้ เวลา] LT', - nextWeek : 'dddd[หน้า เวลา] LT', - lastDay : '[เมื่อวานนี้ เวลา] LT', - lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'อีก %s', - past : '%sที่แล้ว', - s : 'ไม่กี่วินาที', - m : '1 นาที', - mm : '%d นาที', - h : '1 ชั่วโมง', - hh : '%d ชั่วโมง', - d : '1 วัน', - dd : '%d วัน', - M : '1 เดือน', - MM : '%d เดือน', - y : '1 ปี', - yy : '%d ปี' - } - }); - - //! moment.js locale configuration - //! locale : Tagalog/Filipino (tl-ph) - //! author : Dan Hagman - - var tl_ph = _moment__default.defineLocale('tl-ph', { - months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), - monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), - weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'MM/D/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY HH:mm', - LLLL : 'dddd, MMMM DD, YYYY HH:mm' - }, - calendar : { - sameDay: '[Ngayon sa] LT', - nextDay: '[Bukas sa] LT', - nextWeek: 'dddd [sa] LT', - lastDay: '[Kahapon sa] LT', - lastWeek: 'dddd [huling linggo] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'sa loob ng %s', - past : '%s ang nakalipas', - s : 'ilang segundo', - m : 'isang minuto', - mm : '%d minuto', - h : 'isang oras', - hh : '%d oras', - d : 'isang araw', - dd : '%d araw', - M : 'isang buwan', - MM : '%d buwan', - y : 'isang taon', - yy : '%d taon' - }, - ordinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : turkish (tr) - //! authors : Erhan Gundogan : https://github.com/erhangundogan, - //! Burak Yiğit Kaya: https://github.com/BYK - - var tr__suffixes = { - 1: '\'inci', - 5: '\'inci', - 8: '\'inci', - 70: '\'inci', - 80: '\'inci', - 2: '\'nci', - 7: '\'nci', - 20: '\'nci', - 50: '\'nci', - 3: '\'üncü', - 4: '\'üncü', - 100: '\'üncü', - 6: '\'ncı', - 9: '\'uncu', - 10: '\'uncu', - 30: '\'uncu', - 60: '\'ıncı', - 90: '\'ıncı' - }; - - var tr = _moment__default.defineLocale('tr', { - months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), - monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), - weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), - weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), - weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[haftaya] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen hafta] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s önce', - s : 'birkaç saniye', - m : 'bir dakika', - mm : '%d dakika', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir yıl', - yy : '%d yıl' - }, - ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + '\'ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (tr__suffixes[a] || tr__suffixes[b] || tr__suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : talossan (tzl) - //! author : Robin van der Vliet : https://github.com/robin0van0der0v with the help of Iustì Canun - - - var tzl = _moment__default.defineLocale('tzl', { - months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), - monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), - weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), - weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), - weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'LT.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM [dallas] YYYY', - LLL : 'D. MMMM [dallas] YYYY LT', - LLLL : 'dddd, [li] D. MMMM [dallas] YYYY LT' - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'd\'o' : 'D\'O'; - } else { - return isLower ? 'd\'a' : 'D\'A'; - } - }, - calendar : { - sameDay : '[oxhi à] LT', - nextDay : '[demà à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[ieiri à] LT', - lastWeek : '[sür el] dddd [lasteu à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'osprei %s', - past : 'ja%s', - s : tzl__processRelativeTime, - m : tzl__processRelativeTime, - mm : tzl__processRelativeTime, - h : tzl__processRelativeTime, - hh : tzl__processRelativeTime, - d : tzl__processRelativeTime, - dd : tzl__processRelativeTime, - M : tzl__processRelativeTime, - MM : tzl__processRelativeTime, - y : tzl__processRelativeTime, - yy : tzl__processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - function tzl__processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's': ['viensas secunds', '\'iensas secunds'], - 'm': ['\'n míut', '\'iens míut'], - 'mm': [number + ' míuts', ' ' + number + ' míuts'], - 'h': ['\'n þora', '\'iensa þora'], - 'hh': [number + ' þoras', ' ' + number + ' þoras'], - 'd': ['\'n ziua', '\'iensa ziua'], - 'dd': [number + ' ziuas', ' ' + number + ' ziuas'], - 'M': ['\'n mes', '\'iens mes'], - 'MM': [number + ' mesen', ' ' + number + ' mesen'], - 'y': ['\'n ar', '\'iens ar'], - 'yy': [number + ' ars', ' ' + number + ' ars'] - }; - return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1].trim()); - } - - //! moment.js locale configuration - //! locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn) - //! author : Abdel Said : https://github.com/abdelsaid - - var tzm_latn = _moment__default.defineLocale('tzm-latn', { - months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[asdkh g] LT', - nextDay: '[aska g] LT', - nextWeek: 'dddd [g] LT', - lastDay: '[assant g] LT', - lastWeek: 'dddd [g] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dadkh s yan %s', - past : 'yan %s', - s : 'imik', - m : 'minuḍ', - mm : '%d minuḍ', - h : 'saɛa', - hh : '%d tassaɛin', - d : 'ass', - dd : '%d ossan', - M : 'ayowr', - MM : '%d iyyirn', - y : 'asgas', - yy : '%d isgasn' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : Morocco Central Atlas Tamaziɣt (tzm) - //! author : Abdel Said : https://github.com/abdelsaid - - var tzm = _moment__default.defineLocale('tzm', { - months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', - nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', - nextWeek: 'dddd [ⴴ] LT', - lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', - lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', - past : 'ⵢⴰⵏ %s', - s : 'ⵉⵎⵉⴽ', - m : 'ⵎⵉⵏⵓⴺ', - mm : '%d ⵎⵉⵏⵓⴺ', - h : 'ⵙⴰⵄⴰ', - hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', - d : 'ⴰⵙⵙ', - dd : '%d oⵙⵙⴰⵏ', - M : 'ⴰⵢoⵓⵔ', - MM : '%d ⵉⵢⵢⵉⵔⵏ', - y : 'ⴰⵙⴳⴰⵙ', - yy : '%d ⵉⵙⴳⴰⵙⵏ' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : ukrainian (uk) - //! author : zemlanin : https://github.com/zemlanin - //! Author : Menelion Elensúle : https://github.com/Oire - - function uk__plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function uk__relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'хвилина_хвилини_хвилин', - 'hh': 'година_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' - }; - if (key === 'm') { - return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { - return withoutSuffix ? 'година' : 'годину'; - } - else { - return number + ' ' + uk__plural(format[key], +number); - } - } - function uk__monthsCaseReplace(m, format) { - var months = { - 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), - 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') - }, - nounCase = (/D[oD]? *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; - } - function uk__weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }, - nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); - return weekdays[nounCase][m.day()]; - } - function processHoursFunction(str) { - return function () { - return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; - }; - } - - var uk = _moment__default.defineLocale('uk', { - months : uk__monthsCaseReplace, - monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), - weekdays : uk__weekdaysCaseReplace, - weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY р.', - LLL : 'D MMMM YYYY р., HH:mm', - LLLL : 'dddd, D MMMM YYYY р., HH:mm' - }, - calendar : { - sameDay: processHoursFunction('[Сьогодні '), - nextDay: processHoursFunction('[Завтра '), - lastDay: processHoursFunction('[Вчора '), - nextWeek: processHoursFunction('[У] dddd ['), - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'за %s', - past : '%s тому', - s : 'декілька секунд', - m : uk__relativeTimeWithPlural, - mm : uk__relativeTimeWithPlural, - h : 'годину', - hh : uk__relativeTimeWithPlural, - d : 'день', - dd : uk__relativeTimeWithPlural, - M : 'місяць', - MM : uk__relativeTimeWithPlural, - y : 'рік', - yy : uk__relativeTimeWithPlural - }, - // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason - meridiemParse: /ночі|ранку|дня|вечора/, - isPM: function (input) { - return /^(дня|вечора)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночі'; - } else if (hour < 12) { - return 'ранку'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечора'; - } - }, - ordinalParse: /\d{1,2}-(й|го)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : uzbek (uz) - //! author : Sardor Muminov : https://github.com/muminoff - - var uz = _moment__default.defineLocale('uz', { - months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), - weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), - weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - calendar : { - sameDay : '[Бугун соат] LT [да]', - nextDay : '[Эртага] LT [да]', - nextWeek : 'dddd [куни соат] LT [да]', - lastDay : '[Кеча соат] LT [да]', - lastWeek : '[Утган] dddd [куни соат] LT [да]', - sameElse : 'L' - }, - relativeTime : { - future : 'Якин %s ичида', - past : 'Бир неча %s олдин', - s : 'фурсат', - m : 'бир дакика', - mm : '%d дакика', - h : 'бир соат', - hh : '%d соат', - d : 'бир кун', - dd : '%d кун', - M : 'бир ой', - MM : '%d ой', - y : 'бир йил', - yy : '%d йил' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : vietnamese (vi) - //! author : Bang Nguyen : https://github.com/bangnk - - var vi = _moment__default.defineLocale('vi', { - months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), - monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), - weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), - weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [năm] YYYY', - LLL : 'D MMMM [năm] YYYY HH:mm', - LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', - l : 'DD/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Hôm nay lúc] LT', - nextDay: '[Ngày mai lúc] LT', - nextWeek: 'dddd [tuần tới lúc] LT', - lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần rồi lúc] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s tới', - past : '%s trước', - s : 'vài giây', - m : 'một phút', - mm : '%d phút', - h : 'một giờ', - hh : '%d giờ', - d : 'một ngày', - dd : '%d ngày', - M : 'một tháng', - MM : '%d tháng', - y : 'một năm', - yy : '%d năm' - }, - ordinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : chinese (zh-cn) - //! author : suupic : https://github.com/suupic - //! author : Zeno Zeng : https://github.com/zenozeng - - var zh_cn = _moment__default.defineLocale('zh-cn', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'Ah点mm分', - LTS : 'Ah点m分s秒', - L : 'YYYY-MM-DD', - LL : 'YYYY年MMMD日', - LLL : 'YYYY年MMMD日Ah点mm分', - LLLL : 'YYYY年MMMD日ddddAh点mm分', - l : 'YYYY-MM-DD', - ll : 'YYYY年MMMD日', - lll : 'YYYY年MMMD日Ah点mm分', - llll : 'YYYY年MMMD日ddddAh点mm分' - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || - meridiem === '上午') { - return hour; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } else { - // '中午' - return hour >= 11 ? hour : hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : function () { - return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT'; - }, - nextDay : function () { - return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT'; - }, - lastDay : function () { - return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT'; - }, - nextWeek : function () { - var startOfWeek, prefix; - startOfWeek = _moment__default().startOf('week'); - prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; - return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; - }, - lastWeek : function () { - var startOfWeek, prefix; - startOfWeek = _moment__default().startOf('week'); - prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; - return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; - }, - sameElse : 'LL' - }, - ordinalParse: /\d{1,2}(日|月|周)/, - ordinal : function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '周'; - default: - return number; - } - }, - relativeTime : { - future : '%s内', - past : '%s前', - s : '几秒', - m : '1 分钟', - mm : '%d 分钟', - h : '1 小时', - hh : '%d 小时', - d : '1 天', - dd : '%d 天', - M : '1 个月', - MM : '%d 个月', - y : '1 年', - yy : '%d 年' - }, - week : { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - //! locale : traditional chinese (zh-tw) - //! author : Ben : https://github.com/ben-lin - - var zh_tw = _moment__default.defineLocale('zh-tw', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'Ah點mm分', - LTS : 'Ah點m分s秒', - L : 'YYYY年MMMD日', - LL : 'YYYY年MMMD日', - LLL : 'YYYY年MMMD日Ah點mm分', - LLLL : 'YYYY年MMMD日ddddAh點mm分', - l : 'YYYY年MMMD日', - ll : 'YYYY年MMMD日', - lll : 'YYYY年MMMD日Ah點mm分', - llll : 'YYYY年MMMD日ddddAh點mm分' - }, - meridiemParse: /早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - ordinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { - switch (period) { - case 'd' : - case 'D' : - case 'DDD' : - return number + '日'; - case 'M' : - return number + '月'; - case 'w' : - case 'W' : - return number + '週'; - default : - return number; - } - }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - m : '一分鐘', - mm : '%d分鐘', - h : '一小時', - hh : '%d小時', - d : '一天', - dd : '%d天', - M : '一個月', - MM : '%d個月', - y : '一年', - yy : '%d年' - } - }); - - var moment_with_locales = _moment__default; - moment_with_locales.locale('en'); - - return moment_with_locales; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/min/moment-with-locales.min.js b/elgg_clean/bower_components/moment/min/moment-with-locales.min.js deleted file mode 100644 index 90eb91b3..00000000 --- a/elgg_clean/bower_components/moment/min/moment-with-locales.min.js +++ /dev/null @@ -1,80 +0,0 @@ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return Md.apply(null,arguments)}function b(a){Md=a}function c(a){return"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function f(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function g(a,b){for(var c in b)f(b,c)&&(a[c]=b[c]);return f(b,"toString")&&(a.toString=b.toString),f(b,"valueOf")&&(a.valueOf=b.valueOf),a}function h(a,b,c,d){return Ca(a,b,c,d,!0).utc()}function i(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function j(a){return null==a._pf&&(a._pf=i()),a._pf}function k(a){if(null==a._isValid){var b=j(a);a._isValid=!(isNaN(a._d.getTime())||!(b.overflow<0)||b.empty||b.invalidMonth||b.invalidWeekday||b.nullInput||b.invalidFormat||b.userInvalidated),a._strict&&(a._isValid=a._isValid&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour)}return a._isValid}function l(a){var b=h(NaN);return null!=a?g(j(b),a):j(b).userInvalidated=!0,b}function m(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=j(b)),"undefined"!=typeof b._locale&&(a._locale=b._locale),Od.length>0)for(c in Od)d=Od[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(b){m(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),Pd===!1&&(Pd=!0,a.updateOffset(this),Pd=!1)}function o(a){return a instanceof n||null!=a&&null!=a._isAMomentObject}function p(a){return 0>a?Math.ceil(a):Math.floor(a)}function q(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=p(b)),c}function r(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&q(a[d])!==q(b[d]))&&g++;return g+f}function s(){}function t(a){return a?a.toLowerCase().replace("_","-"):a}function u(a){for(var b,c,d,e,f=0;f<a.length;){for(e=t(a[f]).split("-"),b=e.length,c=t(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=v(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&r(e,c,!0)>=b-1)break;b--}f++}return null}function v(a){var b=null;if(!Qd[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Nd._abbr,require("./locale/"+a),w(b)}catch(c){}return Qd[a]}function w(a,b){var c;return a&&(c="undefined"==typeof b?y(a):x(a,b),c&&(Nd=c)),Nd._abbr}function x(a,b){return null!==b?(b.abbr=a,Qd[a]=Qd[a]||new s,Qd[a].set(b),w(a),Qd[a]):(delete Qd[a],null)}function y(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Nd;if(!c(a)){if(b=v(a))return b;a=[a]}return u(a)}function z(a,b){var c=a.toLowerCase();Rd[c]=Rd[c+"s"]=Rd[b]=a}function A(a){return"string"==typeof a?Rd[a]||Rd[a.toLowerCase()]:void 0}function B(a){var b,c,d={};for(c in a)f(a,c)&&(b=A(c),b&&(d[b]=a[c]));return d}function C(b,c){return function(d){return null!=d?(E(this,b,d),a.updateOffset(this,c),this):D(this,b)}}function D(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function E(a,b,c){return a._d["set"+(a._isUTC?"UTC":"")+b](c)}function F(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=A(a),"function"==typeof this[a])return this[a](b);return this}function G(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function H(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Vd[a]=e),b&&(Vd[b[0]]=function(){return G(e.apply(this,arguments),b[1],b[2])}),c&&(Vd[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function I(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function J(a){var b,c,d=a.match(Sd);for(b=0,c=d.length;c>b;b++)Vd[d[b]]?d[b]=Vd[d[b]]:d[b]=I(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function K(a,b){return a.isValid()?(b=L(b,a.localeData()),Ud[b]=Ud[b]||J(b),Ud[b](a)):a.localeData().invalidDate()}function L(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Td.lastIndex=0;d>=0&&Td.test(a);)a=a.replace(Td,c),Td.lastIndex=0,d-=1;return a}function M(a){return"function"==typeof a&&"[object Function]"===Object.prototype.toString.call(a)}function N(a,b,c){ie[a]=M(b)?b:function(a){return a&&c?c:b}}function O(a,b){return f(ie,a)?ie[a](b._strict,b._locale):new RegExp(P(a))}function P(a){return a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Q(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=q(a)}),c=0;c<a.length;c++)je[a[c]]=d}function R(a,b){Q(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function S(a,b,c){null!=b&&f(je,a)&&je[a](b,c._a,c,a)}function T(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function U(a){return this._months[a.month()]}function V(a){return this._monthsShort[a.month()]}function W(a,b,c){var d,e,f;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function X(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),T(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function Y(b){return null!=b?(X(this,b),a.updateOffset(this,!0),this):D(this,"Month")}function Z(){return T(this.year(),this.month())}function $(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[le]<0||c[le]>11?le:c[me]<1||c[me]>T(c[ke],c[le])?me:c[ne]<0||c[ne]>24||24===c[ne]&&(0!==c[oe]||0!==c[pe]||0!==c[qe])?ne:c[oe]<0||c[oe]>59?oe:c[pe]<0||c[pe]>59?pe:c[qe]<0||c[qe]>999?qe:-1,j(a)._overflowDayOfYear&&(ke>b||b>me)&&(b=me),j(a).overflow=b),a}function _(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function aa(a,b){var c=!0;return g(function(){return c&&(_(a+"\n"+(new Error).stack),c=!1),b.apply(this,arguments)},b)}function ba(a,b){te[a]||(_(b),te[a]=!0)}function ca(a){var b,c,d=a._i,e=ue.exec(d);if(e){for(j(a).iso=!0,b=0,c=ve.length;c>b;b++)if(ve[b][1].exec(d)){a._f=ve[b][0];break}for(b=0,c=we.length;c>b;b++)if(we[b][1].exec(d)){a._f+=(e[6]||" ")+we[b][0];break}d.match(fe)&&(a._f+="Z"),va(a)}else a._isValid=!1}function da(b){var c=xe.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(ca(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function ea(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function fa(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function ga(a){return ha(a)?366:365}function ha(a){return a%4===0&&a%100!==0||a%400===0}function ia(){return ha(this.year())}function ja(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=Da(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ka(a){return ja(a,this._week.dow,this._week.doy).week}function la(){return this._week.dow}function ma(){return this._week.doy}function na(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function oa(a){var b=ja(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function pa(a,b,c,d,e){var f,g=6+e-d,h=fa(a,0,1+g),i=h.getUTCDay();return e>i&&(i+=7),c=null!=c?1*c:e,f=1+g+7*(b-1)-i+c,{year:f>0?a:a-1,dayOfYear:f>0?f:ga(a-1)+f}}function qa(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function ra(a,b,c){return null!=a?a:null!=b?b:c}function sa(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function ta(a){var b,c,d,e,f=[];if(!a._d){for(d=sa(a),a._w&&null==a._a[me]&&null==a._a[le]&&ua(a),a._dayOfYear&&(e=ra(a._a[ke],d[ke]),a._dayOfYear>ga(e)&&(j(a)._overflowDayOfYear=!0),c=fa(e,0,a._dayOfYear),a._a[le]=c.getUTCMonth(),a._a[me]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[ne]&&0===a._a[oe]&&0===a._a[pe]&&0===a._a[qe]&&(a._nextDay=!0,a._a[ne]=0),a._d=(a._useUTC?fa:ea).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[ne]=24)}}function ua(a){var b,c,d,e,f,g,h;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=ra(b.GG,a._a[ke],ja(Da(),1,4).year),d=ra(b.W,1),e=ra(b.E,1)):(f=a._locale._week.dow,g=a._locale._week.doy,c=ra(b.gg,a._a[ke],ja(Da(),f,g).year),d=ra(b.w,1),null!=b.d?(e=b.d,f>e&&++d):e=null!=b.e?b.e+f:f),h=pa(c,d,e,g,f),a._a[ke]=h.year,a._dayOfYear=h.dayOfYear}function va(b){if(b._f===a.ISO_8601)return void ca(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=L(b._f,b._locale).match(Sd)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(O(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),Vd[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),S(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[ne]<=12&&b._a[ne]>0&&(j(b).bigHour=void 0),b._a[ne]=wa(b._locale,b._a[ne],b._meridiem),ta(b),$(b)}function wa(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function xa(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=m({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],va(b),k(b)&&(f+=j(b).charsLeftOver,f+=10*j(b).unusedTokens.length,j(b).score=f,(null==d||d>f)&&(d=f,c=b));g(a,c||b)}function ya(a){if(!a._d){var b=B(a._i);a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],ta(a)}}function za(a){var b=new n($(Aa(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function Aa(a){var b=a._i,e=a._f;return a._locale=a._locale||y(a._l),null===b||void 0===e&&""===b?l({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),o(b)?new n($(b)):(c(e)?xa(a):e?va(a):d(b)?a._d=b:Ba(a),a))}function Ba(b){var f=b._i;void 0===f?b._d=new Date:d(f)?b._d=new Date(+f):"string"==typeof f?da(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),ta(b)):"object"==typeof f?ya(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Ca(a,b,c,d,e){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,za(f)}function Da(a,b,c,d){return Ca(a,b,c,d,!1)}function Ea(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Da();for(d=b[0],e=1;e<b.length;++e)(!b[e].isValid()||b[e][a](d))&&(d=b[e]);return d}function Fa(){var a=[].slice.call(arguments,0);return Ea("isBefore",a)}function Ga(){var a=[].slice.call(arguments,0);return Ea("isAfter",a)}function Ha(a){var b=B(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=y(),this._bubble()}function Ia(a){return a instanceof Ha}function Ja(a,b){H(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+G(~~(a/60),2)+b+G(~~a%60,2)})}function Ka(a){var b=(a||"").match(fe)||[],c=b[b.length-1]||[],d=(c+"").match(Ce)||["-",0,0],e=+(60*d[1])+q(d[2]);return"+"===d[0]?e:-e}function La(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(o(b)||d(b)?+b:+Da(b))-+e,e._d.setTime(+e._d+f),a.updateOffset(e,!1),e):Da(b).local()}function Ma(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Na(b,c){var d,e=this._offset||0;return null!=b?("string"==typeof b&&(b=Ka(b)),Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ma(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?bb(this,Ya(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ma(this)}function Oa(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Pa(a){return this.utcOffset(0,a)}function Qa(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ma(this),"m")),this}function Ra(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ka(this._i)),this}function Sa(a){return a=a?Da(a).utcOffset():0,(this.utcOffset()-a)%60===0}function Ta(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ua(){if("undefined"!=typeof this._isDSTShifted)return this._isDSTShifted;var a={};if(m(a,this),a=Aa(a),a._a){var b=a._isUTC?h(a._a):Da(a._a);this._isDSTShifted=this.isValid()&&r(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Va(){return!this._isUTC}function Wa(){return this._isUTC}function Xa(){return this._isUTC&&0===this._offset}function Ya(a,b){var c,d,e,g=a,h=null;return Ia(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=De.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:q(h[me])*c,h:q(h[ne])*c,m:q(h[oe])*c,s:q(h[pe])*c,ms:q(h[qe])*c}):(h=Ee.exec(a))?(c="-"===h[1]?-1:1,g={y:Za(h[2],c),M:Za(h[3],c),d:Za(h[4],c),h:Za(h[5],c),m:Za(h[6],c),s:Za(h[7],c),w:Za(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=_a(Da(g.from),Da(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Ha(g),Ia(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function Za(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function $a(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function _a(a,b){var c;return b=La(b,a),a.isBefore(b)?c=$a(a,b):(c=$a(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function ab(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(ba(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Ya(c,d),bb(this,e,a),this}}function bb(b,c,d,e){var f=c._milliseconds,g=c._days,h=c._months;e=null==e?!0:e,f&&b._d.setTime(+b._d+f*d),g&&E(b,"Date",D(b,"Date")+g*d),h&&X(b,D(b,"Month")+h*d),e&&a.updateOffset(b,g||h)}function cb(a,b){var c=a||Da(),d=La(c,this).startOf("day"),e=this.diff(d,"days",!0),f=-6>e?"sameElse":-1>e?"lastWeek":0>e?"lastDay":1>e?"sameDay":2>e?"nextDay":7>e?"nextWeek":"sameElse";return this.format(b&&b[f]||this.localeData().calendar(f,this,Da(c)))}function db(){return new n(this)}function eb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+this>+a):(c=o(a)?+a:+Da(a),c<+this.clone().startOf(b))}function fb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+a>+this):(c=o(a)?+a:+Da(a),+this.clone().endOf(b)<c)}function gb(a,b,c){return this.isAfter(a,c)&&this.isBefore(b,c)}function hb(a,b){var c;return b=A(b||"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+this===+a):(c=+Da(a),+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))}function ib(a,b,c){var d,e,f=La(a,this),g=6e4*(f.utcOffset()-this.utcOffset());return b=A(b),"year"===b||"month"===b||"quarter"===b?(e=jb(this,f),"quarter"===b?e/=3:"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:p(e)}function jb(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return 0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)}function kb(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function lb(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?"function"==typeof Date.prototype.toISOString?this.toDate().toISOString():K(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):K(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function mb(b){var c=K(this,b||a.defaultFormat);return this.localeData().postformat(c)}function nb(a,b){return this.isValid()?Ya({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function ob(a){return this.from(Da(),a)}function pb(a,b){return this.isValid()?Ya({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function qb(a){return this.to(Da(),a)}function rb(a){var b;return void 0===a?this._locale._abbr:(b=y(a),null!=b&&(this._locale=b),this)}function sb(){return this._locale}function tb(a){switch(a=A(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function ub(a){return a=A(a),void 0===a||"millisecond"===a?this:this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms")}function vb(){return+this._d-6e4*(this._offset||0)}function wb(){return Math.floor(+this/1e3)}function xb(){return this._offset?new Date(+this):this._d}function yb(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function zb(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function Ab(){return k(this)}function Bb(){return g({},j(this))}function Cb(){return j(this).overflow}function Db(a,b){H(0,[a,a.length],0,b)}function Eb(a,b,c){return ja(Da([a,11,31+b-c]),b,c).week}function Fb(a){var b=ja(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")}function Gb(a){var b=ja(this,1,4).year;return null==a?b:this.add(a-b,"y")}function Hb(){return Eb(this.year(),1,4)}function Ib(){var a=this.localeData()._week;return Eb(this.year(),a.dow,a.doy)}function Jb(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Kb(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Lb(a){return this._weekdays[a.day()]}function Mb(a){return this._weekdaysShort[a.day()]}function Nb(a){return this._weekdaysMin[a.day()]}function Ob(a){var b,c,d;for(this._weekdaysParse=this._weekdaysParse||[],b=0;7>b;b++)if(this._weekdaysParse[b]||(c=Da([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b}function Pb(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Kb(a,this.localeData()),this.add(a-b,"d")):b}function Qb(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Rb(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)}function Sb(a,b){H(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Tb(a,b){return b._meridiemParse}function Ub(a){return"p"===(a+"").toLowerCase().charAt(0)}function Vb(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Wb(a,b){b[qe]=q(1e3*("0."+a))}function Xb(){return this._isUTC?"UTC":""}function Yb(){return this._isUTC?"Coordinated Universal Time":""}function Zb(a){return Da(1e3*a)}function $b(){return Da.apply(null,arguments).parseZone()}function _b(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.call(b,c):d}function ac(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function bc(){return this._invalidDate}function cc(a){return this._ordinal.replace("%d",a)}function dc(a){return a}function ec(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)}function fc(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)}function gc(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function hc(a,b,c,d){var e=y(),f=h().set(d,b);return e[c](f,a)}function ic(a,b,c,d,e){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return hc(a,b,c,e);var f,g=[];for(f=0;d>f;f++)g[f]=hc(a,f,c,e);return g}function jc(a,b){return ic(a,b,"months",12,"month")}function kc(a,b){return ic(a,b,"monthsShort",12,"month")}function lc(a,b){return ic(a,b,"weekdays",7,"day")}function mc(a,b){return ic(a,b,"weekdaysShort",7,"day")}function nc(a,b){return ic(a,b,"weekdaysMin",7,"day")}function oc(){var a=this._data;return this._milliseconds=_e(this._milliseconds),this._days=_e(this._days),this._months=_e(this._months),a.milliseconds=_e(a.milliseconds),a.seconds=_e(a.seconds),a.minutes=_e(a.minutes),a.hours=_e(a.hours),a.months=_e(a.months),a.years=_e(a.years),this}function pc(a,b,c,d){var e=Ya(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function qc(a,b){return pc(this,a,b,1)}function rc(a,b){return pc(this,a,b,-1)}function sc(a){return 0>a?Math.floor(a):Math.ceil(a)}function tc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*sc(vc(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=p(f/1e3),i.seconds=a%60,b=p(a/60),i.minutes=b%60,c=p(b/60),i.hours=c%24,g+=p(c/24),e=p(uc(g)),h+=e,g-=sc(vc(e)),d=p(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function uc(a){return 4800*a/146097}function vc(a){return 146097*a/4800}function wc(a){var b,c,d=this._milliseconds;if(a=A(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+uc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(vc(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function xc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*q(this._months/12)}function yc(a){return function(){return this.as(a)}}function zc(a){return a=A(a),this[a+"s"]()}function Ac(a){return function(){return this._data[a]}}function Bc(){return p(this.days()/7)}function Cc(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function Dc(a,b,c){var d=Ya(a).abs(),e=qf(d.as("s")),f=qf(d.as("m")),g=qf(d.as("h")),h=qf(d.as("d")),i=qf(d.as("M")),j=qf(d.as("y")),k=e<rf.s&&["s",e]||1===f&&["m"]||f<rf.m&&["mm",f]||1===g&&["h"]||g<rf.h&&["hh",g]||1===h&&["d"]||h<rf.d&&["dd",h]||1===i&&["M"]||i<rf.M&&["MM",i]||1===j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,Cc.apply(null,k)}function Ec(a,b){return void 0===rf[a]?!1:void 0===b?rf[a]:(rf[a]=b,!0)}function Fc(a){var b=this.localeData(),c=Dc(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function Gc(){var a,b,c,d=sf(this._milliseconds)/1e3,e=sf(this._days),f=sf(this._months);a=p(d/60),b=p(a/60),d%=60,a%=60,c=p(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"} -//! moment.js locale configuration -//! locale : belarusian (be) -//! author : Dmitry Demidov : https://github.com/demidov91 -//! author: Praleska: http://praleska.pro/ -//! Author : Menelion Elensúle : https://github.com/Oire -function Hc(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function Ic(a,b,c){var d={mm:b?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:b?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===c?b?"хвіліна":"хвіліну":"h"===c?b?"гадзіна":"гадзіну":a+" "+Hc(d[c],+a)}function Jc(a,b){var c={nominative:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_"),accusative:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Kc(a,b){var c={nominative:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),accusative:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_")},d=/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]} -//! moment.js locale configuration -//! locale : breton (br) -//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou -function Lc(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+Oc(d[c],a)}function Mc(a){switch(Nc(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function Nc(a){return a>9?Nc(a%10):a}function Oc(a,b){return 2===b?Pc(a):a}function Pc(a){var b={m:"v",b:"v",d:"z"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)} -//! moment.js locale configuration -//! locale : bosnian (bs) -//! author : Nedim Cholich : https://github.com/frontyard -//! based on (hr) translation by Bojan Marković -function Qc(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function Rc(a){return a>1&&5>a&&1!==~~(a/10)}function Sc(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekund":"pár sekundami";case"m":return b?"minuta":d?"minutu":"minutou";case"mm":return b||d?e+(Rc(a)?"minuty":"minut"):e+"minutami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(Rc(a)?"hodiny":"hodin"):e+"hodinami";break;case"d":return b||d?"den":"dnem";case"dd":return b||d?e+(Rc(a)?"dny":"dní"):e+"dny";break;case"M":return b||d?"měsíc":"měsícem";case"MM":return b||d?e+(Rc(a)?"měsíce":"měsíců"):e+"měsíci";break;case"y":return b||d?"rok":"rokem";case"yy":return b||d?e+(Rc(a)?"roky":"let"):e+"lety"}} -//! moment.js locale configuration -//! locale : austrian german (de-at) -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -//! author : Martin Groller : https://github.com/MadMG -function Tc(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} -//! moment.js locale configuration -//! locale : german (de) -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -function Uc(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} -//! moment.js locale configuration -//! locale : estonian (et) -//! author : Henry Kehlmann : https://github.com/madhenry -//! improvements : Illimar Tambek : https://github.com/ragulka -function Vc(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}function Wc(a,b,c,d){var e="";switch(c){case"s":return d?"muutaman sekunnin":"muutama sekunti";case"m":return d?"minuutin":"minuutti";case"mm":e=d?"minuutin":"minuuttia";break;case"h":return d?"tunnin":"tunti";case"hh":e=d?"tunnin":"tuntia";break;case"d":return d?"päivän":"päivä";case"dd":e=d?"päivän":"päivää";break;case"M":return d?"kuukauden":"kuukausi";case"MM":e=d?"kuukauden":"kuukautta";break;case"y":return d?"vuoden":"vuosi";case"yy":e=d?"vuoden":"vuotta"}return e=Xc(a,d)+" "+e}function Xc(a,b){return 10>a?b?Pf[a]:Of[a]:a} -//! moment.js locale configuration -//! locale : hrvatski (hr) -//! author : Bojan Marković : https://github.com/bmarkovic -function Yc(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function Zc(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function $c(a){return(a?"":"[múlt] ")+"["+Uf[this.day()]+"] LT[-kor]"} -//! moment.js locale configuration -//! locale : Armenian (hy-am) -//! author : Armendarabyan : https://github.com/armendarabyan -function _c(a,b){var c={nominative:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_"),accusative:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function ad(a,b){var c="հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_");return c[a.month()]}function bd(a,b){var c="կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_");return c[a.day()]} -//! moment.js locale configuration -//! locale : icelandic (is) -//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik -function cd(a){return a%100===11?!0:a%10===1?!1:!0}function dd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return b?"mínúta":"mínútu";case"mm":return cd(a)?e+(b||d?"mínútur":"mínútum"):b?e+"mínúta":e+"mínútu";case"hh":return cd(a)?e+(b||d?"klukkustundir":"klukkustundum"):e+"klukkustund";case"d":return b?"dagur":d?"dag":"degi";case"dd":return cd(a)?b?e+"dagar":e+(d?"daga":"dögum"):b?e+"dagur":e+(d?"dag":"degi");case"M":return b?"mánuður":d?"mánuð":"mánuði";case"MM":return cd(a)?b?e+"mánuðir":e+(d?"mánuði":"mánuðum"):b?e+"mánuður":e+(d?"mánuð":"mánuði");case"y":return b||d?"ár":"ári";case"yy":return cd(a)?e+(b||d?"ár":"árum"):e+(b||d?"ár":"ári")}} -//! moment.js locale configuration -//! locale : Georgian (ka) -//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili -function ed(a,b){var c={nominative:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),accusative:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},d=/D[oD] *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function fd(a,b){var c={nominative:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),accusative:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_")},d=/(წინა|შემდეგ)/.test(b)?"accusative":"nominative";return c[d][a.day()]} -//! moment.js locale configuration -//! locale : Luxembourgish (lb) -//! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz -function gd(a,b,c,d){var e={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return b?e[c][0]:e[c][1]}function hd(a){var b=a.substr(0,a.indexOf(" "));return jd(b)?"a "+a:"an "+a}function id(a){var b=a.substr(0,a.indexOf(" "));return jd(b)?"viru "+a:"virun "+a}function jd(a){if(a=parseInt(a,10),isNaN(a))return!1;if(0>a)return!0;if(10>a)return a>=4&&7>=a?!0:!1;if(100>a){var b=a%10,c=a/10;return jd(0===b?c:b)}if(1e4>a){for(;a>=10;)a/=10;return jd(a)}return a/=1e3,jd(a)}function kd(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function ld(a,b){var c={nominative:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),accusative:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function md(a,b,c,d){return b?od(c)[0]:d?od(c)[1]:od(c)[2]}function nd(a){return a%10===0||a>10&&20>a}function od(a){return Vf[a].split("_")}function pd(a,b,c,d){var e=a+" ";return 1===a?e+md(a,b,c[0],d):b?e+(nd(a)?od(c)[1]:od(c)[0]):d?e+od(c)[1]:e+(nd(a)?od(c)[1]:od(c)[2])}function qd(a,b){var c=-1===b.indexOf("dddd HH:mm"),d=Wf[a.day()];return c?d:d.substring(0,d.length-2)+"į"}function rd(a,b,c){return c?b%10===1&&11!==b?a[2]:a[3]:b%10===1&&11!==b?a[0]:a[1]}function sd(a,b,c){return a+" "+rd(Xf[c],a,b)}function td(a,b,c){return rd(Xf[c],a,b)}function ud(a,b){return b?"dažas sekundes":"dažām sekundēm"}function vd(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function wd(a,b,c){var d=a+" ";switch(c){case"m":return b?"minuta":"minutę";case"mm":return d+(vd(a)?"minuty":"minut");case"h":return b?"godzina":"godzinę";case"hh":return d+(vd(a)?"godziny":"godzin");case"MM":return d+(vd(a)?"miesiące":"miesięcy");case"yy":return d+(vd(a)?"lata":"lat")}} -//! moment.js locale configuration -//! locale : romanian (ro) -//! author : Vlad Gurdiga : https://github.com/gurdiga -//! author : Valentin Agachi : https://github.com/avaly -function xd(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]} -//! moment.js locale configuration -//! locale : russian (ru) -//! author : Viktorminator : https://github.com/Viktorminator -//! Author : Menelion Elensúle : https://github.com/Oire -function yd(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function zd(a,b,c){var d={mm:b?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===c?b?"минута":"минуту":a+" "+yd(d[c],+a)}function Ad(a,b){var c={nominative:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),accusative:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Bd(a,b){var c={nominative:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),accusative:"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Cd(a,b){var c={nominative:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),accusative:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_")},d=/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]}function Dd(a){return a>1&&5>a}function Ed(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekúnd":"pár sekundami";case"m":return b?"minúta":d?"minútu":"minútou";case"mm":return b||d?e+(Dd(a)?"minúty":"minút"):e+"minútami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(Dd(a)?"hodiny":"hodín"):e+"hodinami";break;case"d":return b||d?"deň":"dňom";case"dd":return b||d?e+(Dd(a)?"dni":"dní"):e+"dňami";break;case"M":return b||d?"mesiac":"mesiacom";case"MM":return b||d?e+(Dd(a)?"mesiace":"mesiacov"):e+"mesiacmi";break;case"y":return b||d?"rok":"rokom";case"yy":return b||d?e+(Dd(a)?"roky":"rokov"):e+"rokmi"}} -//! moment.js locale configuration -//! locale : slovenian (sl) -//! author : Robert Sedovšek : https://github.com/sedovsek -function Fd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":5>a?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":5>a?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":5>a?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":5>a?b||d?"leta":"leti":b||d?"let":"leti"}}function Gd(a,b,c,d){var e={s:["viensas secunds","'iensas secunds"],m:["'n míut","'iens míut"],mm:[a+" míuts"," "+a+" míuts"],h:["'n þora","'iensa þora"],hh:[a+" þoras"," "+a+" þoras"],d:["'n ziua","'iensa ziua"],dd:[a+" ziuas"," "+a+" ziuas"],M:["'n mes","'iens mes"],MM:[a+" mesen"," "+a+" mesen"],y:["'n ar","'iens ar"],yy:[a+" ars"," "+a+" ars"]};return d?e[c][0]:b?e[c][0]:e[c][1].trim()} -//! moment.js locale configuration -//! locale : ukrainian (uk) -//! author : zemlanin : https://github.com/zemlanin -//! Author : Menelion Elensúle : https://github.com/Oire -function Hd(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function Id(a,b,c){var d={mm:"хвилина_хвилини_хвилин",hh:"година_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===c?b?"хвилина":"хвилину":"h"===c?b?"година":"годину":a+" "+Hd(d[c],+a)}function Jd(a,b){var c={nominative:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),accusative:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_")},d=/D[oD]? *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Kd(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function Ld(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}var Md,Nd,Od=a.momentProperties=[],Pd=!1,Qd={},Rd={},Sd=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Td=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ud={},Vd={},Wd=/\d/,Xd=/\d\d/,Yd=/\d{3}/,Zd=/\d{4}/,$d=/[+-]?\d{6}/,_d=/\d\d?/,ae=/\d{1,3}/,be=/\d{1,4}/,ce=/[+-]?\d{1,6}/,de=/\d+/,ee=/[+-]?\d+/,fe=/Z|[+-]\d\d:?\d\d/gi,ge=/[+-]?\d+(\.\d{1,3})?/,he=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,ie={},je={},ke=0,le=1,me=2,ne=3,oe=4,pe=5,qe=6;H("M",["MM",2],"Mo",function(){return this.month()+1}),H("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),H("MMMM",0,0,function(a){return this.localeData().months(this,a)}),z("month","M"),N("M",_d),N("MM",_d,Xd),N("MMM",he),N("MMMM",he),Q(["M","MM"],function(a,b){b[le]=q(a)-1}),Q(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[le]=e:j(c).invalidMonth=a});var re="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),se="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),te={};a.suppressDeprecationWarnings=!1;var ue=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ve=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],we=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],xe=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=aa("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),H(0,["YY",2],0,function(){return this.year()%100}),H(0,["YYYY",4],0,"year"),H(0,["YYYYY",5],0,"year"),H(0,["YYYYYY",6,!0],0,"year"),z("year","y"),N("Y",ee),N("YY",_d,Xd),N("YYYY",be,Zd),N("YYYYY",ce,$d),N("YYYYYY",ce,$d),Q(["YYYYY","YYYYYY"],ke),Q("YYYY",function(b,c){c[ke]=2===b.length?a.parseTwoDigitYear(b):q(b)}),Q("YY",function(b,c){c[ke]=a.parseTwoDigitYear(b)}),a.parseTwoDigitYear=function(a){return q(a)+(q(a)>68?1900:2e3)};var ye=C("FullYear",!1);H("w",["ww",2],"wo","week"),H("W",["WW",2],"Wo","isoWeek"),z("week","w"),z("isoWeek","W"),N("w",_d),N("ww",_d,Xd),N("W",_d),N("WW",_d,Xd),R(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=q(a)});var ze={dow:0,doy:6};H("DDD",["DDDD",3],"DDDo","dayOfYear"),z("dayOfYear","DDD"),N("DDD",ae),N("DDDD",Yd),Q(["DDD","DDDD"],function(a,b,c){c._dayOfYear=q(a)}),a.ISO_8601=function(){};var Ae=aa("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return this>a?this:a}),Be=aa("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return a>this?this:a});Ja("Z",":"),Ja("ZZ",""),N("Z",fe),N("ZZ",fe),Q(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ka(a)});var Ce=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var De=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Ee=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Ya.fn=Ha.prototype;var Fe=ab(1,"add"),Ge=ab(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var He=aa("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});H(0,["gg",2],0,function(){return this.weekYear()%100}),H(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Db("gggg","weekYear"),Db("ggggg","weekYear"),Db("GGGG","isoWeekYear"),Db("GGGGG","isoWeekYear"),z("weekYear","gg"),z("isoWeekYear","GG"),N("G",ee),N("g",ee),N("GG",_d,Xd),N("gg",_d,Xd),N("GGGG",be,Zd),N("gggg",be,Zd),N("GGGGG",ce,$d),N("ggggg",ce,$d),R(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=q(a)}),R(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),H("Q",0,0,"quarter"),z("quarter","Q"),N("Q",Wd),Q("Q",function(a,b){b[le]=3*(q(a)-1)}),H("D",["DD",2],"Do","date"),z("date","D"),N("D",_d),N("DD",_d,Xd),N("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),Q(["D","DD"],me),Q("Do",function(a,b){b[me]=q(a.match(_d)[0],10)});var Ie=C("Date",!0);H("d",0,"do","day"),H("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),H("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),H("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),H("e",0,0,"weekday"),H("E",0,0,"isoWeekday"),z("day","d"),z("weekday","e"),z("isoWeekday","E"),N("d",_d),N("e",_d),N("E",_d),N("dd",he),N("ddd",he),N("dddd",he),R(["dd","ddd","dddd"],function(a,b,c){var d=c._locale.weekdaysParse(a);null!=d?b.d=d:j(c).invalidWeekday=a}),R(["d","e","E"],function(a,b,c,d){b[d]=q(a)});var Je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ke="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Le="Su_Mo_Tu_We_Th_Fr_Sa".split("_");H("H",["HH",2],0,"hour"),H("h",["hh",2],0,function(){return this.hours()%12||12}),Sb("a",!0),Sb("A",!1),z("hour","h"),N("a",Tb),N("A",Tb),N("H",_d),N("h",_d),N("HH",_d,Xd),N("hh",_d,Xd),Q(["H","HH"],ne),Q(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),Q(["h","hh"],function(a,b,c){b[ne]=q(a),j(c).bigHour=!0});var Me=/[ap]\.?m?\.?/i,Ne=C("Hours",!0);H("m",["mm",2],0,"minute"),z("minute","m"),N("m",_d),N("mm",_d,Xd),Q(["m","mm"],oe);var Oe=C("Minutes",!1);H("s",["ss",2],0,"second"),z("second","s"),N("s",_d),N("ss",_d,Xd),Q(["s","ss"],pe);var Pe=C("Seconds",!1);H("S",0,0,function(){return~~(this.millisecond()/100)}),H(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,function(){return 10*this.millisecond()}),H(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),H(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),H(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),H(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),H(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),z("millisecond","ms"),N("S",ae,Wd),N("SS",ae,Xd),N("SSS",ae,Yd);var Qe;for(Qe="SSSS";Qe.length<=9;Qe+="S")N(Qe,de);for(Qe="S";Qe.length<=9;Qe+="S")Q(Qe,Wb);var Re=C("Milliseconds",!1);H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var Se=n.prototype;Se.add=Fe,Se.calendar=cb,Se.clone=db,Se.diff=ib,Se.endOf=ub,Se.format=mb,Se.from=nb,Se.fromNow=ob,Se.to=pb,Se.toNow=qb,Se.get=F,Se.invalidAt=Cb,Se.isAfter=eb,Se.isBefore=fb,Se.isBetween=gb,Se.isSame=hb,Se.isValid=Ab,Se.lang=He,Se.locale=rb,Se.localeData=sb,Se.max=Be,Se.min=Ae,Se.parsingFlags=Bb,Se.set=F,Se.startOf=tb,Se.subtract=Ge,Se.toArray=yb,Se.toObject=zb,Se.toDate=xb,Se.toISOString=lb,Se.toJSON=lb,Se.toString=kb,Se.unix=wb,Se.valueOf=vb,Se.year=ye,Se.isLeapYear=ia,Se.weekYear=Fb,Se.isoWeekYear=Gb,Se.quarter=Se.quarters=Jb,Se.month=Y,Se.daysInMonth=Z,Se.week=Se.weeks=na,Se.isoWeek=Se.isoWeeks=oa,Se.weeksInYear=Ib,Se.isoWeeksInYear=Hb,Se.date=Ie,Se.day=Se.days=Pb,Se.weekday=Qb,Se.isoWeekday=Rb,Se.dayOfYear=qa,Se.hour=Se.hours=Ne,Se.minute=Se.minutes=Oe,Se.second=Se.seconds=Pe,Se.millisecond=Se.milliseconds=Re,Se.utcOffset=Na,Se.utc=Pa,Se.local=Qa,Se.parseZone=Ra,Se.hasAlignedHourOffset=Sa,Se.isDST=Ta,Se.isDSTShifted=Ua,Se.isLocal=Va,Se.isUtcOffset=Wa,Se.isUtc=Xa,Se.isUTC=Xa,Se.zoneAbbr=Xb,Se.zoneName=Yb,Se.dates=aa("dates accessor is deprecated. Use date instead.",Ie),Se.months=aa("months accessor is deprecated. Use month instead",Y),Se.years=aa("years accessor is deprecated. Use year instead",ye),Se.zone=aa("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Oa);var Te=Se,Ue={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Ve={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},We="Invalid date",Xe="%d",Ye=/\d{1,2}/,Ze={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},$e=s.prototype;$e._calendar=Ue,$e.calendar=_b,$e._longDateFormat=Ve,$e.longDateFormat=ac,$e._invalidDate=We,$e.invalidDate=bc,$e._ordinal=Xe,$e.ordinal=cc,$e._ordinalParse=Ye,$e.preparse=dc,$e.postformat=dc,$e._relativeTime=Ze,$e.relativeTime=ec,$e.pastFuture=fc,$e.set=gc,$e.months=U,$e._months=re,$e.monthsShort=V,$e._monthsShort=se,$e.monthsParse=W,$e.week=ka,$e._week=ze,$e.firstDayOfYear=ma,$e.firstDayOfWeek=la,$e.weekdays=Lb,$e._weekdays=Je,$e.weekdaysMin=Nb,$e._weekdaysMin=Le,$e.weekdaysShort=Mb,$e._weekdaysShort=Ke,$e.weekdaysParse=Ob,$e.isPM=Ub,$e._meridiemParse=Me,$e.meridiem=Vb,w("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===q(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=aa("moment.lang is deprecated. Use moment.locale instead.",w),a.langData=aa("moment.langData is deprecated. Use moment.localeData instead.",y);var _e=Math.abs,af=yc("ms"),bf=yc("s"),cf=yc("m"),df=yc("h"),ef=yc("d"),ff=yc("w"),gf=yc("M"),hf=yc("y"),jf=Ac("milliseconds"),kf=Ac("seconds"),lf=Ac("minutes"),mf=Ac("hours"),nf=Ac("days"),of=Ac("months"),pf=Ac("years"),qf=Math.round,rf={s:45,m:45,h:22,d:26,M:11},sf=Math.abs,tf=Ha.prototype;tf.abs=oc,tf.add=qc,tf.subtract=rc,tf.as=wc,tf.asMilliseconds=af,tf.asSeconds=bf,tf.asMinutes=cf,tf.asHours=df,tf.asDays=ef,tf.asWeeks=ff,tf.asMonths=gf,tf.asYears=hf,tf.valueOf=xc,tf._bubble=tc,tf.get=zc,tf.milliseconds=jf,tf.seconds=kf,tf.minutes=lf,tf.hours=mf,tf.days=nf,tf.weeks=Bc,tf.months=of,tf.years=pf,tf.humanize=Fc,tf.toISOString=Gc,tf.toString=Gc,tf.toJSON=Gc,tf.locale=rb,tf.localeData=sb,tf.toIsoString=aa("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Gc),tf.lang=He,H("X",0,0,"unix"),H("x",0,0,"valueOf"),N("x",ee),N("X",ge),Q("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),Q("x",function(a,b,c){c._d=new Date(q(a))}), -//! moment.js -//! version : 2.10.6 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com -a.version="2.10.6",b(Da),a.fn=Te,a.min=Fa,a.max=Ga,a.utc=h,a.unix=Zb,a.months=jc,a.isDate=d,a.locale=w,a.invalid=l,a.duration=Ya,a.isMoment=o,a.weekdays=lc,a.parseZone=$b,a.localeData=y,a.isDuration=Ia,a.monthsShort=kc,a.weekdaysMin=nc,a.defineLocale=x,a.weekdaysShort=mc,a.normalizeUnits=A,a.relativeTimeThreshold=Ec;var uf=a,vf=(uf.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(a){return/^nm$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"vm":"VM":c?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),uf.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),wf={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},xf=(uf.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return wf[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return vf[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),uf.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),yf={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},zf=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},Af={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},Bf=function(a){return function(b,c,d,e){var f=zf(b),g=Af[a][zf(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},Cf=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],Df=(uf.defineLocale("ar",{months:Cf,monthsShort:Cf,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:Bf("s"),m:Bf("m"),mm:Bf("m"),h:Bf("h"),hh:Bf("h"),d:Bf("d"),dd:Bf("d"),M:Bf("M"),MM:Bf("M"),y:Bf("y"),yy:Bf("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return yf[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return xf[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),{1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"}),Ef=(uf.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(a){return/^(gündüz|axşam)$/.test(a)},meridiem:function(a,b,c){return 4>a?"gecə":12>a?"səhər":17>a?"gündüz":"axşam"},ordinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(a){if(0===a)return a+"-ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Df[b]||Df[c]||Df[d])},week:{dow:1,doy:7}}),uf.defineLocale("be",{months:Jc,monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:Kc,weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:Ic,mm:Ic,h:Ic,hh:Ic,d:"дзень",dd:Ic,M:"месяц",MM:Ic,y:"год",yy:Ic},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(a){return/^(дня|вечара)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночы":12>a?"раніцы":17>a?"дня":"вечара"},ordinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a%10!==2&&a%10!==3||a%100===12||a%100===13?a+"-ы":a+"-і";case"D":return a+"-га";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),{1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"}),Ff={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},Gf=(uf.defineLocale("bn",{months:"জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি".split("_"),weekdaysMin:"রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কএক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(a){return a.replace(/[১২৩৪৫৬৭৮৯০]/g,function(a){return Ff[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Ef[a]})},meridiemParse:/রাত|সকাল|দুপুর|বিকেল|রাত/,isPM:function(a){return/^(দুপুর|বিকেল|রাত)$/.test(a)},meridiem:function(a,b,c){return 4>a?"রাত":10>a?"সকাল":17>a?"দুপুর":20>a?"বিকেল":"রাত"},week:{dow:0,doy:6}}),{1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"}),Hf={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"},If=(uf.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(a){return a.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(a){return Hf[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Gf[a]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,isPM:function(a){return/^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(a)},meridiem:function(a,b,c){return 4>a?"མཚན་མོ":10>a?"ཞོགས་ཀས":17>a?"ཉིན་གུང":20>a?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}}),uf.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:Lc,h:"un eur",hh:"%d eur",d:"un devezh",dd:Lc,M:"ur miz",MM:Lc,y:"ur bloaz",yy:Mc},ordinalParse:/\d{1,2}(añ|vet)/,ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}}),uf.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:Qc,mm:Qc,h:Qc,hh:Qc,d:"dan",dd:Qc,M:"mjesec",MM:Qc,y:"godinu",yy:Qc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",LTS:"LT:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return("w"===b||"W"===b)&&(c="a"),a+c},week:{dow:1,doy:4}}),"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_")),Jf="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),Kf=(uf.defineLocale("cs",{months:If,monthsShort:Jf,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(If,Jf),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:Sc,m:Sc,mm:Sc,h:Sc,hh:Sc,d:Sc,dd:Sc,M:Sc,MM:Sc,y:Sc,yy:Sc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/ҫул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пӗр-ик ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},ordinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}}),uf.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}}),uf.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[Heute um] LT [Uhr]",sameElse:"L",nextDay:"[Morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[Gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:Tc,mm:"%d Minuten",h:Tc,hh:"%d Stunden",d:Tc,dd:Tc,M:Tc,MM:Tc,y:Tc,yy:Tc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[Heute um] LT [Uhr]",sameElse:"L",nextDay:"[Morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[Gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:Uc,mm:"%d Minuten",h:Uc,hh:"%d Stunden",d:Uc,dd:Uc,M:Uc,MM:Uc,y:Uc,yy:Uc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return"function"==typeof c&&(c=c.apply(b)),c.replace("{}",d%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}}),uf.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),uf.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY h:mm A",LLLL:"dddd, D MMMM, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),uf.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),uf.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-an de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(a){return"p"===a.charAt(0).toLowerCase()},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}}),"Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.".split("_")),Lf="Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic".split("_"),Mf=(uf.defineLocale("es",{months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Lf[a.month()]:Kf[a.month()]},weekdays:"Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mié._Jue._Vie._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),uf.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:Vc,m:Vc,mm:Vc,h:Vc,hh:Vc,d:Vc,dd:"%d päeva",M:Vc,MM:Vc,y:Vc,yy:Vc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]", -lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"}),Nf={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},Of=(uf.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return Nf[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return Mf[a]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}}),"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" ")),Pf=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",Of[7],Of[8],Of[9]],Qf=(uf.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:Wc,m:Wc,mm:Wc,h:Wc,hh:Wc,d:Wc,dd:Wc,M:Wc,MM:Wc,y:Wc,yy:Wc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")}}),uf.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_")),Rf="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),Sf=(uf.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Rf[a.month()]:Qf[a.month()]},weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),uf.defineLocale("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return"uns segundos"===a?"nuns segundos":"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:7}}),uf.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),Tf={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Uf=(uf.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Tf[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Sf[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?4>a?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}}),uf.defineLocale("hr",{months:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:Yc,mm:Yc,h:Yc,hh:Yc,d:"dan",dd:Yc,M:"mjesec",MM:Yc,y:"godinu",yy:Yc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),"vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ")),Vf=(uf.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return $c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return $c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:Zc,m:Zc,mm:Zc,h:Zc,hh:Zc,d:Zc,dd:Zc,M:Zc,MM:Zc,y:Zc,yy:Zc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("hy-am",{months:_c,monthsShort:ad,weekdays:bd,weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(a){return/^(ցերեկվա|երեկոյան)$/.test(a)},meridiem:function(a){return 4>a?"գիշերվա":12>a?"առավոտվա":17>a?"ցերեկվա":"երեկոյան"},ordinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),uf.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:dd,m:dd,mm:dd,h:"klukkustund",hh:dd,d:dd,dd:dd,M:dd,MM:dd,y:dd,yy:dd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),uf.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}}),uf.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(a,b){return 12===a&&(a=0),"enjing"===b?a:"siyang"===b?a>=11?a:a+12:"sonten"===b||"ndalu"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"enjing":15>a?"siyang":19>a?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),uf.defineLocale("ka",{months:ed,monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:fd,weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(a)?a.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(a){return 0===a?a:1===a?a+"-ლი":20>a||100>=a&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}}),uf.defineLocale("km",{months:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysMin:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[ថ្ងៃនៈ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}}),uf.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇초",ss:"%d초",m:"일분",mm:"%d분",h:"한시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한달",MM:"%d달",y:"일년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return 12>a?"오전":"오후"}}),uf.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:hd,past:id,s:"e puer Sekonnen",m:gd,mm:"%d Minutten",h:gd,hh:"%d Stonnen",d:gd,dd:"%d Deeg",M:gd,MM:"%d Méint",y:gd,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"}),Wf="sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),Xf=(uf.defineLocale("lt",{months:ld,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:qd,weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:kd,m:md,mm:pd,h:md,hh:pd,d:md,dd:pd,M:md,MM:pd,y:md,yy:pd},ordinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}}),{m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")}),Yf=(uf.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:ud,m:td,mm:sd,h:td,hh:sd,d:td,dd:sd,M:td,MM:sd,y:td,yy:sd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=Yf.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Yf.correctGrammaticalCase(a,d)}}),Zf=(uf.defineLocale("me",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sri.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",m:Yf.translate,mm:Yf.translate,h:Yf.translate,hh:Yf.translate,d:"dan",dd:Yf.translate,M:"mjesec",MM:Yf.translate,y:"godinu",yy:Yf.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Во изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Во изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),uf.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,isPM:function(a){return/^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(a)},meridiem:function(a,b,c){return 4>a?"രാത്രി":12>a?"രാവിലെ":17>a?"ഉച്ച കഴിഞ്ഞ്":20>a?"വൈകുന്നേരം":"രാത്രി"}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),$f={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},_f=(uf.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%s नंतर",past:"%s पूर्वी",s:"सेकंद",m:"एक मिनिट",mm:"%d मिनिटे",h:"एक तास",hh:"%d तास",d:"एक दिवस",dd:"%d दिवस",M:"एक महिना",MM:"%d महिने",y:"एक वर्ष",yy:"%d वर्षे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return $f[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Zf[a]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात्री"===b?4>a?a:a+12:"सकाळी"===b?a:"दुपारी"===b?a>=10?a:a+12:"सायंकाळी"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात्री":10>a?"सकाळी":17>a?"दुपारी":20>a?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}}),uf.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT", -lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),uf.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),{1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"}),ag={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"},bg=(uf.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(a){return a.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(a){return ag[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return _f[a]})},week:{dow:1,doy:4}}),uf.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tirs_ons_tors_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"H.mm",LTS:"H.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H.mm",LLLL:"dddd D. MMMM YYYY [kl.] H.mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),cg={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},dg=(uf.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आइ._सो._मङ्_बु._बि._शु._श.".split("_"),longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return cg[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return bg[a]})},meridiemParse:/राती|बिहान|दिउँसो|बेलुका|साँझ|राती/,meridiemHour:function(a,b){return 12===a&&(a=0),"राती"===b?3>a?a:a+12:"बिहान"===b?a:"दिउँसो"===b?a>=10?a:a+12:"बेलुका"===b||"साँझ"===b?a+12:void 0},meridiem:function(a,b,c){return 3>a?"राती":10>a?"बिहान":15>a?"दिउँसो":18>a?"बेलुका":20>a?"साँझ":"राती"},calendar:{sameDay:"[आज] LT",nextDay:"[भोली] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडी",s:"केही समय",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:1,doy:7}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),eg="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),fg=(uf.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?eg[a.month()]:dg[a.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),uf.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),"styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_")),gg="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),hg=(uf.defineLocale("pl",{months:function(a,b){return""===b?"("+gg[a.month()]+"|"+fg[a.month()]+")":/D MMMM/.test(b)?gg[a.month()]:fg[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:wd,mm:wd,h:wd,hh:wd,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:wd,y:"rok",yy:wd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"}),uf.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),uf.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:xd,h:"o oră",hh:xd,d:"o zi",dd:xd,M:"o lună",MM:xd,y:"un an",yy:xd},week:{dow:1,doy:7}}),uf.defineLocale("ru",{months:Ad,monthsShort:Bd,weekdays:Cd,weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(){return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT"},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:zd,mm:zd,h:"час",hh:zd,d:"день",dd:zd,M:"месяц",MM:zd,y:"год",yy:zd},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්ර_සි_සෙ".split("_"),longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},ordinalParse:/\d{1,2} වැනි/,ordinal:function(a){return a+" වැනි"},meridiem:function(a,b,c){return a>11?c?"ප.ව.":"පස් වරු":c?"පෙ.ව.":"පෙර වරු"}}),"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_")),ig="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),jg=(uf.defineLocale("sk",{months:hg,monthsShort:ig,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(hg,ig),weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:Ed,m:Ed,mm:Ed,h:Ed,hh:Ed,d:Ed,dd:Ed,M:Ed,MM:Ed,y:Ed,yy:Ed},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:Fd,m:Fd,mm:Fd,h:Fd,hh:Fd,d:Fd,dd:Fd,M:Fd,MM:Fd,y:Fd,yy:Fd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),meridiemParse:/PD|MD/,isPM:function(a){return"M"===a.charAt(0)},meridiem:function(a,b,c){return 12>a?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=jg.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+jg.correctGrammaticalCase(a,d)}}),kg=(uf.defineLocale("sr-cyrl",{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],monthsShort:["јан.","феб.","мар.","апр.","мај","јун","јул","авг.","сеп.","окт.","нов.","дец."],weekdays:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],weekdaysShort:["нед.","пон.","уто.","сре.","чет.","пет.","суб."],weekdaysMin:["не","по","ут","ср","че","пе","су"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:jg.translate,mm:jg.translate,h:jg.translate,hh:jg.translate,d:"дан",dd:jg.translate,M:"месец",MM:jg.translate,y:"годину",yy:jg.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=kg.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+kg.correctGrammaticalCase(a,d)}}),lg=(uf.defineLocale("sr",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sre.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:kg.translate,mm:kg.translate,h:kg.translate,hh:kg.translate,d:"dan",dd:kg.translate,M:"mesec",MM:kg.translate,y:"godinu",yy:kg.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}}),uf.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},ordinalParse:/\d{1,2}வது/,ordinal:function(a){return a+"வது"},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(a,b,c){return 2>a?" யாமம்":6>a?" வைகறை":10>a?" காலை":14>a?" நண்பகல்":18>a?" எற்பாடு":22>a?" மாலை":" யாமம்"},meridiemHour:function(a,b){return 12===a&&(a=0),"யாமம்"===b?2>a?a:a+12:"வைகறை"===b||"காலை"===b?a:"நண்பகல்"===b&&a>=10?a:a+12},week:{dow:0,doy:6}}),uf.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),longDateFormat:{LT:"H นาฬิกา m นาที",LTS:"H นาฬิกา m นาที s วินาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H นาฬิกา m นาที",LLLL:"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}}),uf.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),{1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"}),mg=(uf.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(lg[b]||lg[c]||lg[d])},week:{dow:1,doy:7}}),uf.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"LT.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY LT",LLLL:"dddd, [li] D. MMMM [dallas] YYYY LT"},meridiem:function(a,b,c){return a>11?c?"d'o":"D'O":c?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:Gd,m:Gd,mm:Gd,h:Gd,hh:Gd,d:Gd,dd:Gd,M:Gd,MM:Gd,y:Gd,yy:Gd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),uf.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}}),uf.defineLocale("uk",{months:Jd,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:Kd,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:Ld("[Сьогодні "),nextDay:Ld("[Завтра "),lastDay:Ld("[Вчора "),nextWeek:Ld("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return Ld("[Минулої] dddd [").call(this);case 1:case 2:case 4:return Ld("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:Id,mm:Id,h:"годину",hh:Id,d:"день",dd:Id,M:"місяць",MM:Id,y:"рік",yy:Id},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("uz",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}}),uf.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm", -llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),uf.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var a,b;return a=uf().startOf("week"),b=this.unix()-a.unix()>=604800?"[下]":"[本]",0===this.minutes()?b+"dddAh点整":b+"dddAh点mm"},lastWeek:function(){var a,b;return a=uf().startOf("week"),b=this.unix()<a.unix()?"[上]":"[本]",0===this.minutes()?b+"dddAh点整":b+"dddAh点mm"},sameElse:"LL"},ordinalParse:/\d{1,2}(日|月|周)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"周";default:return a}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}}),uf.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah點mm分",LTS:"Ah點m分s秒",L:"YYYY年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah點mm分",LLLL:"YYYY年MMMD日ddddAh點mm分",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah點mm分",llll:"YYYY年MMMD日ddddAh點mm分"},meridiemParse:/早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"早上"===b||"上午"===b?a:"中午"===b?a>=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d分鐘",h:"一小時",hh:"%d小時",d:"一天",dd:"%d天",M:"一個月",MM:"%d個月",y:"一年",yy:"%d年"}}),uf);return mg.locale("en"),mg}); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/min/moment.min.js b/elgg_clean/bower_components/moment/min/moment.min.js deleted file mode 100644 index 8e6866af..00000000 --- a/elgg_clean/bower_components/moment/min/moment.min.js +++ /dev/null @@ -1,7 +0,0 @@ -//! moment.js -//! version : 2.10.6 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return Hc.apply(null,arguments)}function b(a){Hc=a}function c(a){return"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function f(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function g(a,b){for(var c in b)f(b,c)&&(a[c]=b[c]);return f(b,"toString")&&(a.toString=b.toString),f(b,"valueOf")&&(a.valueOf=b.valueOf),a}function h(a,b,c,d){return Ca(a,b,c,d,!0).utc()}function i(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function j(a){return null==a._pf&&(a._pf=i()),a._pf}function k(a){if(null==a._isValid){var b=j(a);a._isValid=!(isNaN(a._d.getTime())||!(b.overflow<0)||b.empty||b.invalidMonth||b.invalidWeekday||b.nullInput||b.invalidFormat||b.userInvalidated),a._strict&&(a._isValid=a._isValid&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour)}return a._isValid}function l(a){var b=h(NaN);return null!=a?g(j(b),a):j(b).userInvalidated=!0,b}function m(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=j(b)),"undefined"!=typeof b._locale&&(a._locale=b._locale),Jc.length>0)for(c in Jc)d=Jc[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(b){m(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),Kc===!1&&(Kc=!0,a.updateOffset(this),Kc=!1)}function o(a){return a instanceof n||null!=a&&null!=a._isAMomentObject}function p(a){return 0>a?Math.ceil(a):Math.floor(a)}function q(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=p(b)),c}function r(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&q(a[d])!==q(b[d]))&&g++;return g+f}function s(){}function t(a){return a?a.toLowerCase().replace("_","-"):a}function u(a){for(var b,c,d,e,f=0;f<a.length;){for(e=t(a[f]).split("-"),b=e.length,c=t(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=v(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&r(e,c,!0)>=b-1)break;b--}f++}return null}function v(a){var b=null;if(!Lc[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Ic._abbr,require("./locale/"+a),w(b)}catch(c){}return Lc[a]}function w(a,b){var c;return a&&(c="undefined"==typeof b?y(a):x(a,b),c&&(Ic=c)),Ic._abbr}function x(a,b){return null!==b?(b.abbr=a,Lc[a]=Lc[a]||new s,Lc[a].set(b),w(a),Lc[a]):(delete Lc[a],null)}function y(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Ic;if(!c(a)){if(b=v(a))return b;a=[a]}return u(a)}function z(a,b){var c=a.toLowerCase();Mc[c]=Mc[c+"s"]=Mc[b]=a}function A(a){return"string"==typeof a?Mc[a]||Mc[a.toLowerCase()]:void 0}function B(a){var b,c,d={};for(c in a)f(a,c)&&(b=A(c),b&&(d[b]=a[c]));return d}function C(b,c){return function(d){return null!=d?(E(this,b,d),a.updateOffset(this,c),this):D(this,b)}}function D(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function E(a,b,c){return a._d["set"+(a._isUTC?"UTC":"")+b](c)}function F(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=A(a),"function"==typeof this[a])return this[a](b);return this}function G(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function H(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Qc[a]=e),b&&(Qc[b[0]]=function(){return G(e.apply(this,arguments),b[1],b[2])}),c&&(Qc[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function I(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function J(a){var b,c,d=a.match(Nc);for(b=0,c=d.length;c>b;b++)Qc[d[b]]?d[b]=Qc[d[b]]:d[b]=I(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function K(a,b){return a.isValid()?(b=L(b,a.localeData()),Pc[b]=Pc[b]||J(b),Pc[b](a)):a.localeData().invalidDate()}function L(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Oc.lastIndex=0;d>=0&&Oc.test(a);)a=a.replace(Oc,c),Oc.lastIndex=0,d-=1;return a}function M(a){return"function"==typeof a&&"[object Function]"===Object.prototype.toString.call(a)}function N(a,b,c){dd[a]=M(b)?b:function(a){return a&&c?c:b}}function O(a,b){return f(dd,a)?dd[a](b._strict,b._locale):new RegExp(P(a))}function P(a){return a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Q(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=q(a)}),c=0;c<a.length;c++)ed[a[c]]=d}function R(a,b){Q(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function S(a,b,c){null!=b&&f(ed,a)&&ed[a](b,c._a,c,a)}function T(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function U(a){return this._months[a.month()]}function V(a){return this._monthsShort[a.month()]}function W(a,b,c){var d,e,f;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function X(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),T(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function Y(b){return null!=b?(X(this,b),a.updateOffset(this,!0),this):D(this,"Month")}function Z(){return T(this.year(),this.month())}function $(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[gd]<0||c[gd]>11?gd:c[hd]<1||c[hd]>T(c[fd],c[gd])?hd:c[id]<0||c[id]>24||24===c[id]&&(0!==c[jd]||0!==c[kd]||0!==c[ld])?id:c[jd]<0||c[jd]>59?jd:c[kd]<0||c[kd]>59?kd:c[ld]<0||c[ld]>999?ld:-1,j(a)._overflowDayOfYear&&(fd>b||b>hd)&&(b=hd),j(a).overflow=b),a}function _(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function aa(a,b){var c=!0;return g(function(){return c&&(_(a+"\n"+(new Error).stack),c=!1),b.apply(this,arguments)},b)}function ba(a,b){od[a]||(_(b),od[a]=!0)}function ca(a){var b,c,d=a._i,e=pd.exec(d);if(e){for(j(a).iso=!0,b=0,c=qd.length;c>b;b++)if(qd[b][1].exec(d)){a._f=qd[b][0];break}for(b=0,c=rd.length;c>b;b++)if(rd[b][1].exec(d)){a._f+=(e[6]||" ")+rd[b][0];break}d.match(ad)&&(a._f+="Z"),va(a)}else a._isValid=!1}function da(b){var c=sd.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(ca(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function ea(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function fa(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function ga(a){return ha(a)?366:365}function ha(a){return a%4===0&&a%100!==0||a%400===0}function ia(){return ha(this.year())}function ja(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=Da(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ka(a){return ja(a,this._week.dow,this._week.doy).week}function la(){return this._week.dow}function ma(){return this._week.doy}function na(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function oa(a){var b=ja(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function pa(a,b,c,d,e){var f,g=6+e-d,h=fa(a,0,1+g),i=h.getUTCDay();return e>i&&(i+=7),c=null!=c?1*c:e,f=1+g+7*(b-1)-i+c,{year:f>0?a:a-1,dayOfYear:f>0?f:ga(a-1)+f}}function qa(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function ra(a,b,c){return null!=a?a:null!=b?b:c}function sa(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function ta(a){var b,c,d,e,f=[];if(!a._d){for(d=sa(a),a._w&&null==a._a[hd]&&null==a._a[gd]&&ua(a),a._dayOfYear&&(e=ra(a._a[fd],d[fd]),a._dayOfYear>ga(e)&&(j(a)._overflowDayOfYear=!0),c=fa(e,0,a._dayOfYear),a._a[gd]=c.getUTCMonth(),a._a[hd]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[id]&&0===a._a[jd]&&0===a._a[kd]&&0===a._a[ld]&&(a._nextDay=!0,a._a[id]=0),a._d=(a._useUTC?fa:ea).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[id]=24)}}function ua(a){var b,c,d,e,f,g,h;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=ra(b.GG,a._a[fd],ja(Da(),1,4).year),d=ra(b.W,1),e=ra(b.E,1)):(f=a._locale._week.dow,g=a._locale._week.doy,c=ra(b.gg,a._a[fd],ja(Da(),f,g).year),d=ra(b.w,1),null!=b.d?(e=b.d,f>e&&++d):e=null!=b.e?b.e+f:f),h=pa(c,d,e,g,f),a._a[fd]=h.year,a._dayOfYear=h.dayOfYear}function va(b){if(b._f===a.ISO_8601)return void ca(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=L(b._f,b._locale).match(Nc)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(O(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),Qc[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),S(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[id]<=12&&b._a[id]>0&&(j(b).bigHour=void 0),b._a[id]=wa(b._locale,b._a[id],b._meridiem),ta(b),$(b)}function wa(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function xa(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=m({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],va(b),k(b)&&(f+=j(b).charsLeftOver,f+=10*j(b).unusedTokens.length,j(b).score=f,(null==d||d>f)&&(d=f,c=b));g(a,c||b)}function ya(a){if(!a._d){var b=B(a._i);a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],ta(a)}}function za(a){var b=new n($(Aa(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function Aa(a){var b=a._i,e=a._f;return a._locale=a._locale||y(a._l),null===b||void 0===e&&""===b?l({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),o(b)?new n($(b)):(c(e)?xa(a):e?va(a):d(b)?a._d=b:Ba(a),a))}function Ba(b){var f=b._i;void 0===f?b._d=new Date:d(f)?b._d=new Date(+f):"string"==typeof f?da(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),ta(b)):"object"==typeof f?ya(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Ca(a,b,c,d,e){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,za(f)}function Da(a,b,c,d){return Ca(a,b,c,d,!1)}function Ea(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Da();for(d=b[0],e=1;e<b.length;++e)(!b[e].isValid()||b[e][a](d))&&(d=b[e]);return d}function Fa(){var a=[].slice.call(arguments,0);return Ea("isBefore",a)}function Ga(){var a=[].slice.call(arguments,0);return Ea("isAfter",a)}function Ha(a){var b=B(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=y(),this._bubble()}function Ia(a){return a instanceof Ha}function Ja(a,b){H(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+G(~~(a/60),2)+b+G(~~a%60,2)})}function Ka(a){var b=(a||"").match(ad)||[],c=b[b.length-1]||[],d=(c+"").match(xd)||["-",0,0],e=+(60*d[1])+q(d[2]);return"+"===d[0]?e:-e}function La(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(o(b)||d(b)?+b:+Da(b))-+e,e._d.setTime(+e._d+f),a.updateOffset(e,!1),e):Da(b).local()}function Ma(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Na(b,c){var d,e=this._offset||0;return null!=b?("string"==typeof b&&(b=Ka(b)),Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ma(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?bb(this,Ya(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ma(this)}function Oa(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Pa(a){return this.utcOffset(0,a)}function Qa(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ma(this),"m")),this}function Ra(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ka(this._i)),this}function Sa(a){return a=a?Da(a).utcOffset():0,(this.utcOffset()-a)%60===0}function Ta(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ua(){if("undefined"!=typeof this._isDSTShifted)return this._isDSTShifted;var a={};if(m(a,this),a=Aa(a),a._a){var b=a._isUTC?h(a._a):Da(a._a);this._isDSTShifted=this.isValid()&&r(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Va(){return!this._isUTC}function Wa(){return this._isUTC}function Xa(){return this._isUTC&&0===this._offset}function Ya(a,b){var c,d,e,g=a,h=null;return Ia(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=yd.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:q(h[hd])*c,h:q(h[id])*c,m:q(h[jd])*c,s:q(h[kd])*c,ms:q(h[ld])*c}):(h=zd.exec(a))?(c="-"===h[1]?-1:1,g={y:Za(h[2],c),M:Za(h[3],c),d:Za(h[4],c),h:Za(h[5],c),m:Za(h[6],c),s:Za(h[7],c),w:Za(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=_a(Da(g.from),Da(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Ha(g),Ia(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function Za(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function $a(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function _a(a,b){var c;return b=La(b,a),a.isBefore(b)?c=$a(a,b):(c=$a(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function ab(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(ba(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Ya(c,d),bb(this,e,a),this}}function bb(b,c,d,e){var f=c._milliseconds,g=c._days,h=c._months;e=null==e?!0:e,f&&b._d.setTime(+b._d+f*d),g&&E(b,"Date",D(b,"Date")+g*d),h&&X(b,D(b,"Month")+h*d),e&&a.updateOffset(b,g||h)}function cb(a,b){var c=a||Da(),d=La(c,this).startOf("day"),e=this.diff(d,"days",!0),f=-6>e?"sameElse":-1>e?"lastWeek":0>e?"lastDay":1>e?"sameDay":2>e?"nextDay":7>e?"nextWeek":"sameElse";return this.format(b&&b[f]||this.localeData().calendar(f,this,Da(c)))}function db(){return new n(this)}function eb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+this>+a):(c=o(a)?+a:+Da(a),c<+this.clone().startOf(b))}function fb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+a>+this):(c=o(a)?+a:+Da(a),+this.clone().endOf(b)<c)}function gb(a,b,c){return this.isAfter(a,c)&&this.isBefore(b,c)}function hb(a,b){var c;return b=A(b||"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+this===+a):(c=+Da(a),+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))}function ib(a,b,c){var d,e,f=La(a,this),g=6e4*(f.utcOffset()-this.utcOffset());return b=A(b),"year"===b||"month"===b||"quarter"===b?(e=jb(this,f),"quarter"===b?e/=3:"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:p(e)}function jb(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return 0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)}function kb(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function lb(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?"function"==typeof Date.prototype.toISOString?this.toDate().toISOString():K(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):K(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function mb(b){var c=K(this,b||a.defaultFormat);return this.localeData().postformat(c)}function nb(a,b){return this.isValid()?Ya({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function ob(a){return this.from(Da(),a)}function pb(a,b){return this.isValid()?Ya({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function qb(a){return this.to(Da(),a)}function rb(a){var b;return void 0===a?this._locale._abbr:(b=y(a),null!=b&&(this._locale=b),this)}function sb(){return this._locale}function tb(a){switch(a=A(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function ub(a){return a=A(a),void 0===a||"millisecond"===a?this:this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms")}function vb(){return+this._d-6e4*(this._offset||0)}function wb(){return Math.floor(+this/1e3)}function xb(){return this._offset?new Date(+this):this._d}function yb(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function zb(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function Ab(){return k(this)}function Bb(){return g({},j(this))}function Cb(){return j(this).overflow}function Db(a,b){H(0,[a,a.length],0,b)}function Eb(a,b,c){return ja(Da([a,11,31+b-c]),b,c).week}function Fb(a){var b=ja(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")}function Gb(a){var b=ja(this,1,4).year;return null==a?b:this.add(a-b,"y")}function Hb(){return Eb(this.year(),1,4)}function Ib(){var a=this.localeData()._week;return Eb(this.year(),a.dow,a.doy)}function Jb(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Kb(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Lb(a){return this._weekdays[a.day()]}function Mb(a){return this._weekdaysShort[a.day()]}function Nb(a){return this._weekdaysMin[a.day()]}function Ob(a){var b,c,d;for(this._weekdaysParse=this._weekdaysParse||[],b=0;7>b;b++)if(this._weekdaysParse[b]||(c=Da([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b}function Pb(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Kb(a,this.localeData()),this.add(a-b,"d")):b}function Qb(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Rb(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)}function Sb(a,b){H(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Tb(a,b){return b._meridiemParse}function Ub(a){return"p"===(a+"").toLowerCase().charAt(0)}function Vb(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Wb(a,b){b[ld]=q(1e3*("0."+a))}function Xb(){return this._isUTC?"UTC":""}function Yb(){return this._isUTC?"Coordinated Universal Time":""}function Zb(a){return Da(1e3*a)}function $b(){return Da.apply(null,arguments).parseZone()}function _b(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.call(b,c):d}function ac(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function bc(){return this._invalidDate}function cc(a){return this._ordinal.replace("%d",a)}function dc(a){return a}function ec(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)}function fc(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)}function gc(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function hc(a,b,c,d){var e=y(),f=h().set(d,b);return e[c](f,a)}function ic(a,b,c,d,e){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return hc(a,b,c,e);var f,g=[];for(f=0;d>f;f++)g[f]=hc(a,f,c,e);return g}function jc(a,b){return ic(a,b,"months",12,"month")}function kc(a,b){return ic(a,b,"monthsShort",12,"month")}function lc(a,b){return ic(a,b,"weekdays",7,"day")}function mc(a,b){return ic(a,b,"weekdaysShort",7,"day")}function nc(a,b){return ic(a,b,"weekdaysMin",7,"day")}function oc(){var a=this._data;return this._milliseconds=Wd(this._milliseconds),this._days=Wd(this._days),this._months=Wd(this._months),a.milliseconds=Wd(a.milliseconds),a.seconds=Wd(a.seconds),a.minutes=Wd(a.minutes),a.hours=Wd(a.hours),a.months=Wd(a.months),a.years=Wd(a.years),this}function pc(a,b,c,d){var e=Ya(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function qc(a,b){return pc(this,a,b,1)}function rc(a,b){return pc(this,a,b,-1)}function sc(a){return 0>a?Math.floor(a):Math.ceil(a)}function tc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*sc(vc(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=p(f/1e3),i.seconds=a%60,b=p(a/60),i.minutes=b%60,c=p(b/60),i.hours=c%24,g+=p(c/24),e=p(uc(g)),h+=e,g-=sc(vc(e)),d=p(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function uc(a){return 4800*a/146097}function vc(a){return 146097*a/4800}function wc(a){var b,c,d=this._milliseconds;if(a=A(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+uc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(vc(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function xc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*q(this._months/12)}function yc(a){return function(){return this.as(a)}}function zc(a){return a=A(a),this[a+"s"]()}function Ac(a){return function(){return this._data[a]}}function Bc(){return p(this.days()/7)}function Cc(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function Dc(a,b,c){var d=Ya(a).abs(),e=ke(d.as("s")),f=ke(d.as("m")),g=ke(d.as("h")),h=ke(d.as("d")),i=ke(d.as("M")),j=ke(d.as("y")),k=e<le.s&&["s",e]||1===f&&["m"]||f<le.m&&["mm",f]||1===g&&["h"]||g<le.h&&["hh",g]||1===h&&["d"]||h<le.d&&["dd",h]||1===i&&["M"]||i<le.M&&["MM",i]||1===j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,Cc.apply(null,k)}function Ec(a,b){return void 0===le[a]?!1:void 0===b?le[a]:(le[a]=b,!0)}function Fc(a){var b=this.localeData(),c=Dc(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function Gc(){var a,b,c,d=me(this._milliseconds)/1e3,e=me(this._days),f=me(this._months);a=p(d/60),b=p(a/60),d%=60,a%=60,c=p(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var Hc,Ic,Jc=a.momentProperties=[],Kc=!1,Lc={},Mc={},Nc=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Oc=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Pc={},Qc={},Rc=/\d/,Sc=/\d\d/,Tc=/\d{3}/,Uc=/\d{4}/,Vc=/[+-]?\d{6}/,Wc=/\d\d?/,Xc=/\d{1,3}/,Yc=/\d{1,4}/,Zc=/[+-]?\d{1,6}/,$c=/\d+/,_c=/[+-]?\d+/,ad=/Z|[+-]\d\d:?\d\d/gi,bd=/[+-]?\d+(\.\d{1,3})?/,cd=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,dd={},ed={},fd=0,gd=1,hd=2,id=3,jd=4,kd=5,ld=6;H("M",["MM",2],"Mo",function(){return this.month()+1}),H("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),H("MMMM",0,0,function(a){return this.localeData().months(this,a)}),z("month","M"),N("M",Wc),N("MM",Wc,Sc),N("MMM",cd),N("MMMM",cd),Q(["M","MM"],function(a,b){b[gd]=q(a)-1}),Q(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[gd]=e:j(c).invalidMonth=a});var md="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),nd="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),od={};a.suppressDeprecationWarnings=!1;var pd=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,qd=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],rd=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],sd=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=aa("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),H(0,["YY",2],0,function(){return this.year()%100}),H(0,["YYYY",4],0,"year"),H(0,["YYYYY",5],0,"year"),H(0,["YYYYYY",6,!0],0,"year"),z("year","y"),N("Y",_c),N("YY",Wc,Sc),N("YYYY",Yc,Uc),N("YYYYY",Zc,Vc),N("YYYYYY",Zc,Vc),Q(["YYYYY","YYYYYY"],fd),Q("YYYY",function(b,c){c[fd]=2===b.length?a.parseTwoDigitYear(b):q(b)}),Q("YY",function(b,c){c[fd]=a.parseTwoDigitYear(b)}),a.parseTwoDigitYear=function(a){return q(a)+(q(a)>68?1900:2e3)};var td=C("FullYear",!1);H("w",["ww",2],"wo","week"),H("W",["WW",2],"Wo","isoWeek"),z("week","w"),z("isoWeek","W"),N("w",Wc),N("ww",Wc,Sc),N("W",Wc),N("WW",Wc,Sc),R(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=q(a)});var ud={dow:0,doy:6};H("DDD",["DDDD",3],"DDDo","dayOfYear"),z("dayOfYear","DDD"),N("DDD",Xc),N("DDDD",Tc),Q(["DDD","DDDD"],function(a,b,c){c._dayOfYear=q(a)}),a.ISO_8601=function(){};var vd=aa("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return this>a?this:a}),wd=aa("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return a>this?this:a});Ja("Z",":"),Ja("ZZ",""),N("Z",ad),N("ZZ",ad),Q(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ka(a)});var xd=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var yd=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,zd=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Ya.fn=Ha.prototype;var Ad=ab(1,"add"),Bd=ab(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var Cd=aa("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});H(0,["gg",2],0,function(){return this.weekYear()%100}),H(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Db("gggg","weekYear"),Db("ggggg","weekYear"),Db("GGGG","isoWeekYear"),Db("GGGGG","isoWeekYear"),z("weekYear","gg"),z("isoWeekYear","GG"),N("G",_c),N("g",_c),N("GG",Wc,Sc),N("gg",Wc,Sc),N("GGGG",Yc,Uc),N("gggg",Yc,Uc),N("GGGGG",Zc,Vc),N("ggggg",Zc,Vc),R(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=q(a)}),R(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),H("Q",0,0,"quarter"),z("quarter","Q"),N("Q",Rc),Q("Q",function(a,b){b[gd]=3*(q(a)-1)}),H("D",["DD",2],"Do","date"),z("date","D"),N("D",Wc),N("DD",Wc,Sc),N("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),Q(["D","DD"],hd),Q("Do",function(a,b){b[hd]=q(a.match(Wc)[0],10)});var Dd=C("Date",!0);H("d",0,"do","day"),H("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),H("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),H("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),H("e",0,0,"weekday"),H("E",0,0,"isoWeekday"),z("day","d"),z("weekday","e"),z("isoWeekday","E"),N("d",Wc),N("e",Wc),N("E",Wc),N("dd",cd),N("ddd",cd),N("dddd",cd),R(["dd","ddd","dddd"],function(a,b,c){var d=c._locale.weekdaysParse(a);null!=d?b.d=d:j(c).invalidWeekday=a}),R(["d","e","E"],function(a,b,c,d){b[d]=q(a)});var Ed="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Fd="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Gd="Su_Mo_Tu_We_Th_Fr_Sa".split("_");H("H",["HH",2],0,"hour"),H("h",["hh",2],0,function(){return this.hours()%12||12}),Sb("a",!0),Sb("A",!1),z("hour","h"),N("a",Tb),N("A",Tb),N("H",Wc),N("h",Wc),N("HH",Wc,Sc),N("hh",Wc,Sc),Q(["H","HH"],id),Q(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),Q(["h","hh"],function(a,b,c){b[id]=q(a),j(c).bigHour=!0});var Hd=/[ap]\.?m?\.?/i,Id=C("Hours",!0);H("m",["mm",2],0,"minute"),z("minute","m"),N("m",Wc),N("mm",Wc,Sc),Q(["m","mm"],jd);var Jd=C("Minutes",!1);H("s",["ss",2],0,"second"),z("second","s"),N("s",Wc),N("ss",Wc,Sc),Q(["s","ss"],kd);var Kd=C("Seconds",!1);H("S",0,0,function(){return~~(this.millisecond()/100)}),H(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,function(){return 10*this.millisecond()}),H(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),H(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),H(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),H(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),H(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),z("millisecond","ms"),N("S",Xc,Rc),N("SS",Xc,Sc),N("SSS",Xc,Tc);var Ld;for(Ld="SSSS";Ld.length<=9;Ld+="S")N(Ld,$c);for(Ld="S";Ld.length<=9;Ld+="S")Q(Ld,Wb);var Md=C("Milliseconds",!1);H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var Nd=n.prototype;Nd.add=Ad,Nd.calendar=cb,Nd.clone=db,Nd.diff=ib,Nd.endOf=ub,Nd.format=mb,Nd.from=nb,Nd.fromNow=ob,Nd.to=pb,Nd.toNow=qb,Nd.get=F,Nd.invalidAt=Cb,Nd.isAfter=eb,Nd.isBefore=fb,Nd.isBetween=gb,Nd.isSame=hb,Nd.isValid=Ab,Nd.lang=Cd,Nd.locale=rb,Nd.localeData=sb,Nd.max=wd,Nd.min=vd,Nd.parsingFlags=Bb,Nd.set=F,Nd.startOf=tb,Nd.subtract=Bd,Nd.toArray=yb,Nd.toObject=zb,Nd.toDate=xb,Nd.toISOString=lb,Nd.toJSON=lb,Nd.toString=kb,Nd.unix=wb,Nd.valueOf=vb,Nd.year=td,Nd.isLeapYear=ia,Nd.weekYear=Fb,Nd.isoWeekYear=Gb,Nd.quarter=Nd.quarters=Jb,Nd.month=Y,Nd.daysInMonth=Z,Nd.week=Nd.weeks=na,Nd.isoWeek=Nd.isoWeeks=oa,Nd.weeksInYear=Ib,Nd.isoWeeksInYear=Hb,Nd.date=Dd,Nd.day=Nd.days=Pb,Nd.weekday=Qb,Nd.isoWeekday=Rb,Nd.dayOfYear=qa,Nd.hour=Nd.hours=Id,Nd.minute=Nd.minutes=Jd,Nd.second=Nd.seconds=Kd, -Nd.millisecond=Nd.milliseconds=Md,Nd.utcOffset=Na,Nd.utc=Pa,Nd.local=Qa,Nd.parseZone=Ra,Nd.hasAlignedHourOffset=Sa,Nd.isDST=Ta,Nd.isDSTShifted=Ua,Nd.isLocal=Va,Nd.isUtcOffset=Wa,Nd.isUtc=Xa,Nd.isUTC=Xa,Nd.zoneAbbr=Xb,Nd.zoneName=Yb,Nd.dates=aa("dates accessor is deprecated. Use date instead.",Dd),Nd.months=aa("months accessor is deprecated. Use month instead",Y),Nd.years=aa("years accessor is deprecated. Use year instead",td),Nd.zone=aa("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Oa);var Od=Nd,Pd={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Qd={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Rd="Invalid date",Sd="%d",Td=/\d{1,2}/,Ud={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Vd=s.prototype;Vd._calendar=Pd,Vd.calendar=_b,Vd._longDateFormat=Qd,Vd.longDateFormat=ac,Vd._invalidDate=Rd,Vd.invalidDate=bc,Vd._ordinal=Sd,Vd.ordinal=cc,Vd._ordinalParse=Td,Vd.preparse=dc,Vd.postformat=dc,Vd._relativeTime=Ud,Vd.relativeTime=ec,Vd.pastFuture=fc,Vd.set=gc,Vd.months=U,Vd._months=md,Vd.monthsShort=V,Vd._monthsShort=nd,Vd.monthsParse=W,Vd.week=ka,Vd._week=ud,Vd.firstDayOfYear=ma,Vd.firstDayOfWeek=la,Vd.weekdays=Lb,Vd._weekdays=Ed,Vd.weekdaysMin=Nb,Vd._weekdaysMin=Gd,Vd.weekdaysShort=Mb,Vd._weekdaysShort=Fd,Vd.weekdaysParse=Ob,Vd.isPM=Ub,Vd._meridiemParse=Hd,Vd.meridiem=Vb,w("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===q(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=aa("moment.lang is deprecated. Use moment.locale instead.",w),a.langData=aa("moment.langData is deprecated. Use moment.localeData instead.",y);var Wd=Math.abs,Xd=yc("ms"),Yd=yc("s"),Zd=yc("m"),$d=yc("h"),_d=yc("d"),ae=yc("w"),be=yc("M"),ce=yc("y"),de=Ac("milliseconds"),ee=Ac("seconds"),fe=Ac("minutes"),ge=Ac("hours"),he=Ac("days"),ie=Ac("months"),je=Ac("years"),ke=Math.round,le={s:45,m:45,h:22,d:26,M:11},me=Math.abs,ne=Ha.prototype;ne.abs=oc,ne.add=qc,ne.subtract=rc,ne.as=wc,ne.asMilliseconds=Xd,ne.asSeconds=Yd,ne.asMinutes=Zd,ne.asHours=$d,ne.asDays=_d,ne.asWeeks=ae,ne.asMonths=be,ne.asYears=ce,ne.valueOf=xc,ne._bubble=tc,ne.get=zc,ne.milliseconds=de,ne.seconds=ee,ne.minutes=fe,ne.hours=ge,ne.days=he,ne.weeks=Bc,ne.months=ie,ne.years=je,ne.humanize=Fc,ne.toISOString=Gc,ne.toString=Gc,ne.toJSON=Gc,ne.locale=rb,ne.localeData=sb,ne.toIsoString=aa("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Gc),ne.lang=Cd,H("X",0,0,"unix"),H("x",0,0,"valueOf"),N("x",_c),N("X",bd),Q("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),Q("x",function(a,b,c){c._d=new Date(q(a))}),a.version="2.10.6",b(Da),a.fn=Od,a.min=Fa,a.max=Ga,a.utc=h,a.unix=Zb,a.months=jc,a.isDate=d,a.locale=w,a.invalid=l,a.duration=Ya,a.isMoment=o,a.weekdays=lc,a.parseZone=$b,a.localeData=y,a.isDuration=Ia,a.monthsShort=kc,a.weekdaysMin=nc,a.defineLocale=x,a.weekdaysShort=mc,a.normalizeUnits=A,a.relativeTimeThreshold=Ec;var oe=a;return oe}); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/min/tests.js b/elgg_clean/bower_components/moment/min/tests.js deleted file mode 100644 index 596227ce..00000000 --- a/elgg_clean/bower_components/moment/min/tests.js +++ /dev/null @@ -1,40548 +0,0 @@ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('af'); - - test('parse', function (assert) { - var tests = 'Januarie Jan_Februarie Feb_Maart Mar_April Apr_Mei Mei_Junie Jun_Julie Jul_Augustus Aug_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sondag, Februarie 14de 2010, 3:25:50 nm'], - ['ddd, hA', 'Son, 3NM'], - ['M Mo MM MMMM MMM', '2 2de 02 Februarie Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14de 14'], - ['d do dddd ddd dd', '0 0de Sondag Son So'], - ['DDD DDDo DDDD', '45 45ste 045'], - ['w wo ww', '6 6de 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'nm NM'], - ['[the] DDDo [day of the year]', 'the 45ste day of the year'], - ['LT', '15:25'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 Februarie 2010'], - ['LLL', '14 Februarie 2010 15:25'], - ['LLLL', 'Sondag, 14 Februarie 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 15:25'], - ['llll', 'Son, 14 Feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); - }); - - test('format month', function (assert) { - var expected = 'Januarie Jan_Februarie Feb_Maart Mar_April Apr_Mei Mei_Junie Jun_Julie Jul_Augustus Aug_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Sondag Son So_Maandag Maa Ma_Dinsdag Din Di_Woensdag Woe Wo_Donderdag Don Do_Vrydag Vry Vr_Saterdag Sat Sa'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '\'n paar sekondes', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '\'n minuut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '\'n minuut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minute', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '\'n uur', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '\'n uur', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ure', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ure', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ure', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '\'n dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '\'n dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dae', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '\'n dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dae', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dae', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '\'n maand', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '\'n maand', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '\'n maand', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 maande', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 maande', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 maande', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '\'n maand', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 maande', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '\'n jaar', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaar', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '\'n jaar', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaar', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'oor \'n paar sekondes', 'prefix'); - assert.equal(moment(0).from(30000), '\'n paar sekondes gelede', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), '\'n paar sekondes gelede', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'oor \'n paar sekondes', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'oor 5 dae', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Vandag om 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Vandag om 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Vandag om 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Môre om 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Vandag om 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Gister om 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Laas] dddd [om] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Laas] dddd [om] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Laas] dddd [om] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ar-ma'); - - test('parse', function (assert) { - var tests = 'يناير:يناير_فبراير:فبراير_مارس:مارس_أبريل:أبريل_ماي:ماي_يونيو:يونيو_يوليوز:يوليوز_غشت:غشت_شتنبر:شتنبر_أكتوبر:أكتوبر_نونبر:نونبر_دجنبر:دجنبر'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(':'); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فبراير 14 2010, 3:25:50 pm'], - ['ddd, hA', 'احد, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 فبراير فبراير'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 الأحد احد ح'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LT', '15:25'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 فبراير 2010'], - ['LLL', '14 فبراير 2010 15:25'], - ['LLLL', 'الأحد 14 فبراير 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 فبراير 2010'], - ['lll', '14 فبراير 2010 15:25'], - ['llll', 'احد 14 فبراير 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var expected = 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_ماي ماي_يونيو يونيو_يوليوز يوليوز_غشت غشت_شتنبر شتنبر_أكتوبر أكتوبر_نونبر نونبر_دجنبر دجنبر'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'الأحد احد ح_الإتنين اتنين ن_الثلاثاء ثلاثاء ث_الأربعاء اربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ثوان', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 دقائق', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 دقائق', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ساعات', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ساعات', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ساعات', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 أيام', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 أيام', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 أيام', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 أشهر', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 أشهر', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 أشهر', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 أشهر', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'سنة', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 سنوات', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'سنة', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 سنوات', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'في ثوان', 'prefix'); - assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'منذ ثوان', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'في ثوان', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'في 5 أيام', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'اليوم على الساعة 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم على الساعة 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم على الساعة 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'غدا على الساعة 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم على الساعة 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس على الساعة 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); - assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); - assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); - assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); - assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); - assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); - assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); - assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ar-sa'); - - test('parse', function (assert) { - var tests = 'يناير:يناير_فبراير:فبراير_مارس:مارس_أبريل:أبريل_مايو:مايو_يونيو:يونيو_يوليو:يوليو_أغسطس:أغسطس_سبتمبر:سبتمبر_أكتوبر:أكتوبر_نوفمبر:نوفمبر_ديسمبر:ديسمبر'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month()); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(':'); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد، فبراير ١٤ ٢٠١٠، ٣:٢٥:٥٠ م'], - ['ddd, hA', 'أحد، ٣م'], - ['M Mo MM MMMM MMM', '٢ ٢ ٠٢ فبراير فبراير'], - ['YYYY YY', '٢٠١٠ ١٠'], - ['D Do DD', '١٤ ١٤ ١٤'], - ['d do dddd ddd dd', '٠ ٠ الأحد أحد ح'], - ['DDD DDDo DDDD', '٤٥ ٤٥ ٠٤٥'], - ['w wo ww', '٨ ٨ ٠٨'], - ['h hh', '٣ ٠٣'], - ['H HH', '١٥ ١٥'], - ['m mm', '٢٥ ٢٥'], - ['s ss', '٥٠ ٥٠'], - ['a A', 'م م'], - ['[the] DDDo [day of the year]', 'the ٤٥ day of the year'], - ['LT', '١٥:٢٥'], - ['LTS', '١٥:٢٥:٥٠'], - ['L', '١٤/٠٢/٢٠١٠'], - ['LL', '١٤ فبراير ٢٠١٠'], - ['LLL', '١٤ فبراير ٢٠١٠ ١٥:٢٥'], - ['LLLL', 'الأحد ١٤ فبراير ٢٠١٠ ١٥:٢٥'], - ['l', '١٤/٢/٢٠١٠'], - ['ll', '١٤ فبراير ٢٠١٠'], - ['lll', '١٤ فبراير ٢٠١٠ ١٥:٢٥'], - ['llll', 'أحد ١٤ فبراير ٢٠١٠ ١٥:٢٥'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '١', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '٢', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '٣', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '٤', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '٥', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '٦', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '٧', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '٨', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '٩', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '١٠', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '١١', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '١٢', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '١٣', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '١٤', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '١٥', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '١٦', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '١٧', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '١٨', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '١٩', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '٢٠', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '٢١', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '٢٢', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '٢٣', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '٢٤', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '٢٥', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '٢٦', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '٢٧', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '٢٨', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '٢٩', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '٣٠', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '٣١', '31'); - }); - - test('format month', function (assert) { - var expected = 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_مايو مايو_يونيو يونيو_يوليو يوليو_أغسطس أغسطس_سبتمبر سبتمبر_أكتوبر أكتوبر_نوفمبر نوفمبر_ديسمبر ديسمبر'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'الأحد أحد ح_الإثنين إثنين ن_الثلاثاء ثلاثاء ث_الأربعاء أربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ثوان', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '٢ دقائق', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '٤٤ دقائق', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '٢ ساعات', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '٥ ساعات', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '٢١ ساعات', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '٢ أيام', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '٥ أيام', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '٢٥ أيام', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '٢ أشهر', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '٢ أشهر', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '٣ أشهر', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '٥ أشهر', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'سنة', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '٢ سنوات', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'سنة', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '٥ سنوات', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'في ثوان', 'prefix'); - assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'منذ ثوان', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'في ثوان', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'في ٥ أيام', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'اليوم على الساعة ٠٢:٠٠', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم على الساعة ٠٢:٢٥', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم على الساعة ٠٣:٠٠', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'غدا على الساعة ٠٢:٠٠', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم على الساعة ٠١:٠٠', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس على الساعة ٠٢:٠٠', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); - assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); - assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); - assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); - assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); - - assert.equal(moment('2003 1 6', 'gggg w d').format('YYYY-MM-DD'), '٢٠٠٢-١٢-٢٨', 'Week 1 of 2003 should be Dec 28 2002'); - assert.equal(moment('2003 1 0', 'gggg w e').format('YYYY-MM-DD'), '٢٠٠٢-١٢-٢٨', 'Week 1 of 2003 should be Dec 28 2002'); - assert.equal(moment('2003 1 6', 'gggg w d').format('gggg w d'), '٢٠٠٣ ١ ٦', 'Saturday of week 1 of 2003 parsed should be formatted as 2003 1 6'); - assert.equal(moment('2003 1 0', 'gggg w e').format('gggg w e'), '٢٠٠٣ ١ ٠', '1st day of week 1 of 2003 parsed should be formatted as 2003 1 0'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); - assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); - assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); - assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 31]).format('w ww wo'), '١ ٠١ ١', 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).format('w ww wo'), '١ ٠١ ١', 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '٢ ٠٢ ٢', 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).format('w ww wo'), '٢ ٠٢ ٢', 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '٣ ٠٣ ٣', 'Jan 14 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ar-tn'); - - test('parse', function (assert) { - var tests = 'جانفي:جانفي_فيفري:فيفري_مارس:مارس_أفريل:أفريل_ماي:ماي_جوان:جوان_جويلية:جويلية_أوت:أوت_سبتمبر:سبتمبر_أكتوبر:أكتوبر_نوفمبر:نوفمبر_ديسمبر:ديسمبر'.split('_'), - i; - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(':'); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فيفري 14 2010, 3:25:50 pm'], - ['ddd, hA', 'أحد, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 فيفري فيفري'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 الأحد أحد ح'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '6 6 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LT', '15:25'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 فيفري 2010'], - ['LLL', '14 فيفري 2010 15:25'], - ['LLLL', 'الأحد 14 فيفري 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 فيفري 2010'], - ['lll', '14 فيفري 2010 15:25'], - ['llll', 'أحد 14 فيفري 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var expected = 'جانفي جانفي_فيفري فيفري_مارس مارس_أفريل أفريل_ماي ماي_جوان جوان_جويلية جويلية_أوت أوت_سبتمبر سبتمبر_أكتوبر أكتوبر_نوفمبر نوفمبر_ديسمبر ديسمبر'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'الأحد أحد ح_الإثنين إثنين ن_الثلاثاء ثلاثاء ث_الأربعاء أربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({ - s: 44 - }), true), 'ثوان', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - s: 45 - }), true), 'دقيقة', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - s: 89 - }), true), 'دقيقة', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - s: 90 - }), true), '2 دقائق', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 44 - }), true), '44 دقائق', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 45 - }), true), 'ساعة', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 89 - }), true), 'ساعة', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 90 - }), true), '2 ساعات', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 5 - }), true), '5 ساعات', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 21 - }), true), '21 ساعات', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 22 - }), true), 'يوم', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 35 - }), true), 'يوم', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 36 - }), true), '2 أيام', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 1 - }), true), 'يوم', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 5 - }), true), '5 أيام', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 25 - }), true), '25 أيام', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 26 - }), true), 'شهر', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 30 - }), true), 'شهر', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 43 - }), true), 'شهر', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 46 - }), true), '2 أشهر', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 74 - }), true), '2 أشهر', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 76 - }), true), '3 أشهر', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - M: 1 - }), true), 'شهر', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - M: 5 - }), true), '5 أشهر', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 345 - }), true), 'سنة', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 548 - }), true), '2 سنوات', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - y: 1 - }), true), 'سنة', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - y: 5 - }), true), '5 سنوات', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'في ثوان', 'prefix'); - assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'منذ ثوان', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({ - s: 30 - }).fromNow(), 'في ثوان', 'in a few seconds'); - assert.equal(moment().add({ - d: 5 - }).fromNow(), 'في 5 أيام', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'اليوم على الساعة 02:00', 'today at the same time'); - assert.equal(moment(a).add({ - m: 25 - }).calendar(), 'اليوم على الساعة 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({ - h: 1 - }).calendar(), 'اليوم على الساعة 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({ - d: 1 - }).calendar(), 'غدا على الساعة 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({ - h: 1 - }).calendar(), 'اليوم على الساعة 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({ - d: 1 - }).calendar(), 'أمس على الساعة 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({ - d: i - }); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({ - d: i - }); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({ - w: 1 - }), - weeksFromNow = moment().add({ - w: 1 - }); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({ - w: 2 - }); - weeksFromNow = moment().add({ - w: 2 - }); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ar'); - - var months = [ - 'كانون الثاني يناير', - 'شباط فبراير', - 'آذار مارس', - 'نيسان أبريل', - 'أيار مايو', - 'حزيران يونيو', - 'تموز يوليو', - 'آب أغسطس', - 'أيلول سبتمبر', - 'تشرين الأول أكتوبر', - 'تشرين الثاني نوفمبر', - 'كانون الأول ديسمبر' - ]; - - test('parse', function (assert) { - var tests = months, i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month()); - } - for (i = 0; i < 12; i++) { - equalTest(tests[i], 'MMM', i); - equalTest(tests[i], 'MMM', i); - equalTest(tests[i], 'MMMM', i); - equalTest(tests[i], 'MMMM', i); - equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد، شباط فبراير ١٤ ٢٠١٠، ٣:٢٥:٥٠ م'], - ['ddd, hA', 'أحد، ٣م'], - ['M Mo MM MMMM MMM', '٢ ٢ ٠٢ شباط فبراير شباط فبراير'], - ['YYYY YY', '٢٠١٠ ١٠'], - ['D Do DD', '١٤ ١٤ ١٤'], - ['d do dddd ddd dd', '٠ ٠ الأحد أحد ح'], - ['DDD DDDo DDDD', '٤٥ ٤٥ ٠٤٥'], - ['w wo ww', '٨ ٨ ٠٨'], - ['h hh', '٣ ٠٣'], - ['H HH', '١٥ ١٥'], - ['m mm', '٢٥ ٢٥'], - ['s ss', '٥٠ ٥٠'], - ['a A', 'م م'], - ['[the] DDDo [day of the year]', 'the ٤٥ day of the year'], - ['LT', '١٥:٢٥'], - ['LTS', '١٥:٢٥:٥٠'], - ['L', '١٤/\u200f٢/\u200f٢٠١٠'], - ['LL', '١٤ شباط فبراير ٢٠١٠'], - ['LLL', '١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'], - ['LLLL', 'الأحد ١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'], - ['l', '١٤/\u200f٢/\u200f٢٠١٠'], - ['ll', '١٤ شباط فبراير ٢٠١٠'], - ['lll', '١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'], - ['llll', 'أحد ١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '١', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '٢', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '٣', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '٤', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '٥', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '٦', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '٧', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '٨', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '٩', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '١٠', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '١١', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '١٢', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '١٣', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '١٤', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '١٥', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '١٦', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '١٧', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '١٨', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '١٩', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '٢٠', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '٢١', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '٢٢', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '٢٣', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '٢٤', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '٢٥', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '٢٦', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '٢٧', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '٢٨', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '٢٩', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '٣٠', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '٣١', '31'); - }); - - test('format month', function (assert) { - var expected = months, i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM'), expected[i], expected[i]); - assert.equal(moment([2011, i, 1]).format('MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'الأحد أحد ح_الإثنين إثنين ن_الثلاثاء ثلاثاء ث_الأربعاء أربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '٤٤ ثانية', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة واحدة', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة واحدة', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'دقيقتان', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '٤٤ دقيقة', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة واحدة', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة واحدة', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'ساعتان', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '٥ ساعات', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '٢١ ساعة', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم واحد', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم واحد', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'يومان', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم واحد', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '٥ أيام', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '٢٥ يومًا', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر واحد', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر واحد', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر واحد', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'شهران', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'شهران', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '٣ أشهر', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر واحد', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '٥ أشهر', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'عام واحد', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'عامان', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'عام واحد', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '٥ أعوام', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'بعد ٣٠ ثانية', 'prefix'); - assert.equal(moment(0).from(30000), 'منذ ٣٠ ثانية', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'منذ ثانية واحدة', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'بعد ٣٠ ثانية', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'بعد ٥ أيام', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'اليوم عند الساعة ٠٢:٠٠', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم عند الساعة ٠٢:٢٥', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم عند الساعة ٠٣:٠٠', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'غدًا عند الساعة ٠٢:٠٠', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم عند الساعة ٠١:٠٠', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس عند الساعة ٠٢:٠٠', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); - assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); - assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); - assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); - assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); - - assert.equal(moment('2003 1 6', 'gggg w d').format('YYYY-MM-DD'), '٢٠٠٢-١٢-٢٨', 'Week 1 of 2003 should be Dec 28 2002'); - assert.equal(moment('2003 1 0', 'gggg w e').format('YYYY-MM-DD'), '٢٠٠٢-١٢-٢٨', 'Week 1 of 2003 should be Dec 28 2002'); - assert.equal(moment('2003 1 6', 'gggg w d').format('gggg w d'), '٢٠٠٣ ١ ٦', 'Saturday of week 1 of 2003 parsed should be formatted as 2003 1 6'); - assert.equal(moment('2003 1 0', 'gggg w e').format('gggg w e'), '٢٠٠٣ ١ ٠', '1st day of week 1 of 2003 parsed should be formatted as 2003 1 0'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); - assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); - assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); - assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 31]).format('w ww wo'), '١ ٠١ ١', 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).format('w ww wo'), '١ ٠١ ١', 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '٢ ٠٢ ٢', 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).format('w ww wo'), '٢ ٠٢ ٢', 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '٣ ٠٣ ٣', 'Jan 14 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - - test('no leading zeros in long date formats', function (assert) { - var i, j, longDateStr, shortDateStr; - for (i = 1; i <= 9; ++i) { - for (j = 1; j <= 9; ++j) { - longDateStr = moment([2014, i, j]).format('L'); - shortDateStr = moment([2014, i, j]).format('l'); - assert.equal(longDateStr, shortDateStr, 'should not have leading zeros in month or day'); - } - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('az'); - - test('parse', function (assert) { - var tests = 'yanvar yan_fevral fev_mart mar_Aprel apr_may may_iyun iyn_iyul iyl_Avqust avq_sentyabr sen_oktyabr okt_noyabr noy_dekabr dek'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, D MMMM YYYY, HH:mm:ss', 'Bazar, 14 fevral 2010, 15:25:50'], - ['ddd, A h', 'Baz, gündüz 3'], - ['M Mo MM MMMM MMM', '2 2-nci 02 fevral fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-üncü 14'], - ['d do dddd ddd dd', '0 0-ıncı Bazar Baz Bz'], - ['DDD DDDo DDDD', '45 45-inci 045'], - ['w wo ww', '7 7-nci 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'gündüz gündüz'], - ['[ilin] DDDo [günü]', 'ilin 45-inci günü'], - ['LT', '15:25'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 fevral 2010'], - ['LLL', '14 fevral 2010 15:25'], - ['LLLL', 'Bazar, 14 fevral 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 fev 2010'], - ['lll', '14 fev 2010 15:25'], - ['llll', 'Baz, 14 fev 2010 15:25'] - ], - DDDo = [ - [359, '360-ıncı'], - [199, '200-üncü'], - [149, '150-nci'] - ], - dt = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - DDDoDt, - i; - - for (i = 0; i < a.length; i++) { - assert.equal(dt.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - for (i = 0; i < DDDo.length; i++) { - DDDoDt = moment([2010]); - assert.equal(DDDoDt.add(DDDo[i][0], 'days').format('DDDo'), DDDo[i][1], DDDo[i][0] + ' ---> ' + DDDo[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-inci', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-nci', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-üncü', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-üncü', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-inci', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ncı', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-nci', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-inci', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-uncu', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-uncu', '10th'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-inci', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-nci', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-üncü', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-üncü', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-inci', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ncı', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-nci', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-inci', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-uncu', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-nci', '20th'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-inci', '21th'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-nci', '22th'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-üncü', '23th'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-üncü', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-inci', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ncı', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-nci', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-inci', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-uncu', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-uncu', '30th'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-inci', '31st'); - }); - - test('format month', function (assert) { - var expected = 'yanvar yan_fevral fev_mart mar_aprel apr_may may_iyun iyn_iyul iyl_avqust avq_sentyabr sen_oktyabr okt_noyabr noy_dekabr dek'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Bazar Baz Bz_Bazar ertəsi BzE BE_Çərşənbə axşamı ÇAx ÇA_Çərşənbə Çər Çə_Cümə axşamı CAx CA_Cümə Cüm Cü_Şənbə Şən Şə'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'birneçə saniyyə', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'bir dəqiqə', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'bir dəqiqə', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 dəqiqə', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 dəqiqə', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'bir saat', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'bir saat', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 saat', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 saat', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 saat', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'bir gün', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'bir gün', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 gün', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'bir gün', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 gün', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 gün', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'bir ay', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'bir ay', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ay', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ay', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ay', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'bir ay', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ay', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'bir il', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 il', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'bir il', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 il', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'birneçə saniyyə sonra', 'prefix'); - assert.equal(moment(0).from(30000), 'birneçə saniyyə əvvəl', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'birneçə saniyyə əvvəl', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'birneçə saniyyə sonra', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 gün sonra', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'bugün saat 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'bugün saat 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'bugün saat 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'sabah saat 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'bugün saat 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'dünən 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-inci', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-inci', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-nci', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-nci', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-üncü', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('be'); - - test('parse', function (assert) { - var tests = 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, HH:mm:ss', 'нядзеля, 14-га лютага 2010, 15:25:50'], - ['ddd, h A', 'нд, 3 дня'], - ['M Mo MM MMMM MMM', '2 2-і 02 люты лют'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-га 14'], - ['d do dddd ddd dd', '0 0-ы нядзеля нд нд'], - ['DDD DDDo DDDD', '45 45-ы 045'], - ['w wo ww', '7 7-ы 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'дня дня'], - ['DDDo [дзень года]', '45-ы дзень года'], - ['LT', '15:25'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 лютага 2010 г.'], - ['LLL', '14 лютага 2010 г., 15:25'], - ['LLLL', 'нядзеля, 14 лютага 2010 г., 15:25'], - ['l', '14.2.2010'], - ['ll', '14 лют 2010 г.'], - ['lll', '14 лют 2010 г., 15:25'], - ['llll', 'нд, 14 лют 2010 г., 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format meridiem', function (assert) { - assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ночы', 'night'); - assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'ночы', 'night'); - assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'раніцы', 'morning'); - assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'раніцы', 'morning'); - assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'дня', 'afternoon'); - assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'дня', 'afternoon'); - assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'вечара', 'evening'); - assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'вечара', 'evening'); - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ы', '1-ы'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-і', '2-і'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-і', '3-і'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ы', '4-ы'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ы', '5-ы'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ы', '6-ы'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ы', '7-ы'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ы', '8-ы'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ы', '9-ы'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ы', '10-ы'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ы', '11-ы'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ы', '12-ы'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ы', '13-ы'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ы', '14-ы'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ы', '15-ы'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ы', '16-ы'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ы', '17-ы'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ы', '18-ы'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ы', '19-ы'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ы', '20-ы'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ы', '21-ы'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-і', '22-і'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-і', '23-і'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ы', '24-ы'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ы', '25-ы'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ы', '26-ы'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ы', '27-ы'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ы', '28-ы'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ы', '29-ы'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ы', '30-ы'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ы', '31-ы'); - }); - - test('format month', function (assert) { - var expected = 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format month case', function (assert) { - var months = { - 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), - 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); - assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); - } - }); - - test('format month case with escaped symbols', function (assert) { - var months = { - 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), - 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); - assert.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMMM[</b>]'), '<i>1</i> <b>' + months.accusative[i] + '</b>', '1 <b>' + months.accusative[i] + '</b>'); - assert.equal(moment([2013, i, 1]).format('D[-ы дзень] MMMM'), '1-ы дзень ' + months.accusative[i], '1-ы дзень ' + months.accusative[i]); - assert.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]); - } - }); - - test('format week', function (assert) { - var expected = 'нядзеля нд нд_панядзелак пн пн_аўторак ат ат_серада ср ср_чацвер чц чц_пятніца пт пт_субота сб сб'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'некалькі секунд', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'хвіліна', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'хвіліна', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 хвіліны', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 31}), true), '31 хвіліна', '31 minutes = 31 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 хвіліны', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'гадзіна', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'гадзіна', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 гадзіны', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 гадзін', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 гадзіна', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'дзень', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'дзень', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дні', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'дзень', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дзён', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 дзён', '11 days = 11 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 дзень', '21 days = 21 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дзён', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месяц', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месяц', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месяц', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месяцы', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месяцы', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месяцы', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месяц', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месяцаў', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'год', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 гады', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'год', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 гадоў', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'праз некалькі секунд', 'prefix'); - assert.equal(moment(0).from(30000), 'некалькі секунд таму', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'праз некалькі секунд', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'праз 5 дзён', 'in 5 days'); - assert.equal(moment().add({m: 31}).fromNow(), 'праз 31 хвіліну', 'in 31 minutes = in 31 minutes'); - assert.equal(moment().subtract({m: 31}).fromNow(), '31 хвіліну таму', '31 minutes ago = 31 minutes ago'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Сёння ў 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Сёння ў 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Сёння ў 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Заўтра ў 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Сёння ў 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Учора ў 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - function makeFormat(d) { - return '[У] dddd [ў] LT'; - } - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - case 3: - case 5: - case 6: - return '[У мінулую] dddd [ў] LT'; - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ы', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ы', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-і', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-і', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-і', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('bg'); - - test('parse', function (assert) { - var tests = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, H:mm:ss', 'неделя, февруари 14-ти 2010, 15:25:50'], - ['ddd, hA', 'нед, 3PM'], - ['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-ти 14'], - ['d do dddd ddd dd', '0 0-ев неделя нед нд'], - ['DDD DDDo DDDD', '45 45-ти 045'], - ['w wo ww', '7 7-ми 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45-ти day of the year'], - ['LT', '15:25'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 февруари 2010'], - ['LLL', '14 февруари 2010 15:25'], - ['LLLL', 'неделя, 14 февруари 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 фев 2010'], - ['lll', '14 фев 2010 15:25'], - ['llll', 'нед, 14 фев 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви'); - }); - - test('format month', function (assert) { - var expected = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'неделя нед нд_понеделник пон пн_вторник вто вт_сряда сря ср_четвъртък чет чт_петък пет пт_събота съб сб'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'няколко секунди', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'минута', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'минута', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минути', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минути', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'час', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'час', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 часа', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 часа', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 часа', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ден', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ден', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дни', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ден', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дни', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дни', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месец', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месец', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месец', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месеца', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месеца', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месеца', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месец', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месеца', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'година', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 години', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'година', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 години', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'след няколко секунди', 'prefix'); - assert.equal(moment(0).from(30000), 'преди няколко секунди', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'преди няколко секунди', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'след няколко секунди', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'след 5 дни', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Днес в 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Днес в 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Днес в 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Утре в 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Днес в 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчера в 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [в] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [в] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [в] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ви', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ви', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ри', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ри', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ти', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('bn'); - - test('parse', function (assert) { - var tests = 'জানুয়ারী জানু_ফেবুয়ারী ফেব_মার্চ মার্চ_এপ্রিল এপর_মে মে_জুন জুন_জুলাই জুল_অগাস্ট অগ_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভ_ডিসেম্বর ডিসেম্'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, a h:mm:ss সময়', 'রবিবার, ১৪ ফেবুয়ারী ২০১০, দুপুর ৩:২৫:৫০ সময়'], - ['ddd, a h সময়', 'রবি, দুপুর ৩ সময়'], - ['M Mo MM MMMM MMM', '২ ২ ০২ ফেবুয়ারী ফেব'], - ['YYYY YY', '২০১০ ১০'], - ['D Do DD', '১৪ ১৪ ১৪'], - ['d do dddd ddd dd', '০ ০ রবিবার রবি রব'], - ['DDD DDDo DDDD', '৪৫ ৪৫ ০৪৫'], - ['w wo ww', '৮ ৮ ০৮'], - ['h hh', '৩ ০৩'], - ['H HH', '১৫ ১৫'], - ['m mm', '২৫ ২৫'], - ['s ss', '৫০ ৫০'], - ['a A', 'দুপুর দুপুর'], - ['LT', 'দুপুর ৩:২৫ সময়'], - ['LTS', 'দুপুর ৩:২৫:৫০ সময়'], - ['L', '১৪/০২/২০১০'], - ['LL', '১৪ ফেবুয়ারী ২০১০'], - ['LLL', '১৪ ফেবুয়ারী ২০১০, দুপুর ৩:২৫ সময়'], - ['LLLL', 'রবিবার, ১৪ ফেবুয়ারী ২০১০, দুপুর ৩:২৫ সময়'], - ['l', '১৪/২/২০১০'], - ['ll', '১৪ ফেব ২০১০'], - ['lll', '১৪ ফেব ২০১০, দুপুর ৩:২৫ সময়'], - ['llll', 'রবি, ১৪ ফেব ২০১০, দুপুর ৩:২৫ সময়'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '১', '১'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '২', '২'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '৩', '৩'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '৪', '৪'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '৫', '৫'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '৬', '৬'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '৭', '৭'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '৮', '৮'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '৯', '৯'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '১০', '১০'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '১১', '১১'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '১২', '১২'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '১৩', '১৩'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '১৪', '১৪'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '১৫', '১৫'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '১৬', '১৬'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '১৭', '১৭'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '১৮', '১৮'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '১৯', '১৯'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '২০', '২০'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '২১', '২১'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '২২', '২২'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '২৩', '২৩'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '২৪', '২৪'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '২৫', '২৫'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '২৬', '২৬'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '২৭', '২৭'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '২৮', '२৮'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '২৯', '২৯'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '৩০', '৩০'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '৩১', '৩১'); - }); - - test('format month', function (assert) { - var expected = 'জানুয়ারী জানু_ফেবুয়ারী ফেব_মার্চ মার্চ_এপ্রিল এপর_মে মে_জুন জুন_জুলাই জুল_অগাস্ট অগ_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভ_ডিসেম্বর ডিসেম্'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'রবিবার রবি রব_সোমবার সোম সম_মঙ্গলবার মঙ্গল মঙ্গ_বুধবার বুধ বু_বৃহস্পত্তিবার বৃহস্পত্তি ব্রিহ_শুক্রুবার শুক্রু শু_শনিবার শনি শনি'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'কএক সেকেন্ড', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'এক মিনিট', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'এক মিনিট', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '২ মিনিট', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '৪৪ মিনিট', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'এক ঘন্টা', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'এক ঘন্টা', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '২ ঘন্টা', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '৫ ঘন্টা', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '২১ ঘন্টা', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'এক দিন', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'এক দিন', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '২ দিন', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'এক দিন', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '৫ দিন', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '২৫ দিন', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'এক মাস', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'এক মাস', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '২ মাস', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '২ মাস', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '৩ মাস', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'এক মাস', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '৫ মাস', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'এক বছর', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '২ বছর', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'এক বছর', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '৫ বছর', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'কএক সেকেন্ড পরে', 'prefix'); - assert.equal(moment(0).from(30000), 'কএক সেকেন্ড আগে', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'কএক সেকেন্ড আগে', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'কএক সেকেন্ড পরে', 'কএক সেকেন্ড পরে'); - assert.equal(moment().add({d: 5}).fromNow(), '৫ দিন পরে', '৫ দিন পরে'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'আজ রাত ২:০০ সময়', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'আজ রাত ২:২৫ সময়', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 3}).calendar(), 'আজ সকাল ৫:০০ সময়', 'Now plus 3 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'আগামীকাল রাত ২:০০ সময়', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'আজ রাত ১:০০ সময়', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'গতকাল রাত ২:০০ সময়', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'রাত', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'সকাল', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'দুপুর', 'during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'বিকেল', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'বিকেল', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'রাত', 'night'); - - assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'রাত', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'সকাল', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'দুপুর', ' during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'বিকেল', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'বিকেল', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'রাত', 'night'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '১ ০১ ১', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '১ ০১ ১', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '২ ০২ ২', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '২ ০২ ২', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '৩ ০৩ ৩', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('bo'); - - test('parse', function (assert) { - var tests = 'ཟླ་བ་དང་པོ ཟླ་བ་དང་པོ._ཟླ་བ་གཉིས་པ ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, a h:mm:ss ལ་', 'གཟའ་ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥:༥༠ ལ་'], - ['ddd, a h ལ་', 'ཉི་མ་, ཉིན་གུང ༣ ལ་'], - ['M Mo MM MMMM MMM', '༢ ༢ ༠༢ ཟླ་བ་གཉིས་པ ཟླ་བ་གཉིས་པ'], - ['YYYY YY', '༢༠༡༠ ༡༠'], - ['D Do DD', '༡༤ ༡༤ ༡༤'], - ['d do dddd ddd dd', '༠ ༠ གཟའ་ཉི་མ་ ཉི་མ་ ཉི་མ་'], - ['DDD DDDo DDDD', '༤༥ ༤༥ ༠༤༥'], - ['w wo ww', '༨ ༨ ༠༨'], - ['h hh', '༣ ༠༣'], - ['H HH', '༡༥ ༡༥'], - ['m mm', '༢༥ ༢༥'], - ['s ss', '༥༠ ༥༠'], - ['a A', 'ཉིན་གུང ཉིན་གུང'], - ['LT', 'ཉིན་གུང ༣:༢༥'], - ['LTS', 'ཉིན་གུང ༣:༢༥:༥༠'], - ['L', '༡༤/༠༢/༢༠༡༠'], - ['LL', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠'], - ['LLL', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], - ['LLLL', 'གཟའ་ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], - ['l', '༡༤/༢/༢༠༡༠'], - ['ll', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠'], - ['lll', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], - ['llll', 'ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '༡', '༡'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '༢', '༢'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '༣', '༣'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '༤', '༤'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '༥', '༥'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '༦', '༦'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '༧', '༧'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '༨', '༨'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '༩', '༩'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '༡༠', '༡༠'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '༡༡', '༡༡'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '༡༢', '༡༢'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '༡༣', '༡༣'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '༡༤', '༡༤'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '༡༥', '༡༥'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '༡༦', '༡༦'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '༡༧', '༡༧'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '༡༨', '༡༨'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '༡༩', '༡༩'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '༢༠', '༢༠'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '༢༡', '༢༡'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '༢༢', '༢༢'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '༢༣', '༢༣'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '༢༤', '༢༤'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '༢༥', '༢༥'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '༢༦', '༢༦'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '༢༧', '༢༧'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '༢༨', '༢༨'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '༢༩', '༢༩'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '༣༠', '༣༠'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '༣༡', '༣༡'); - }); - - test('format month', function (assert) { - var expected = 'ཟླ་བ་དང་པོ ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'གཟའ་ཉི་མ་ ཉི་མ་ ཉི་མ་_གཟའ་ཟླ་བ་ ཟླ་བ་ ཟླ་བ་_གཟའ་མིག་དམར་ མིག་དམར་ མིག་དམར་_གཟའ་ལྷག་པ་ ལྷག་པ་ ལྷག་པ་_གཟའ་ཕུར་བུ ཕུར་བུ ཕུར་བུ_གཟའ་པ་སངས་ པ་སངས་ པ་སངས་_གཟའ་སྤེན་པ་ སྤེན་པ་ སྤེན་པ་'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ལམ་སང', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'སྐར་མ་གཅིག', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'སྐར་མ་གཅིག', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '༢ སྐར་མ', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '༤༤ སྐར་མ', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ཆུ་ཚོད་གཅིག', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ཆུ་ཚོད་གཅིག', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '༢ ཆུ་ཚོད', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '༥ ཆུ་ཚོད', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '༢༡ ཆུ་ཚོད', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ཉིན་གཅིག', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ཉིན་གཅིག', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '༢ ཉིན་', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ཉིན་གཅིག', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '༥ ཉིན་', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '༢༥ ཉིན་', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ཟླ་བ་གཅིག', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ཟླ་བ་གཅིག', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ཟླ་བ་གཅིག', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '༢ ཟླ་བ', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '༢ ཟླ་བ', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '༣ ཟླ་བ', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ཟླ་བ་གཅིག', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '༥ ཟླ་བ', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ལོ་གཅིག', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '༢ ལོ', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ལོ་གཅིག', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '༥ ལོ', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'ལམ་སང ལ་', 'prefix'); - assert.equal(moment(0).from(30000), 'ལམ་སང སྔན་ལ', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'ལམ་སང སྔན་ལ', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'ལམ་སང ལ་', 'ལམ་སང ལ་'); - assert.equal(moment().add({d: 5}).fromNow(), '༥ ཉིན་ ལ་', '༥ ཉིན་ ལ་'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'དི་རིང མཚན་མོ ༢:༠༠', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'དི་རིང མཚན་མོ ༢:༢༥', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 3}).calendar(), 'དི་རིང ཞོགས་ཀས ༥:༠༠', 'Now plus 3 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'སང་ཉིན མཚན་མོ ༢:༠༠', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'དི་རིང མཚན་མོ ༡:༠༠', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ཁ་སང མཚན་མོ ༢:༠༠', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'མཚན་མོ', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'ཞོགས་ཀས', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'ཉིན་གུང', 'during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'དགོང་དག', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'དགོང་དག', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'མཚན་མོ', 'night'); - - assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'མཚན་མོ', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'ཞོགས་ཀས', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'ཉིན་གུང', ' during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'དགོང་དག', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'དགོང་དག', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'མཚན་མོ', 'night'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '༡ ༠༡ ༡', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '༡ ༠༡ ༡', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '༢ ༠༢ ༢', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '༢ ༠༢ ༢', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '༣ ༠༣ ༣', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('br'); - - test('parse', function (assert) { - var tests = 'Genver Gen_C\'hwevrer C\'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - moment.locale('br'); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sul, C\'hwevrer 14vet 2010, 3:25:50 pm'], - ['ddd, h A', 'Sul, 3 PM'], - ['M Mo MM MMMM MMM', '2 2vet 02 C\'hwevrer C\'hwe'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14vet 14'], - ['d do dddd ddd dd', '0 0vet Sul Sul Su'], - ['DDD DDDo DDDD', '45 45vet 045'], - ['w wo ww', '6 6vet 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['DDDo [devezh] [ar] [vloaz]', '45vet devezh ar vloaz'], - ['L', '14/02/2010'], - ['LL', '14 a viz C\'hwevrer 2010'], - ['LLL', '14 a viz C\'hwevrer 2010 3e25 PM'], - ['LLLL', 'Sul, 14 a viz C\'hwevrer 2010 3e25 PM'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - moment.locale('br'); - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1añ', '1añ'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2vet', '2vet'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3vet', '3vet'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4vet', '4vet'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5vet', '5vet'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6vet', '6vet'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7vet', '7vet'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8vet', '8vet'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9vet', '9vet'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10vet', '10vet'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11vet', '11vet'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12vet', '12vet'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13vet', '13vet'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14vet', '14vet'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15vet', '15vet'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16vet', '16vet'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17vet', '17vet'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18vet', '18vet'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19vet', '19vet'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20vet', '20vet'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21vet', '21vet'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22vet', '22vet'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23vet', '23vet'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24vet', '24vet'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25vet', '25vet'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26vet', '26vet'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27vet', '27vet'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28vet', '28vet'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29vet', '29vet'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30vet', '30vet'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31vet', '31vet'); - }); - - test('format month', function (assert) { - moment.locale('br'); - var expected = 'Genver Gen_C\'hwevrer C\'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - moment.locale('br'); - var expected = 'Sul Sul Su_Lun Lun Lu_Meurzh Meu Me_Merc\'her Mer Mer_Yaou Yao Ya_Gwener Gwe Gw_Sadorn Sad Sa'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - moment.locale('br'); - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'un nebeud segondennoù', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ur vunutenn', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ur vunutenn', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 vunutenn', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 munutenn', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'un eur', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'un eur', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 eur', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 eur', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 eur', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un devezh', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un devezh', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 zevezh', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un devezh', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 devezh', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 devezh', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ur miz', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ur miz', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ur miz', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 viz', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 viz', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 miz', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ur miz', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 miz', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ur bloaz', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 vloaz', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ur bloaz', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 bloaz', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - moment.locale('br'); - assert.equal(moment(30000).from(0), 'a-benn un nebeud segondennoù', 'prefix'); - assert.equal(moment(0).from(30000), 'un nebeud segondennoù \'zo', 'suffix'); - }); - - test('now from now', function (assert) { - moment.locale('br'); - assert.equal(moment().fromNow(), 'un nebeud segondennoù \'zo', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - moment.locale('br'); - assert.equal(moment().add({s: 30}).fromNow(), 'a-benn un nebeud segondennoù', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'a-benn 5 devezh', 'in 5 days'); - }); - - test('calendar day', function (assert) { - moment.locale('br'); - - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Hiziv da 2e00 AM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hiziv da 2e25 AM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hiziv da 3e00 AM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Warc\'hoazh da 2e00 AM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hiziv da 1e00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Dec\'h da 2e00 AM', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - moment.locale('br'); - - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [da] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [da] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [da] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - moment.locale('br'); - - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [paset da] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [paset da] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [paset da] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - moment.locale('br'); - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('special mutations for years', function (assert) { - moment.locale('br'); - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ur bloaz', 'mutation 1 year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), '2 vloaz', 'mutation 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), '3 bloaz', 'mutation 3 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), '4 bloaz', 'mutation 4 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 bloaz', 'mutation 5 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 9}), true), '9 bloaz', 'mutation 9 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 10}), true), '10 vloaz', 'mutation 10 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), '21 bloaz', 'mutation 21 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 22}), true), '22 vloaz', 'mutation 22 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 133}), true), '133 bloaz', 'mutation 133 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 148}), true), '148 vloaz', 'mutation 148 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 261}), true), '261 bloaz', 'mutation 261 years'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('bs'); - - test('parse', function (assert) { - var tests = 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._august aug._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. februar 2010, 3:25:50 pm'], - ['ddd, hA', 'ned., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14. 02. 2010'], - ['LL', '14. februar 2010'], - ['LLL', '14. februar 2010 15:25'], - ['LLLL', 'nedjelja, 14. februar 2010 15:25'], - ['l', '14. 2. 2010'], - ['ll', '14. feb. 2010'], - ['lll', '14. feb. 2010 15:25'], - ['llll', 'ned., 14. feb. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._august aug._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'par sekundi', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedna minuta', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedna minuta', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mjesec', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mjesec', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mjesec', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mjeseca', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mjeseca', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mjeseca', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mjesec', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mjeseci', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za par sekundi', 'prefix'); - assert.equal(moment(0).from(30000), 'prije par sekundi', 'prefix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'prije par sekundi', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'za par sekundi', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'danas u 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'sutra u 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'jučer u 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ca'); - - test('parse', function (assert) { - var tests = 'gener gen._febrer febr._març mar._abril abr._maig mai._juny jun._juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'diumenge, 14è febrer 2010, 3:25:50 pm'], - ['ddd, hA', 'dg., 3PM'], - ['M Mo MM MMMM MMM', '2 2n 02 febrer febr.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14è 14'], - ['d do dddd ddd dd', '0 0è diumenge dg. Dg'], - ['DDD DDDo DDDD', '45 45è 045'], - ['w wo ww', '6 6a 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45è day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 febrer 2010'], - ['LLL', '14 febrer 2010 15:25'], - ['LLLL', 'diumenge 14 febrer 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 febr. 2010'], - ['lll', '14 febr. 2010 15:25'], - ['llll', 'dg. 14 febr. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1r', '1r'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2n', '2n'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3r', '3r'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4t', '4t'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5è', '5è'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6è', '6è'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7è', '7è'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8è', '8è'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9è', '9è'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10è', '10è'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11è', '11è'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12è', '12è'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13è', '13è'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14è', '14è'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15è', '15è'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16è', '16è'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17è', '17è'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18è', '18è'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19è', '19è'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20è', '20è'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21è', '21è'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22è', '22è'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23è', '23è'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24è', '24è'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25è', '25è'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26è', '26è'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27è', '27è'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28è', '28è'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29è', '29è'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30è', '30è'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31è', '31è'); - }); - - test('format month', function (assert) { - var expected = 'gener gen._febrer febr._març mar._abril abr._maig mai._juny jun._juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'diumenge dg. Dg_dilluns dl. Dl_dimarts dt. Dt_dimecres dc. Dc_dijous dj. Dj_divendres dv. Dv_dissabte ds. Ds'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'uns segons', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuts', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuts', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'una hora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'una hora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hores', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hores', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hores', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un dia', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un dia', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dies', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un dia', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dies', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dies', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mes', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mes', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mes', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesos', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesos', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesos', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mes', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesos', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un any', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anys', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un any', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anys', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'en uns segons', 'prefix'); - assert.equal(moment(0).from(30000), 'fa uns segons', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'fa uns segons', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'en uns segons', 'en uns segons'); - assert.equal(moment().add({d: 5}).fromNow(), 'en 5 dies', 'en 5 dies'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'avui a les 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'avui a les 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'avui a les 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'demà a les 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).add({d: 1, h : -1}).calendar(), 'demà a la 1:00', 'tomorrow minus 1 hour'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'avui a la 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ahir a les 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52a', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1a', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1a', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2a', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2a', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('cs'); - - test('parse', function (assert) { - var tests = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split('_'), i; - function equalTest(input, mmm, monthIndex) { - assert.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss', 'neděle, únor 14. 2010, 3:25:50'], - ['ddd, h', 'ne, 3'], - ['M Mo MM MMMM MMM', '2 2. 02 únor úno'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. neděle ne ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['DDDo [den v roce]', '45. den v roce'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. únor 2010'], - ['LLL', '14. únor 2010 15:25'], - ['LLLL', 'neděle 14. únor 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. úno 2010'], - ['lll', '14. úno 2010 15:25'], - ['llll', 'ne 14. úno 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'neděle ne ne_pondělí po po_úterý út út_středa st st_čtvrtek čt čt_pátek pá pá_sobota so so'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'pár sekund', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuta', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuta', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuty', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minut', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'hodina', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'hodina', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hodiny', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hodin', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hodin', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'den', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'den', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dny', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'den', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dní', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dní', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'měsíc', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'měsíc', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'měsíc', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 měsíce', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 měsíce', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 měsíce', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'měsíc', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 měsíců', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'rok', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 roky', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'rok', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za pár sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'před pár sekundami', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'před pár sekundami', 'now from now should display as in the past'); - }); - - test('fromNow (future)', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'za pár sekund', 'in a few seconds'); - assert.equal(moment().add({m: 1}).fromNow(), 'za minutu', 'in a minute'); - assert.equal(moment().add({m: 3}).fromNow(), 'za 3 minuty', 'in 3 minutes'); - assert.equal(moment().add({m: 10}).fromNow(), 'za 10 minut', 'in 10 minutes'); - assert.equal(moment().add({h: 1}).fromNow(), 'za hodinu', 'in an hour'); - assert.equal(moment().add({h: 3}).fromNow(), 'za 3 hodiny', 'in 3 hours'); - assert.equal(moment().add({h: 10}).fromNow(), 'za 10 hodin', 'in 10 hours'); - assert.equal(moment().add({d: 1}).fromNow(), 'za den', 'in a day'); - assert.equal(moment().add({d: 3}).fromNow(), 'za 3 dny', 'in 3 days'); - assert.equal(moment().add({d: 10}).fromNow(), 'za 10 dní', 'in 10 days'); - assert.equal(moment().add({M: 1}).fromNow(), 'za měsíc', 'in a month'); - assert.equal(moment().add({M: 3}).fromNow(), 'za 3 měsíce', 'in 3 months'); - assert.equal(moment().add({M: 10}).fromNow(), 'za 10 měsíců', 'in 10 months'); - assert.equal(moment().add({y: 1}).fromNow(), 'za rok', 'in a year'); - assert.equal(moment().add({y: 3}).fromNow(), 'za 3 roky', 'in 3 years'); - assert.equal(moment().add({y: 10}).fromNow(), 'za 10 let', 'in 10 years'); - }); - - test('fromNow (past)', function (assert) { - assert.equal(moment().subtract({s: 30}).fromNow(), 'před pár sekundami', 'a few seconds ago'); - assert.equal(moment().subtract({m: 1}).fromNow(), 'před minutou', 'a minute ago'); - assert.equal(moment().subtract({m: 3}).fromNow(), 'před 3 minutami', '3 minutes ago'); - assert.equal(moment().subtract({m: 10}).fromNow(), 'před 10 minutami', '10 minutes ago'); - assert.equal(moment().subtract({h: 1}).fromNow(), 'před hodinou', 'an hour ago'); - assert.equal(moment().subtract({h: 3}).fromNow(), 'před 3 hodinami', '3 hours ago'); - assert.equal(moment().subtract({h: 10}).fromNow(), 'před 10 hodinami', '10 hours ago'); - assert.equal(moment().subtract({d: 1}).fromNow(), 'před dnem', 'a day ago'); - assert.equal(moment().subtract({d: 3}).fromNow(), 'před 3 dny', '3 days ago'); - assert.equal(moment().subtract({d: 10}).fromNow(), 'před 10 dny', '10 days ago'); - assert.equal(moment().subtract({M: 1}).fromNow(), 'před měsícem', 'a month ago'); - assert.equal(moment().subtract({M: 3}).fromNow(), 'před 3 měsíci', '3 months ago'); - assert.equal(moment().subtract({M: 10}).fromNow(), 'před 10 měsíci', '10 months ago'); - assert.equal(moment().subtract({y: 1}).fromNow(), 'před rokem', 'a year ago'); - assert.equal(moment().subtract({y: 3}).fromNow(), 'před 3 lety', '3 years ago'); - assert.equal(moment().subtract({y: 10}).fromNow(), 'před 10 lety', '10 years ago'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'dnes v 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'dnes v 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'dnes v 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'zítra v 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'dnes v 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'včera v 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m, nextDay; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - nextDay = ''; - switch (m.day()) { - case 0: - nextDay = 'v neděli'; - break; - case 1: - nextDay = 'v pondělí'; - break; - case 2: - nextDay = 'v úterý'; - break; - case 3: - nextDay = 've středu'; - break; - case 4: - nextDay = 've čtvrtek'; - break; - case 5: - nextDay = 'v pátek'; - break; - case 6: - nextDay = 'v sobotu'; - break; - } - assert.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m, lastDay; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - lastDay = ''; - switch (m.day()) { - case 0: - lastDay = 'minulou neděli'; - break; - case 1: - lastDay = 'minulé pondělí'; - break; - case 2: - lastDay = 'minulé úterý'; - break; - case 3: - lastDay = 'minulou středu'; - break; - case 4: - lastDay = 'minulý čtvrtek'; - break; - case 5: - lastDay = 'minulý pátek'; - break; - case 6: - lastDay = 'minulou sobotu'; - break; - } - assert.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('humanize duration', function (assert) { - assert.equal(moment.duration(1, 'minutes').humanize(), 'minuta', 'a minute (future)'); - assert.equal(moment.duration(1, 'minutes').humanize(true), 'za minutu', 'in a minute'); - assert.equal(moment.duration(-1, 'minutes').humanize(), 'minuta', 'a minute (past)'); - assert.equal(moment.duration(-1, 'minutes').humanize(true), 'před minutou', 'a minute ago'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('cv'); - - test('parse', function (assert) { - var tests = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'вырсарникун, нарӑс 14-мӗш 2010, 3:25:50 pm'], - ['ddd, hA', 'выр, 3PM'], - ['M Mo MM MMMM MMM', '2 2-мӗш 02 нарӑс нар'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-мӗш 14'], - ['d do dddd ddd dd', '0 0-мӗш вырсарникун выр вр'], - ['DDD DDDo DDDD', '45 45-мӗш 045'], - ['w wo ww', '7 7-мӗш 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['Ҫулӑн DDDo кунӗ', 'Ҫулӑн 45-мӗш кунӗ'], - ['LTS', '15:25:50'], - ['L', '14-02-2010'], - ['LL', '2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ'], - ['LLL', '2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ, 15:25'], - ['LLLL', 'вырсарникун, 2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ, 15:25'], - ['l', '14-2-2010'], - ['ll', '2010 ҫулхи нар уйӑхӗн 14-мӗшӗ'], - ['lll', '2010 ҫулхи нар уйӑхӗн 14-мӗшӗ, 15:25'], - ['llll', 'выр, 2010 ҫулхи нар уйӑхӗн 14-мӗшӗ, 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-мӗш', '1-мӗш'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-мӗш', '2-мӗш'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-мӗш', '3-мӗш'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-мӗш', '4-мӗш'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-мӗш', '5-мӗш'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-мӗш', '6-мӗш'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-мӗш', '7-мӗш'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-мӗш', '8-мӗш'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-мӗш', '9-мӗш'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-мӗш', '10-мӗш'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-мӗш', '11-мӗш'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-мӗш', '12-мӗш'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-мӗш', '13-мӗш'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-мӗш', '14-мӗш'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-мӗш', '15-мӗш'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-мӗш', '16-мӗш'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-мӗш', '17-мӗш'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-мӗш', '18-мӗш'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-мӗш', '19-мӗш'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-мӗш', '20-мӗш'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-мӗш', '21-мӗш'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-мӗш', '22-мӗш'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-мӗш', '23-мӗш'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-мӗш', '24-мӗш'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-мӗш', '25-мӗш'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-мӗш', '26-мӗш'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-мӗш', '27-мӗш'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-мӗш', '28-мӗш'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-мӗш', '29-мӗш'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-мӗш', '30-мӗш'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-мӗш', '31-мӗш'); - }); - - test('format month', function (assert) { - var expected = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'вырсарникун выр вр_тунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кӗҫнерникун кӗҫ кҫ_эрнекун эрн эр_шӑматкун шӑм шм'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'пӗр-ик ҫеккунт', '44 sekunder = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'пӗр минут', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'пӗр минут', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минут', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минут', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'пӗр сехет', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'пӗр сехет', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 сехет', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 сехет', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 сехет', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'пӗр кун', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'пӗр кун', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 кун', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'пӗр кун', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 кун', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 кун', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'пӗр уйӑх', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'пӗр уйӑх', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'пӗр уйӑх', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 уйӑх', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 уйӑх', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 уйӑх', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'пӗр уйӑх', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 уйӑх', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'пӗр ҫул', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ҫул', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'пӗр ҫул', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ҫул', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'пӗр-ик ҫеккунтран', 'prefix'); - assert.equal(moment(0).from(30000), 'пӗр-ик ҫеккунт каялла', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'пӗр-ик ҫеккунт каялла', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'пӗр-ик ҫеккунтран', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 кунран', 'in 5 days'); - assert.equal(moment().add({h: 2}).fromNow(), '2 сехетрен', 'in 2 hours, the right suffix!'); - assert.equal(moment().add({y: 3}).fromNow(), '3 ҫултан', 'in 3 years, the right suffix!'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Паян 02:00 сехетре', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Паян 02:25 сехетре', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Паян 03:00 сехетре', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Ыран 02:00 сехетре', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Паян 01:00 сехетре', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ӗнер 02:00 сехетре', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-мӗш', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-мӗш', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-мӗш', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-мӗш', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-мӗш', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('cy'); - - test('parse', function (assert) { - var tests = 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split('_'), - i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Dydd Sul, Chwefror 14eg 2010, 3:25:50 pm'], - ['ddd, hA', 'Sul, 3PM'], - ['M Mo MM MMMM MMM', '2 2il 02 Chwefror Chwe'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14eg 14'], - ['d do dddd ddd dd', '0 0 Dydd Sul Sul Su'], - ['DDD DDDo DDDD', '45 45ain 045'], - ['w wo ww', '6 6ed 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45ain day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 Chwefror 2010'], - ['LLL', '14 Chwefror 2010 15:25'], - ['LLLL', 'Dydd Sul, 14 Chwefror 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Chwe 2010'], - ['lll', '14 Chwe 2010 15:25'], - ['llll', 'Sul, 14 Chwe 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1af', '1af'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2il', '2il'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3ydd', '3ydd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4ydd', '4ydd'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5ed', '5ed'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6ed', '6ed'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7ed', '7ed'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8fed', '8fed'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9fed', '9fed'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10fed', '10fed'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11eg', '11eg'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12fed', '12fed'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13eg', '13eg'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14eg', '14eg'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15fed', '15fed'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16eg', '16eg'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17eg', '17eg'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18fed', '18fed'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19eg', '19eg'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20fed', '20fed'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ain', '21ain'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ain', '22ain'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ain', '23ain'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ain', '24ain'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ain', '25ain'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ain', '26ain'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ain', '27ain'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ain', '28ain'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ain', '29ain'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ain', '30ain'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ain', '31ain'); - }); - - test('format month', function (assert) { - var expected = 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Dydd Sul Sul Su_Dydd Llun Llun Ll_Dydd Mawrth Maw Ma_Dydd Mercher Mer Me_Dydd Iau Iau Ia_Dydd Gwener Gwe Gw_Dydd Sadwrn Sad Sa'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ychydig eiliadau', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'munud', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'munud', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 munud', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 munud', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'awr', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'awr', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 awr', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 awr', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 awr', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diwrnod', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diwrnod', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 diwrnod', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diwrnod', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 diwrnod', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 diwrnod', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mis', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mis', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mis', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mis', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mis', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mis', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mis', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mis', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'blwyddyn', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 flynedd', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'blwyddyn', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 flynedd', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'mewn ychydig eiliadau', 'prefix'); - assert.equal(moment(0).from(30000), 'ychydig eiliadau yn ôl', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'mewn ychydig eiliadau', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'mewn 5 diwrnod', 'in 5 days'); - }); - - test('same day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Heddiw am 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Heddiw am 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Heddiw am 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Yfory am 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Heddiw am 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ddoe am 02:00', 'yesterday at the same time'); - }); - - test('same next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [am] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [am] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [am] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('same last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('same all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ain', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1af', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1af', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2il', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2il', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('da'); - - test('parse', function (assert) { - var tests = 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd [den] Do MMMM YYYY, h:mm:ss a', 'søndag den 14. februar 2010, 3:25:50 pm'], - ['ddd hA', 'søn 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. søndag søn sø'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[den] DDDo [dag på året]', 'den 45. dag på året'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14. februar 2010'], - ['LLL', '14. februar 2010 15:25'], - ['LLLL', 'søndag d. 14. februar 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14. feb 2010'], - ['lll', '14. feb 2010 15:25'], - ['llll', 'søn d. 14. feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'søndag søn sø_mandag man ma_tirsdag tir ti_onsdag ons on_torsdag tor to_fredag fre fr_lørdag lør lø'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'få sekunder', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'et minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'et minut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutter', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutter', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en time', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en time', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timer', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timer', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timer', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dage', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dage', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dage', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en måned', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en måned', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en måned', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 måneder', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 måneder', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 måneder', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en måned', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 måneder', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'et år', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'et år', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'om få sekunder', 'prefix'); - assert.equal(moment(0).from(30000), 'få sekunder siden', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'få sekunder siden', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'om få sekunder', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dage', 'in 5 days'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('de-at'); - - test('parse', function (assert) { - var tests = 'Jänner Jän._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'], - ['ddd, hA', 'So., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. Sonntag So. So'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. Februar 2010'], - ['LLL', '14. Februar 2010 15:25'], - ['LLLL', 'Sonntag, 14. Februar 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. Febr. 2010'], - ['lll', '14. Febr. 2010 15:25'], - ['llll', 'So., 14. Febr. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'Jänner Jän._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ein paar Sekunden', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eine Minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eine Minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 Minuten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 Minuten', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eine Stunde', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eine Stunde', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 Stunden', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stunden', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 Stunden', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein Tag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein Tag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 Tage', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein Tag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 Tage', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 Tage', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein Monat', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein Monat', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 Monate', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Monate', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 Monate', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein Monat', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 Monate', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ein Jahr', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 Jahre', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ein Jahr', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 Jahre', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in ein paar Sekunden', 'prefix'); - assert.equal(moment(0).from(30000), 'vor ein paar Sekunden', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'in ein paar Sekunden', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'in 5 Tagen', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Heute um 02:00 Uhr', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Heute um 02:25 Uhr', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Heute um 03:00 Uhr', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Morgen um 02:00 Uhr', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Heute um 01:00 Uhr', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Gestern um 02:00 Uhr', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('de'); - - test('parse', function (assert) { - var tests = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'], - ['ddd, hA', 'So., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. Sonntag So. So'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. Februar 2010'], - ['LLL', '14. Februar 2010 15:25'], - ['LLLL', 'Sonntag, 14. Februar 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. Febr. 2010'], - ['lll', '14. Febr. 2010 15:25'], - ['llll', 'So., 14. Febr. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ein paar Sekunden', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eine Minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eine Minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 Minuten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 Minuten', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eine Stunde', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eine Stunde', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 Stunden', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stunden', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 Stunden', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein Tag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein Tag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 Tage', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein Tag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 Tage', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 Tage', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein Monat', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein Monat', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein Monat', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 Monate', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Monate', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 Monate', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein Monat', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 Monate', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ein Jahr', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 Jahre', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ein Jahr', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 Jahre', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in ein paar Sekunden', 'prefix'); - assert.equal(moment(0).from(30000), 'vor ein paar Sekunden', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'in ein paar Sekunden', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'in 5 Tagen', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Heute um 02:00 Uhr', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Heute um 02:25 Uhr', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Heute um 03:00 Uhr', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Morgen um 02:00 Uhr', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Heute um 01:00 Uhr', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Gestern um 02:00 Uhr', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('el'); - - test('parse', function (assert) { - var i, - tests = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split('_'); - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('parse meridiem', function (assert) { - var i, - b = moment(), - meridiemTests = [ - // h a patterns, expected hours, isValid - ['10 πμ', 10, true], - ['10 μμ', 22, true], - ['10 π.μ.', 10, true], - ['10 μ.μ.', 22, true], - ['10 π', 10, true], - ['10 μ', 22, true], - ['10 ΠΜ', 10, true], - ['10 ΜΜ', 22, true], - ['10 Π.Μ.', 10, true], - ['10 Μ.Μ.', 22, true], - ['10 Π', 10, true], - ['10 Μ', 22, true], - ['10 am', 10, false], - ['10 pm', 10, false] - ]; - - // test that a formatted moment including meridiem string can be parsed back to the same moment - assert.ok(b.isSame(moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true), 'seconds'), b.format('h:mm:ss a') + ' should be equal to ' + moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true).format('h:mm:ss a')); - - // test that a formatted moment having a meridiem string can be parsed with strict flag - assert.ok(moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true).isValid(), b.format('h:mm:ss a') + ' should be parsed as valid'); - - for (i = 0; i < meridiemTests.length; i++) { - assert.equal(moment(meridiemTests[i][0], 'h a', 'el', true).hours(), meridiemTests[i][1], moment(meridiemTests[i][0], 'h a', 'el', true).hours() + ' should be ' + meridiemTests[i][1]); - assert.ok(moment(meridiemTests[i][0], 'h a', 'el', true).isValid() === meridiemTests[i][2], meridiemTests[i][0] + ' ----> ' + meridiemTests[i][2]); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Κυριακή, Φεβρουάριος 14η 2010, 3:25:50 μμ'], - ['dddd, D MMMM YYYY, h:mm:ss a', 'Κυριακή, 14 Φεβρουαρίου 2010, 3:25:50 μμ'], - ['ddd, hA', 'Κυρ, 3ΜΜ'], - ['dddd, MMMM YYYY', 'Κυριακή, Φεβρουάριος 2010'], - ['M Mo MM MMMM MMM', '2 2η 02 Φεβρουάριος Φεβ'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14η 14'], - ['d do dddd ddd dd', '0 0η Κυριακή Κυρ Κυ'], - ['DDD DDDo DDDD', '45 45η 045'], - ['w wo ww', '6 6η 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'μμ ΜΜ'], - ['[the] DDDo [day of the year]', 'the 45η day of the year'], - ['LTS', '3:25:50 ΜΜ'], - ['L', '14/02/2010'], - ['LL', '14 Φεβρουαρίου 2010'], - ['LLL', '14 Φεβρουαρίου 2010 3:25 ΜΜ'], - ['LLLL', 'Κυριακή, 14 Φεβρουαρίου 2010 3:25 ΜΜ'], - ['l', '14/2/2010'], - ['ll', '14 Φεβ 2010'], - ['lll', '14 Φεβ 2010 3:25 ΜΜ'], - ['llll', 'Κυρ, 14 Φεβ 2010 3:25 ΜΜ'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1η', '1η'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2η', '2η'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3η', '3η'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4η', '4η'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5η', '5η'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6η', '6η'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7η', '7η'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8η', '8η'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9η', '9η'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10η', '10η'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11η', '11η'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12η', '12η'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13η', '13η'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14η', '14η'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15η', '15η'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16η', '16η'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17η', '17η'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18η', '18η'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19η', '19η'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20η', '20η'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21η', '21η'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22η', '22η'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23η', '23η'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24η', '24η'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25η', '25η'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26η', '26η'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27η', '27η'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28η', '28η'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29η', '29η'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30η', '30η'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31η', '31η'); - }); - - test('format month', function (assert) { - var i, - expected = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var i, - expected = 'Κυριακή Κυρ Κυ_Δευτέρα Δευ Δε_Τρίτη Τρι Τρ_Τετάρτη Τετ Τε_Πέμπτη Πεμ Πε_Παρασκευή Παρ Πα_Σάββατο Σαβ Σα'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'λίγα δευτερόλεπτα', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ένα λεπτό', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ένα λεπτό', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 λεπτά', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 λεπτά', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'μία ώρα', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'μία ώρα', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ώρες', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ώρες', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ώρες', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'μία μέρα', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'μία μέρα', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 μέρες', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'μία μέρα', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 μέρες', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 μέρες', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ένας μήνας', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ένας μήνας', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ένας μήνας', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 μήνες', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 μήνες', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 μήνες', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ένας μήνας', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 μήνες', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ένας χρόνος', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 χρόνια', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ένας χρόνος', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 χρόνια', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'σε λίγα δευτερόλεπτα', 'prefix'); - assert.equal(moment(0).from(30000), 'λίγα δευτερόλεπτα πριν', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'λίγα δευτερόλεπτα πριν', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'σε λίγα δευτερόλεπτα', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'σε 5 μέρες', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Σήμερα στις 2:00 ΠΜ', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Σήμερα στις 2:25 ΠΜ', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Σήμερα στις 3:00 ΠΜ', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Αύριο στις 2:00 ΠΜ', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Σήμερα στη 1:00 ΠΜ', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Χθες στις 2:00 ΠΜ', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [στις] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [στις] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m, dayString; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - dayString = m.day() === 6 ? '[το προηγούμενο Σάββατο]' : '[την προηγούμενη] dddd'; - assert.equal(m.calendar(), m.format(dayString + ' [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT'), 'Today - ' + i + ' days current time'); - m.hours(1).minutes(30).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(dayString + ' [στη] LT'), 'Today - ' + i + ' days one o clock'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(dayString + ' [στις] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(dayString + ' [στις] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 52, 'Dec 31 2006 should be week 52'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 30]).week(), 52, 'Dec 30 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 52, 'Dec 29 2002 should be week 52'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 52, 'Dec 28 2008 should be week 52'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 52, 'Dec 27 2009 should be week 52'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 2]).week(), 53, 'Jan 2 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 9]).week(), 1, 'Jan 9 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 51, 'Dec 26 2010 should be week 51'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 8]).week(), 1, 'Jan 8 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52η', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1η', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1η', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2η', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2η', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('en-au'); - - test('parse', function (assert) { - var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14th 14'], - ['d do dddd ddd dd', '0 0th Sunday Sun Su'], - ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '6 6th 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['LTS', '3:25:50 PM'], - ['L', '14/02/2010'], - ['LL', '14 February 2010'], - ['LLL', '14 February 2010 3:25 PM'], - ['LLLL', 'Sunday, 14 February 2010 3:25 PM'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 3:25 PM'], - ['llll', 'Sun, 14 Feb 2010 3:25 PM'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); - }); - - test('format month', function (assert) { - var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix'); - assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Today at 2:00 AM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 2:25 AM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 3:00 AM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 2:00 AM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 1:00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 2:00 AM', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testStr; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testStr = moment(ordinalStr, 'YYYY MM Do').format('YYYY MM D'); - assert.equal(testStr, '2014 01 ' + i, 'lenient ordinal parsing ' + i); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testStr; - for (i = 1; i <= 31; ++i) { - testStr = moment('2014 01 ' + i, 'YYYY MM Do').format('YYYY MM D'); - assert.equal(testStr, '2014 01 ' + i, - 'lenient ordinal parsing of number ' + i); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MMM Do'); - testMoment = moment(ordinalStr, 'YYYY MMM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('en-ca'); - - test('parse', function (assert) { - var i, - tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'); - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14th 14'], - ['d do dddd ddd dd', '0 0th Sunday Sun Su'], - ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '8 8th 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['L', '2010-02-14'], - ['LTS', '3:25:50 PM'], - ['LL', '14 February, 2010'], - ['LLL', '14 February, 2010 3:25 PM'], - ['LLLL', 'Sunday, 14 February, 2010 3:25 PM'], - ['l', '2010-2-14'], - ['ll', '14 Feb, 2010'], - ['lll', '14 Feb, 2010 3:25 PM'], - ['llll', 'Sun, 14 Feb, 2010 3:25 PM'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); - }); - - test('format month', function (assert) { - var i, - expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var i, - expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix'); - assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Today at 2:00 AM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 2:25 AM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 3:00 AM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 2:00 AM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 1:00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 2:00 AM', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('en-gb'); - - test('parse', function (assert) { - var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14th 14'], - ['d do dddd ddd dd', '0 0th Sunday Sun Su'], - ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '6 6th 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 February 2010'], - ['LLL', '14 February 2010 15:25'], - ['LLLL', 'Sunday, 14 February 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 15:25'], - ['llll', 'Sun, 14 Feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); - }); - - test('format month', function (assert) { - var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix'); - assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Today at 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('en'); - - test('parse', function (assert) { - var i, - tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'); - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14th 14'], - ['d do dddd ddd dd', '0 0th Sunday Sun Su'], - ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '8 8th 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['LTS', '3:25:50 PM'], - ['L', '02/14/2010'], - ['LL', 'February 14, 2010'], - ['LLL', 'February 14, 2010 3:25 PM'], - ['LLLL', 'Sunday, February 14, 2010 3:25 PM'], - ['l', '2/14/2010'], - ['ll', 'Feb 14, 2010'], - ['lll', 'Feb 14, 2010 3:25 PM'], - ['llll', 'Sun, Feb 14, 2010 3:25 PM'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); - }); - - test('format month', function (assert) { - var i, - expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var i, - expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix'); - assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Today at 2:00 AM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 2:25 AM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 3:00 AM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 2:00 AM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 1:00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 2:00 AM', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('eo'); - - test('parse', function (assert) { - var tests = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Dimanĉo, februaro 14a 2010, 3:25:50 p.t.m.'], - ['ddd, hA', 'Dim, 3P.T.M.'], - ['M Mo MM MMMM MMM', '2 2a 02 februaro feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14a 14'], - ['d do dddd ddd dd', '0 0a Dimanĉo Dim Di'], - ['DDD DDDo DDDD', '45 45a 045'], - ['w wo ww', '7 7a 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'p.t.m. P.T.M.'], - ['[la] DDDo [tago] [de] [la] [jaro]', 'la 45a tago de la jaro'], - ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', '14-an de februaro, 2010'], - ['LLL', '14-an de februaro, 2010 15:25'], - ['LLLL', 'Dimanĉo, la 14-an de februaro, 2010 15:25'], - ['l', '2010-2-14'], - ['ll', '14-an de feb, 2010'], - ['lll', '14-an de feb, 2010 15:25'], - ['llll', 'Dim, la 14-an de feb, 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3a', '3a'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4a', '4a'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5a', '5a'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6a', '6a'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7a', '7a'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8a', '8a'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9a', '9a'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10a', '10a'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11a', '11a'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12a', '12a'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13a', '13a'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14a', '14a'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15a', '15a'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16a', '16a'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17a', '17a'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18a', '18a'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19a', '19a'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20a', '20a'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23a', '23a'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24a', '24a'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25a', '25a'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26a', '26a'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27a', '27a'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28a', '28a'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29a', '29a'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30a', '30a'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a'); - }); - - test('format month', function (assert) { - var expected = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Dimanĉo Dim Di_Lundo Lun Lu_Mardo Mard Ma_Merkredo Merk Me_Ĵaŭdo Ĵaŭ Ĵa_Vendredo Ven Ve_Sabato Sab Sa'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'sekundoj', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuto', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuto', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutoj', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutoj', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'horo', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'horo', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horoj', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horoj', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horoj', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'tago', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'tago', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 tagoj', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'tago', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 tagoj', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 tagoj', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'monato', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'monato', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'monato', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 monatoj', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 monatoj', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 monatoj', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'monato', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 monatoj', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'jaro', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaroj', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'jaro', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaroj', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'je sekundoj', 'je prefix'); - assert.equal(moment(0).from(30000), 'antaŭ sekundoj', 'antaŭ prefix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'antaŭ sekundoj', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'je sekundoj', 'je sekundoj'); - assert.equal(moment().add({d: 5}).fromNow(), 'je 5 tagoj', 'je 5 tagoj'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Hodiaŭ je 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hodiaŭ je 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hodiaŭ je 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Morgaŭ je 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hodiaŭ je 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hieraŭ je 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [je] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [je] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [je] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1a', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1a', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2a', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2a', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3a', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('es'); - - test('parse', function (assert) { - var tests = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Febrero 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom., 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 Febrero Feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º Domingo Dom. Do'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '6 6º 06'], - ['YYYY-MMM-DD', '2010-Feb-14'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 de Febrero de 2010'], - ['LLL', '14 de Febrero de 2010 15:25'], - ['LLLL', 'Domingo, 14 de Febrero de 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 de Feb. de 2010'], - ['lll', '14 de Feb. de 2010 15:25'], - ['llll', 'Dom., 14 de Feb. de 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); - }); - - test('format month', function (assert) { - var expected = 'Enero Ene._Febrero Feb._Marzo Mar._Abril Abr._Mayo May._Junio Jun._Julio Jul._Agosto Ago._Septiembre Sep._Octubre Oct._Noviembre Nov._Diciembre Dic.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Domingo Dom. Do_Lunes Lun. Lu_Martes Mar. Ma_Miércoles Mié. Mi_Jueves Jue. Ju_Viernes Vie. Vi_Sábado Sáb. Sá'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'unos segundos', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minuto', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minuto', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'una hora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'una hora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un día', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un día', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 días', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un día', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 días', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 días', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mes', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mes', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mes', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mes', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un año', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 años', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un año', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 años', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'en unos segundos', 'prefix'); - assert.equal(moment(0).from(30000), 'hace unos segundos', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'hace unos segundos', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'en unos segundos', 'en unos segundos'); - assert.equal(moment().add({d: 5}).fromNow(), 'en 5 días', 'en 5 días'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'hoy a las 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'hoy a las 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'hoy a las 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'mañana a las 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).add({d: 1, h : -1}).calendar(), 'mañana a la 1:00', 'tomorrow minus 1 hour'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'hoy a la 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ayer a las 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('et'); - - test('parse', function (assert) { - var tests = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' peaks olema kuu ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, H:mm:ss', 'pühapäev, 14. veebruar 2010, 15:25:50'], - ['ddd, h', 'P, 3'], - ['M Mo MM MMMM MMM', '2 2. 02 veebruar veebr'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. pühapäev P P'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[aasta] DDDo [päev]', 'aasta 45. päev'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. veebruar 2010'], - ['LLL', '14. veebruar 2010 15:25'], - ['LLLL', 'pühapäev, 14. veebruar 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. veebr 2010'], - ['lll', '14. veebr 2010 15:25'], - ['llll', 'P, 14. veebr 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'pühapäev P P_esmaspäev E E_teisipäev T T_kolmapäev K K_neljapäev N N_reede R R_laupäev L L'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'paar sekundit', '44 seconds = paar sekundit'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'üks minut', '45 seconds = üks minut'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'üks minut', '89 seconds = üks minut'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutit', '90 seconds = 2 minutit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutit', '44 minutes = 44 minutit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'üks tund', '45 minutes = tund aega'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'üks tund', '89 minutes = üks tund'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tundi', '90 minutes = 2 tundi'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tundi', '5 hours = 5 tundi'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tundi', '21 hours = 21 tundi'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'üks päev', '22 hours = üks päev'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'üks päev', '35 hours = üks päev'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 päeva', '36 hours = 2 päeva'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'üks päev', '1 day = üks päev'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 päeva', '5 days = 5 päeva'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 päeva', '25 days = 25 päeva'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'üks kuu', '26 days = üks kuu'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'üks kuu', '30 days = üks kuu'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'üks kuu', '43 days = üks kuu'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 kuud', '46 days = 2 kuud'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 kuud', '75 days = 2 kuud'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 kuud', '76 days = 3 kuud'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'üks kuu', '1 month = üks kuu'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 kuud', '5 months = 5 kuud'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'üks aasta', '345 days = üks aasta'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 aastat', '548 days = 2 aastat'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'üks aasta', '1 year = üks aasta'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 aastat', '5 years = 5 aastat'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'mõne sekundi pärast', 'prefix'); - assert.equal(moment(0).from(30000), 'mõni sekund tagasi', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'mõni sekund tagasi', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'mõne sekundi pärast', 'in a few seconds'); - assert.equal(moment().subtract({s: 30}).fromNow(), 'mõni sekund tagasi', 'a few seconds ago'); - - assert.equal(moment().add({m: 1}).fromNow(), 'ühe minuti pärast', 'in a minute'); - assert.equal(moment().subtract({m: 1}).fromNow(), 'üks minut tagasi', 'a minute ago'); - - assert.equal(moment().add({m: 5}).fromNow(), '5 minuti pärast', 'in 5 minutes'); - assert.equal(moment().subtract({m: 5}).fromNow(), '5 minutit tagasi', '5 minutes ago'); - - assert.equal(moment().add({d: 1}).fromNow(), 'ühe päeva pärast', 'in one day'); - assert.equal(moment().subtract({d: 1}).fromNow(), 'üks päev tagasi', 'one day ago'); - - assert.equal(moment().add({d: 5}).fromNow(), '5 päeva pärast', 'in 5 days'); - assert.equal(moment().subtract({d: 5}).fromNow(), '5 päeva tagasi', '5 days ago'); - - assert.equal(moment().add({M: 1}).fromNow(), 'kuu aja pärast', 'in a month'); - assert.equal(moment().subtract({M: 1}).fromNow(), 'kuu aega tagasi', 'a month ago'); - - assert.equal(moment().add({M: 5}).fromNow(), '5 kuu pärast', 'in 5 months'); - assert.equal(moment().subtract({M: 5}).fromNow(), '5 kuud tagasi', '5 months ago'); - - assert.equal(moment().add({y: 1}).fromNow(), 'ühe aasta pärast', 'in a year'); - assert.equal(moment().subtract({y: 1}).fromNow(), 'aasta tagasi', 'a year ago'); - - assert.equal(moment().add({y: 5}).fromNow(), '5 aasta pärast', 'in 5 years'); - assert.equal(moment().subtract({y: 5}).fromNow(), '5 aastat tagasi', '5 years ago'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Täna, 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Täna, 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Täna, 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Homme, 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Täna, 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Eile, 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 nädal tagasi'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '1 nädala pärast'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 nädalat tagasi'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '2 nädala pärast'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('eu'); - - test('parse', function (assert) { - var tests = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'igandea, otsaila 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'ig., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 otsaila ots.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. igandea ig. ig'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', '2010ko otsailaren 14a'], - ['LLL', '2010ko otsailaren 14a 15:25'], - ['LLLL', 'igandea, 2010ko otsailaren 14a 15:25'], - ['l', '2010-2-14'], - ['ll', '2010ko ots. 14a'], - ['lll', '2010ko ots. 14a 15:25'], - ['llll', 'ig., 2010ko ots. 14a 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'igandea ig. ig_astelehena al. al_asteartea ar. ar_asteazkena az. az_osteguna og. og_ostirala ol. ol_larunbata lr. lr'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'segundo batzuk', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minutu bat', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minutu bat', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutu', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutu', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ordu bat', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ordu bat', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ordu', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ordu', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ordu', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'egun bat', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'egun bat', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 egun', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'egun bat', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 egun', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 egun', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'hilabete bat', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'hilabete bat', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'hilabete bat', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 hilabete', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 hilabete', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 hilabete', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'hilabete bat', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 hilabete', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'urte bat', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 urte', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'urte bat', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 urte', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'segundo batzuk barru', 'prefix'); - assert.equal(moment(0).from(30000), 'duela segundo batzuk', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'duela segundo batzuk', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'segundo batzuk barru', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 egun barru', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'gaur 02:00etan', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'gaur 02:25etan', 'now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'gaur 03:00etan', 'now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'bihar 02:00etan', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'gaur 01:00etan', 'now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'atzo 02:00etan', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd LT[etan]'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd LT[etan]'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd LT[etan]'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('fa'); - - test('parse', function (assert) { - var tests = 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month()); - } - for (i = 0; i < 12; i++) { - equalTest(tests[i], 'MMM', i); - equalTest(tests[i], 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'یک\u200cشنبه، فوریه ۱۴م ۲۰۱۰، ۳:۲۵:۵۰ بعد از ظهر'], - ['ddd, hA', 'یک\u200cشنبه، ۳بعد از ظهر'], - ['M Mo MM MMMM MMM', '۲ ۲م ۰۲ فوریه فوریه'], - ['YYYY YY', '۲۰۱۰ ۱۰'], - ['D Do DD', '۱۴ ۱۴م ۱۴'], - ['d do dddd ddd dd', '۰ ۰م یک\u200cشنبه یک\u200cشنبه ی'], - ['DDD DDDo DDDD', '۴۵ ۴۵م ۰۴۵'], - ['w wo ww', '۸ ۸م ۰۸'], - ['h hh', '۳ ۰۳'], - ['H HH', '۱۵ ۱۵'], - ['m mm', '۲۵ ۲۵'], - ['s ss', '۵۰ ۵۰'], - ['a A', 'بعد از ظهر بعد از ظهر'], - ['DDDo [روز سال]', '۴۵م روز سال'], - ['LTS', '۱۵:۲۵:۵۰'], - ['L', '۱۴/۰۲/۲۰۱۰'], - ['LL', '۱۴ فوریه ۲۰۱۰'], - ['LLL', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], - ['LLLL', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], - ['l', '۱۴/۲/۲۰۱۰'], - ['ll', '۱۴ فوریه ۲۰۱۰'], - ['lll', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], - ['llll', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '۱م', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '۲م', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '۳م', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '۴م', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '۵م', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '۶م', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '۷م', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '۸م', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '۹م', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '۱۰م', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '۱۱م', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '۱۲م', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '۱۳م', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '۱۴م', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '۱۵م', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '۱۶م', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '۱۷م', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '۱۸م', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '۱۹م', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '۲۰م', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '۲۱م', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '۲۲م', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '۲۳م', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '۲۴م', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '۲۵م', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '۲۶م', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '۲۷م', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '۲۸م', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '۲۹م', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '۳۰م', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '۳۱م', '31'); - }); - - test('format month', function (assert) { - var expected = 'ژانویه ژانویه_فوریه فوریه_مارس مارس_آوریل آوریل_مه مه_ژوئن ژوئن_ژوئیه ژوئیه_اوت اوت_سپتامبر سپتامبر_اکتبر اکتبر_نوامبر نوامبر_دسامبر دسامبر'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'یک\u200cشنبه یک\u200cشنبه ی_دوشنبه دوشنبه د_سه\u200cشنبه سه\u200cشنبه س_چهارشنبه چهارشنبه چ_پنج\u200cشنبه پنج\u200cشنبه پ_جمعه جمعه ج_شنبه شنبه ش'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'چندین ثانیه', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'یک دقیقه', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'یک دقیقه', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '۲ دقیقه', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '۴۴ دقیقه', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'یک ساعت', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'یک ساعت', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '۲ ساعت', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '۵ ساعت', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '۲۱ ساعت', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'یک روز', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'یک روز', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '۲ روز', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'یک روز', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '۵ روز', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '۲۵ روز', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'یک ماه', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'یک ماه', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'یک ماه', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '۲ ماه', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '۲ ماه', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '۳ ماه', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'یک ماه', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '۵ ماه', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'یک سال', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '۲ سال', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'یک سال', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '۵ سال', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'در چندین ثانیه', 'prefix'); - assert.equal(moment(0).from(30000), 'چندین ثانیه پیش', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'چندین ثانیه پیش', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'در چندین ثانیه', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'در ۵ روز', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'امروز ساعت ۰۲:۰۰', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'امروز ساعت ۰۲:۲۵', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'امروز ساعت ۰۳:۰۰', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'فردا ساعت ۰۲:۰۰', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'امروز ساعت ۰۱:۰۰', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'دیروز ساعت ۰۲:۰۰', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [ساعت] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [ساعت] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [ساعت] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); - assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); - assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); - assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); - assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); - assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); - assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); - assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 31]).format('w ww wo'), '۱ ۰۱ ۱م', 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).format('w ww wo'), '۱ ۰۱ ۱م', 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '۲ ۰۲ ۲م', 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).format('w ww wo'), '۲ ۰۲ ۲م', 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '۳ ۰۳ ۳م', 'Jan 14 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('fi'); - - test('parse', function (assert) { - var tests = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'sunnuntai, helmikuu 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'su, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 helmikuu helmi'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. sunnuntai su su'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[vuoden] DDDo [päivä]', 'vuoden 45. päivä'], - ['LTS', '15.25.50'], - ['L', '14.02.2010'], - ['LL', '14. helmikuuta 2010'], - ['LLL', '14. helmikuuta 2010, klo 15.25'], - ['LLLL', 'sunnuntai, 14. helmikuuta 2010, klo 15.25'], - ['l', '14.2.2010'], - ['ll', '14. helmi 2010'], - ['lll', '14. helmi 2010, klo 15.25'], - ['llll', 'su, 14. helmi 2010, klo 15.25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10th'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20th'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21st'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22nd'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23rd'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30th'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31st'); - }); - - test('format month', function (assert) { - var expected = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'sunnuntai su su_maanantai ma ma_tiistai ti ti_keskiviikko ke ke_torstai to to_perjantai pe pe_lauantai la la'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'muutama sekunti', '44 seconds = few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuutti', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuutti', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'kaksi minuuttia', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuuttia', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'tunti', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'tunti', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'kaksi tuntia', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'viisi tuntia', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tuntia', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'päivä', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'päivä', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'kaksi päivää', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'päivä', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'viisi päivää', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 päivää', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'kuukausi', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'kuukausi', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'kuukausi', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'kaksi kuukautta', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'kaksi kuukautta', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'kolme kuukautta', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'kuukausi', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'viisi kuukautta', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'vuosi', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'kaksi vuotta', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'vuosi', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'viisi vuotta', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'muutaman sekunnin päästä', 'prefix'); - assert.equal(moment(0).from(30000), 'muutama sekunti sitten', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'muutama sekunti sitten', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'muutaman sekunnin päästä', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'viiden päivän päästä', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'tänään klo 02.00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'tänään klo 02.25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'tänään klo 03.00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'huomenna klo 02.00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'tänään klo 01.00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'eilen klo 02.00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [klo] LT'), 'today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [klo] LT'), 'today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [klo] LT'), 'today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), 'today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), 'today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), 'today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'yksi viikko sitten'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'yhden viikon päästä'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'kaksi viikkoa sitten'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'kaden viikon päästä'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('fo'); - - test('parse', function (assert) { - var tests = 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd [tann] Do MMMM YYYY, h:mm:ss a', 'sunnudagur tann 14. februar 2010, 3:25:50 pm'], - ['ddd hA', 'sun 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. sunnudagur sun su'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[tann] DDDo [dagin á árinum]', 'tann 45. dagin á árinum'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 februar 2010'], - ['LLL', '14 februar 2010 15:25'], - ['LLLL', 'sunnudagur 14. februar, 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 feb 2010'], - ['lll', '14 feb 2010 15:25'], - ['llll', 'sun 14. feb, 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'sunnudagur sun su_mánadagur mán má_týsdagur týs tý_mikudagur mik mi_hósdagur hós hó_fríggjadagur frí fr_leygardagur ley le'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'fá sekund', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ein minutt', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ein minutt', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuttir', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuttir', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ein tími', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ein tími', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tímar', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tímar', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tímar', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein dagur', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein dagur', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein dagur', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein mánaði', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein mánaði', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein mánaði', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mánaðir', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mánaðir', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mánaðir', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein mánaði', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mánaðir', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eitt ár', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ár', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eitt ár', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ár', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'um fá sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'fá sekund síðani', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'fá sekund síðani', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'um fá sekund', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'um 5 dagar', 'in 5 days'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('fr-ca'); - - test('parse', function (assert) { - var i, - tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_'); - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14e 2010, 3:25:50 pm'], - ['ddd, hA', 'dim., 3PM'], - ['M Mo MM MMMM MMM', '2 2e 02 février févr.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14e 14'], - ['d do dddd ddd dd', '0 0e dimanche dim. Di'], - ['DDD DDDo DDDD', '45 45e 045'], - ['w wo ww', '8 8e 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45e day of the year'], - ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', '14 février 2010'], - ['LLL', '14 février 2010 15:25'], - ['LLLL', 'dimanche 14 février 2010 15:25'], - ['l', '2010-2-14'], - ['ll', '14 févr. 2010'], - ['lll', '14 févr. 2010 15:25'], - ['llll', 'dim. 14 févr. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2e', '2e'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21e', '21e'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22e', '22e'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31e', '31e'); - }); - - test('format month', function (assert) { - var i, - expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var i, - expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'quelques secondes', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'une minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'une minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'une heure', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'une heure', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 heures', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 heures', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 heures', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un jour', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un jour', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 jours', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un jour', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 jours', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 jours', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mois', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mois', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mois', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mois', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mois', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mois', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mois', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mois', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ans', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ans', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dans quelques secondes', 'prefix'); - assert.equal(moment(0).from(30000), 'il y a quelques secondes', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dans quelques secondes', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'dans 5 jours', 'in 5 days'); - }); - - test('same day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Aujourd\'hui à 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Aujourd\'hui à 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Aujourd\'hui à 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Demain à 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Aujourd\'hui à 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hier à 02:00', 'yesterday at the same time'); - }); - - test('same next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('same last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('same all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1er', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1er', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2e', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2e', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3e', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('fr'); - - test('parse', function (assert) { - var tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_'), - i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14 2010, 3:25:50 pm'], - ['ddd, hA', 'dim., 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 février févr.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 dimanche dim. Di'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '6 6 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 février 2010'], - ['LLL', '14 février 2010 15:25'], - ['LLLL', 'dimanche 14 février 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 févr. 2010'], - ['lll', '14 févr. 2010 15:25'], - ['llll', 'dim. 14 févr. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'quelques secondes', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'une minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'une minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'une heure', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'une heure', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 heures', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 heures', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 heures', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un jour', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un jour', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 jours', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un jour', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 jours', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 jours', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mois', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mois', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mois', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mois', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mois', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mois', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mois', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mois', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ans', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ans', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dans quelques secondes', 'prefix'); - assert.equal(moment(0).from(30000), 'il y a quelques secondes', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dans quelques secondes', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'dans 5 jours', 'in 5 days'); - }); - - test('same day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Aujourd\'hui à 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Aujourd\'hui à 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Aujourd\'hui à 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Demain à 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Aujourd\'hui à 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hier à 02:00', 'yesterday at the same time'); - }); - - test('same next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('same last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('same all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1er', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1er', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('fy'); - - test('parse', function (assert) { - var tests = 'jannewaris jan._febrewaris feb._maart mrt._april apr._maaie mai._juny jun._july jul._augustus aug._septimber sep._oktober okt._novimber nov._desimber des.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, HH:mm:ss', 'snein, febrewaris 14de 2010, 15:25:50'], - ['ddd, HH', 'si., 15'], - ['M Mo MM MMMM MMM', '2 2de 02 febrewaris feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14de 14'], - ['d do dddd ddd dd', '0 0de snein si. Si'], - ['DDD DDDo DDDD', '45 45ste 045'], - ['w wo ww', '6 6de 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45ste day of the year'], - ['LTS', '15:25:50'], - ['L', '14-02-2010'], - ['LL', '14 febrewaris 2010'], - ['LLL', '14 febrewaris 2010 15:25'], - ['LLLL', 'snein 14 febrewaris 2010 15:25'], - ['l', '14-2-2010'], - ['ll', '14 feb. 2010'], - ['lll', '14 feb. 2010 15:25'], - ['llll', 'si. 14 feb. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); - }); - - test('format month', function (assert) { - var expected = 'jannewaris jan._febrewaris feb._maart mrt._april apr._maaie mai_juny jun._july jul._augustus aug._septimber sep._oktober okt._novimber nov._desimber des.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'snein si. Si_moandei mo. Mo_tiisdei ti. Ti_woansdei wo. Wo_tongersdei to. To_freed fr. Fr_sneon so. So'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'in pear sekonden', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ien minút', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ien minút', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuten', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ien oere', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ien oere', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 oeren', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 oeren', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 oeren', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ien dei', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ien dei', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagen', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ien dei', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagen', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagen', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ien moanne', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ien moanne', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ien moanne', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 moannen', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 moannen', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 moannen', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ien moanne', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 moannen', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ien jier', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jierren', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ien jier', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jierren', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'oer in pear sekonden', 'prefix'); - assert.equal(moment(0).from(30000), 'in pear sekonden lyn', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'in pear sekonden lyn', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'oer in pear sekonden', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'oer 5 dagen', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'hjoed om 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'hjoed om 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'hjoed om 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'moarn om 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'hjoed om 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'juster om 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('month abbreviation', function (assert) { - assert.equal(moment([2012, 5, 23]).format('D-MMM-YYYY'), '23-jun-2012', 'format month abbreviation surrounded by dashes should not include a dot'); - assert.equal(moment([2012, 5, 23]).format('D MMM YYYY'), '23 jun. 2012', 'format month abbreviation not surrounded by dashes should include a dot'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('gl'); - - test('parse', function (assert) { - var tests = 'Xaneiro Xan._Febreiro Feb._Marzo Mar._Abril Abr._Maio Mai._Xuño Xuñ._Xullo Xul._Agosto Ago._Setembro Set._Outubro Out._Novembro Nov._Decembro Dec.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Febreiro 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom., 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 Febreiro Feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º Domingo Dom. Do'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '7 7º 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 Febreiro 2010'], - ['LLL', '14 Febreiro 2010 15:25'], - ['LLLL', 'Domingo 14 Febreiro 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Feb. 2010'], - ['lll', '14 Feb. 2010 15:25'], - ['llll', 'Dom. 14 Feb. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); - }); - - test('format month', function (assert) { - var expected = 'Xaneiro Xan._Febreiro Feb._Marzo Mar._Abril Abr._Maio Mai._Xuño Xuñ._Xullo Xul._Agosto Ago._Setembro Set._Outubro Out._Novembro Nov._Decembro Dec.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Domingo Dom. Do_Luns Lun. Lu_Martes Mar. Ma_Mércores Mér. Mé_Xoves Xov. Xo_Venres Ven. Ve_Sábado Sáb. Sá'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'uns segundos', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minuto', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minuto', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'unha hora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'unha hora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un día', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un día', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 días', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un día', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 días', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 días', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mes', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mes', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mes', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mes', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un ano', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anos', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un ano', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anos', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'nuns segundos', 'prefix'); - assert.equal(moment(0).from(30000), 'hai uns segundos', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'hai uns segundos', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'nuns segundos', 'en unos segundos'); - assert.equal(moment().add({d: 5}).fromNow(), 'en 5 días', 'en 5 días'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'hoxe ás 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'hoxe ás 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'hoxe ás 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'mañá ás 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).add({d: 1, h : -1}).calendar(), 'mañá á 1:00', 'tomorrow minus 1 hour'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'hoxe á 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'onte á 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('regression tests', function (assert) { - var lastWeek = moment().subtract({d: 4}).hours(1); - assert.equal(lastWeek.calendar(), lastWeek.format('[o] dddd [pasado a] LT'), '1 o\'clock bug'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1º', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1º', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2º', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3º', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('he'); - - test('parse', function (assert) { - var tests = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'ראשון, פברואר 14 2010, 3:25:50 pm'], - ['ddd, hA', 'א׳, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 פברואר פבר׳'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 ראשון א׳ א'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 בפברואר 2010'], - ['LLL', '14 בפברואר 2010 15:25'], - ['LLLL', 'ראשון, 14 בפברואר 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 פבר׳ 2010'], - ['lll', '14 פבר׳ 2010 15:25'], - ['llll', 'א׳, 14 פבר׳ 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format month', function (assert) { - var expected = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'ראשון א׳ א|שני ב׳ ב|שלישי ג׳ ג|רביעי ד׳ ד|חמישי ה׳ ה|שישי ו׳ ו|שבת ש׳ ש'.split('|'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'מספר שניות', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'דקה', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'דקה', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 דקות', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 דקות', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'שעה', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'שעה', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'שעתיים', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 שעות', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 שעות', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'יום', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'יום', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'יומיים', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'יום', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ימים', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ימים', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'חודש', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'חודש', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'חודש', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'חודשיים', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'חודשיים', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 חודשים', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'חודש', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 חודשים', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'שנה', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'שנתיים', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 3699}), true), '10 שנים', '345 days = 10 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 7340}), true), '20 שנה', '548 days = 20 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'שנה', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 שנים', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'בעוד מספר שניות', 'prefix'); - assert.equal(moment(0).from(30000), 'לפני מספר שניות', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'לפני מספר שניות', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'בעוד מספר שניות', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'בעוד 5 ימים', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'היום ב־02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'היום ב־02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'היום ב־03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'מחר ב־02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'היום ב־01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'אתמול ב־02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('hi'); - - test('parse', function (assert) { - var tests = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, a h:mm:ss बजे', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५:५० बजे'], - ['ddd, a h बजे', 'रवि, दोपहर ३ बजे'], - ['M Mo MM MMMM MMM', '२ २ ०२ फ़रवरी फ़र.'], - ['YYYY YY', '२०१० १०'], - ['D Do DD', '१४ १४ १४'], - ['d do dddd ddd dd', '० ० रविवार रवि र'], - ['DDD DDDo DDDD', '४५ ४५ ०४५'], - ['w wo ww', '८ ८ ०८'], - ['h hh', '३ ०३'], - ['H HH', '१५ १५'], - ['m mm', '२५ २५'], - ['s ss', '५० ५०'], - ['a A', 'दोपहर दोपहर'], - ['LTS', 'दोपहर ३:२५:५० बजे'], - ['L', '१४/०२/२०१०'], - ['LL', '१४ फ़रवरी २०१०'], - ['LLL', '१४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], - ['LLLL', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], - ['l', '१४/२/२०१०'], - ['ll', '१४ फ़र. २०१०'], - ['lll', '१४ फ़र. २०१०, दोपहर ३:२५ बजे'], - ['llll', 'रवि, १४ फ़र. २०१०, दोपहर ३:२५ बजे'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); - }); - - test('format month', function (assert) { - var expected = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'रविवार रवि र_सोमवार सोम सो_मंगलवार मंगल मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'कुछ ही क्षण', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'एक मिनट', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'एक मिनट', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '२ मिनट', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '४४ मिनट', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'एक घंटा', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'एक घंटा', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '२ घंटे', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '५ घंटे', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '२१ घंटे', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'एक दिन', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'एक दिन', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '२ दिन', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'एक दिन', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '५ दिन', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '२५ दिन', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'एक महीने', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'एक महीने', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'एक महीने', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '२ महीने', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '२ महीने', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '३ महीने', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'एक महीने', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '५ महीने', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'एक वर्ष', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '२ वर्ष', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'एक वर्ष', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '५ वर्ष', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'कुछ ही क्षण में', 'prefix'); - assert.equal(moment(0).from(30000), 'कुछ ही क्षण पहले', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'कुछ ही क्षण पहले', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'कुछ ही क्षण में', 'कुछ ही क्षण में'); - assert.equal(moment().add({d: 5}).fromNow(), '५ दिन में', '५ दिन में'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'आज रात २:०० बजे', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'आज रात २:२५ बजे', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 3}).calendar(), 'आज सुबह ५:०० बजे', 'Now plus 3 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'कल रात २:०० बजे', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'आज रात १:०० बजे', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'कल रात २:०० बजे', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('meridiem invariant', function (assert) { - assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'रात', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'सुबह', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'दोपहर', 'during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'शाम', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'शाम', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'रात', 'night'); - - assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'रात', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'सुबह', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'दोपहर', ' during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'शाम', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'शाम', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'रात', 'night'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '१ ०१ १', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '२ ०२ २', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '३ ०३ ३', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('meridiem', function (assert) { - var h, m, t1, t2; - for (h = 0; h < 24; ++h) { - for (m = 0; m < 60; m += 15) { - t1 = moment.utc([2000, 0, 1, h, m]); - t2 = moment(t1.format('A h:mm'), 'A h:mm'); - assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), - 'meridiem at ' + t1.format('HH:mm')); - } - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('hr'); - - test('parse', function (assert) { - var tests = 'siječanj sij._veljača velj._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. veljača 2010, 3:25:50 pm'], - ['ddd, hA', 'ned., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 veljača velj.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14. 02. 2010'], - ['LL', '14. veljača 2010'], - ['LLL', '14. veljača 2010 15:25'], - ['LLLL', 'nedjelja, 14. veljača 2010 15:25'], - ['l', '14. 2. 2010'], - ['ll', '14. velj. 2010'], - ['lll', '14. velj. 2010 15:25'], - ['llll', 'ned., 14. velj. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'siječanj sij._veljača velj._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'par sekundi', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedna minuta', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedna minuta', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mjesec', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mjesec', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mjesec', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mjeseca', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mjeseca', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mjeseca', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mjesec', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mjeseci', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za par sekundi', 'prefix'); - assert.equal(moment(0).from(30000), 'prije par sekundi', 'prefix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'prije par sekundi', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'za par sekundi', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'danas u 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'sutra u 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'jučer u 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('hu'); - - test('parse', function (assert) { - var tests = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split('_'), - i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, HH:mm:ss', 'vasárnap, február 14. 2010, 15:25:50'], - ['ddd, HH', 'vas, 15'], - ['M Mo MM MMMM MMM', '2 2. 02 február feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. vasárnap vas v'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['[az év] DDDo [napja]', 'az év 45. napja'], - ['LTS', '15:25:50'], - ['L', '2010.02.14.'], - ['LL', '2010. február 14.'], - ['LLL', '2010. február 14. 15:25'], - ['LLLL', '2010. február 14., vasárnap 15:25'], - ['l', '2010.2.14.'], - ['ll', '2010. feb 14.'], - ['lll', '2010. feb 14. 15:25'], - ['llll', '2010. feb 14., vas 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 0]).format('a'), 'de', 'am'); - assert.equal(moment([2011, 2, 23, 11, 59]).format('a'), 'de', 'am'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), 'du', 'pm'); - assert.equal(moment([2011, 2, 23, 23, 59]).format('a'), 'du', 'pm'); - - assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), 'DE', 'AM'); - assert.equal(moment([2011, 2, 23, 11, 59]).format('A'), 'DE', 'AM'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'DU', 'PM'); - assert.equal(moment([2011, 2, 23, 23, 59]).format('A'), 'DU', 'PM'); - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'vasárnap vas_hétfő hét_kedd kedd_szerda sze_csütörtök csüt_péntek pén_szombat szo'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'néhány másodperc', '44 másodperc = néhány másodperc'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'egy perc', '45 másodperc = egy perc'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'egy perc', '89 másodperc = egy perc'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 perc', '90 másodperc = 2 perc'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 perc', '44 perc = 44 perc'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'egy óra', '45 perc = egy óra'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'egy óra', '89 perc = egy óra'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 óra', '90 perc = 2 óra'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 óra', '5 óra = 5 óra'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 óra', '21 óra = 21 óra'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'egy nap', '22 óra = egy nap'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'egy nap', '35 óra = egy nap'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 nap', '36 óra = 2 nap'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'egy nap', '1 nap = egy nap'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 nap', '5 nap = 5 nap'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 nap', '25 nap = 25 nap'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'egy hónap', '26 nap = egy hónap'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'egy hónap', '30 nap = egy hónap'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'egy hónap', '45 nap = egy hónap'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 hónap', '46 nap = 2 hónap'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 hónap', '75 nap = 2 hónap'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 hónap', '76 nap = 3 hónap'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'egy hónap', '1 hónap = egy hónap'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 hónap', '5 hónap = 5 hónap'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'egy év', '345 nap = egy év'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 év', '548 nap = 2 év'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'egy év', '1 év = egy év'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 év', '5 év = 5 év'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'néhány másodperc múlva', 'prefix'); - assert.equal(moment(0).from(30000), 'néhány másodperce', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'néhány másodperce', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'néhány másodperc múlva', 'néhány másodperc múlva'); - assert.equal(moment().add({d: 5}).fromNow(), '5 nap múlva', '5 nap múlva'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'ma 2:00-kor', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'ma 2:25-kor', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'ma 3:00-kor', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'holnap 2:00-kor', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'ma 1:00-kor', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'tegnap 2:00-kor', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m, days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_'); - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), 'today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), 'today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), 'today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m, days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_'); - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), 'today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), 'today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), 'today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'egy héte'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'egy hét múlva'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 hete'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '2 hét múlva'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('hy-am'); - - test('parse', function (assert) { - var tests = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('parse exceptional case', function (assert) { - assert.equal(moment('11 մայիսի 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989'); - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, HH:mm:ss', 'կիրակի, 14 փետրվարի 2010, 15:25:50'], - ['ddd, h A', 'կրկ, 3 ցերեկվա'], - ['M Mo MM MMMM MMM', '2 2 02 փետրվար փտր'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 կիրակի կրկ կրկ'], - ['DDD DDDo DDDD', '45 45-րդ 045'], - ['w wo ww', '7 7-րդ 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'ցերեկվա ցերեկվա'], - ['[տարվա] DDDo [օրը]', 'տարվա 45-րդ օրը'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 փետրվարի 2010 թ.'], - ['LLL', '14 փետրվարի 2010 թ., 15:25'], - ['LLLL', 'կիրակի, 14 փետրվարի 2010 թ., 15:25'], - ['l', '14.2.2010'], - ['ll', '14 փտր 2010 թ.'], - ['lll', '14 փտր 2010 թ., 15:25'], - ['llll', 'կրկ, 14 փտր 2010 թ., 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format meridiem', function (assert) { - assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'գիշերվա', 'night'); - assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'գիշերվա', 'night'); - assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'առավոտվա', 'morning'); - assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'առավոտվա', 'morning'); - assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'ցերեկվա', 'afternoon'); - assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'ցերեկվա', 'afternoon'); - assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'երեկոյան', 'evening'); - assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'երեկոյան', 'evening'); - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ին', '1-ին'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-րդ', '2-րդ'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-րդ', '3-րդ'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-րդ', '4-րդ'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-րդ', '5-րդ'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-րդ', '6-րդ'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-րդ', '7-րդ'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-րդ', '8-րդ'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-րդ', '9-րդ'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-րդ', '10-րդ'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-րդ', '11-րդ'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-րդ', '12-րդ'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-րդ', '13-րդ'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-րդ', '14-րդ'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-րդ', '15-րդ'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-րդ', '16-րդ'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-րդ', '17-րդ'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-րդ', '18-րդ'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-րդ', '19-րդ'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-րդ', '20-րդ'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-րդ', '21-րդ'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-րդ', '22-րդ'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-րդ', '23-րդ'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-րդ', '24-րդ'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-րդ', '25-րդ'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-րդ', '26-րդ'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-րդ', '27-րդ'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-րդ', '28-րդ'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-րդ', '29-րդ'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-րդ', '30-րդ'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-րդ', '31-րդ'); - }); - - test('format month', function (assert) { - var expected = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format month case', function (assert) { - var months = { - 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), - 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); - assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); - } - }); - - test('format month short case', function (assert) { - var monthsShort = { - 'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), - 'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); - assert.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.nominative[i]); - } - }); - - test('format month case with escaped symbols', function (assert) { - var months = { - 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), - 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); - assert.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMMM[</b>]'), '<i>1</i> <b>' + months.accusative[i] + '</b>', '1 <b>' + months.accusative[i] + '</b>'); - assert.equal(moment([2013, i, 1]).format('D[-ին օրը] MMMM'), '1-ին օրը ' + months.accusative[i], '1-ին օրը ' + months.accusative[i]); - assert.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]); - } - }); - - test('format month short case with escaped symbols', function (assert) { - var monthsShort = { - 'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), - 'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); - assert.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMM[</b>]'), '<i>1</i> <b>' + monthsShort.accusative[i] + '</b>', '1 <b>' + monthsShort.accusative[i] + '</b>'); - assert.equal(moment([2013, i, 1]).format('D[-ին օրը] MMM'), '1-ին օրը ' + monthsShort.accusative[i], '1-ին օրը ' + monthsShort.accusative[i]); - assert.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]); - } - }); - - test('format week', function (assert) { - var expected = 'կիրակի կրկ կրկ_երկուշաբթի երկ երկ_երեքշաբթի երք երք_չորեքշաբթի չրք չրք_հինգշաբթի հնգ հնգ_ուրբաթ ուրբ ուրբ_շաբաթ շբթ շբթ'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'մի քանի վայրկյան', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'րոպե', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'րոպե', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 րոպե', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 րոպե', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ժամ', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ժամ', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ժամ', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ժամ', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ժամ', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'օր', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'օր', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 օր', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'օր', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 օր', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 օր', '11 days = 11 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 օր', '21 days = 21 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 օր', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ամիս', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ամիս', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ամիս', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ամիս', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ամիս', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ամիս', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ամիս', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ամիս', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'տարի', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 տարի', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'տարի', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 տարի', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'մի քանի վայրկյան հետո', 'prefix'); - assert.equal(moment(0).from(30000), 'մի քանի վայրկյան առաջ', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'մի քանի վայրկյան հետո', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 օր հետո', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'այսօր 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'այսօր 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'այսօր 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'վաղը 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'այսօր 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'երեկ 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - function makeFormat(d) { - return 'dddd [օրը ժամը] LT'; - } - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - return '[անցած] dddd [օրը ժամը] LT'; - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ին', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ին', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-րդ', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-րդ', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-րդ', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('id'); - - test('parse', function (assert) { - var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Minggu, Februari 14 2010, 3:25:50 sore'], - ['ddd, hA', 'Min, 3sore'], - ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Minggu Min Mg'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '7 7 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'sore sore'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15.25.50'], - ['L', '14/02/2010'], - ['LL', '14 Februari 2010'], - ['LLL', '14 Februari 2010 pukul 15.25'], - ['LLLL', 'Minggu, 14 Februari 2010 pukul 15.25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 pukul 15.25'], - ['llll', 'Min, 14 Feb 2010 pukul 15.25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format month', function (assert) { - var expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Minggu Min Mg_Senin Sen Sn_Selasa Sel Sl_Rabu Rab Rb_Kamis Kam Km_Jumat Jum Jm_Sabtu Sab Sb'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'beberapa detik', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'semenit', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'semenit', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 menit', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 menit', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'sejam', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sehari', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dalam beberapa detik', 'prefix'); - assert.equal(moment(0).from(30000), 'beberapa detik yang lalu', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'beberapa detik yang lalu', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa detik', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Hari ini pukul 02.00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 02.25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 03.00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Besok pukul 02.00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 01.00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kemarin pukul 02.00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('meridiem invariant', function (assert) { - var h, m, t1, t2; - for (h = 0; h < 24; ++h) { - for (m = 0; m < 60; m += 15) { - t1 = moment.utc([2000, 0, 1, h, m]); - t2 = moment(t1.format('A h:mm'), 'A h:mm'); - assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), - 'meridiem at ' + t1.format('HH:mm')); - } - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('is'); - - test('parse', function (assert) { - var tests = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'sunnudagur, 14. febrúar 2010, 3:25:50 pm'], - ['ddd, hA', 'sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 febrúar feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. sunnudagur sun Su'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14. febrúar 2010'], - ['LLL', '14. febrúar 2010 kl. 15:25'], - ['LLLL', 'sunnudagur, 14. febrúar 2010 kl. 15:25'], - ['l', '14/2/2010'], - ['ll', '14. feb 2010'], - ['lll', '14. feb 2010 kl. 15:25'], - ['llll', 'sun, 14. feb 2010 kl. 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'sunnudagur sun Su_mánudagur mán Má_þriðjudagur þri Þr_miðvikudagur mið Mi_fimmtudagur fim Fi_föstudagur fös Fö_laugardagur lau La'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nokkrar sekúndur', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'mínúta', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'mínúta', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 mínútur', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 mínútur', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 21}), true), '21 mínúta', '21 minutes = 21 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'klukkustund', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'klukkustund', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 klukkustundir', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 klukkustundir', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 klukkustund', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dagur', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dagur', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dagur', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 dagar', '11 days = 11 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 dagur', '21 days = 21 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mánuður', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mánuður', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mánuður', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mánuðir', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mánuðir', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mánuðir', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mánuður', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mánuðir', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ár', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ár', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ár', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ár', '5 years = 5 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), '21 ár', '21 years = 21 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'eftir nokkrar sekúndur', 'prefix'); - assert.equal(moment(0).from(30000), 'fyrir nokkrum sekúndum síðan', 'suffix'); - assert.equal(moment().subtract({m: 1}).fromNow(), 'fyrir mínútu síðan', 'a minute ago'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'fyrir nokkrum sekúndum síðan', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'eftir nokkrar sekúndur', 'in a few seconds'); - assert.equal(moment().add({m: 1}).fromNow(), 'eftir mínútu', 'in a minute'); - assert.equal(moment().add({d: 5}).fromNow(), 'eftir 5 daga', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'í dag kl. 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'í dag kl. 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'í dag kl. 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'á morgun kl. 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'í dag kl. 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'í gær kl. 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('it'); - - test('parse', function (assert) { - var tests = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domenica, febbraio 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 febbraio feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º Domenica Dom D'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '6 6º 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 febbraio 2010'], - ['LLL', '14 febbraio 2010 15:25'], - ['LLLL', 'Domenica, 14 febbraio 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 feb 2010'], - ['lll', '14 feb 2010 15:25'], - ['llll', 'Dom, 14 feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); - }); - - test('format month', function (assert) { - var expected = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Domenica Dom D_Lunedì Lun L_Martedì Mar Ma_Mercoledì Mer Me_Giovedì Gio G_Venerdì Ven V_Sabato Sab S'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'alcuni secondi', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minuto', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minuto', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuti', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuti', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'un\'ora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'un\'ora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ore', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ore', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ore', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un giorno', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un giorno', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 giorni', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un giorno', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 giorni', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 giorni', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mese', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mese', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mese', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesi', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesi', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesi', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mese', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesi', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un anno', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anni', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un anno', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anni', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in alcuni secondi', 'prefix'); - assert.equal(moment(0).from(30000), 'alcuni secondi fa', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'in alcuni secondi', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'tra 5 giorni', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Oggi alle 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Oggi alle 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Oggi alle 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Domani alle 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Oggi alle 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ieri alle 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [alle] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [alle] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [alle] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m, weekday, datestring; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - // Different date string - weekday = parseInt(m.format('d'), 10); - datestring = (weekday === 0) ? '[la scorsa] dddd [alle] LT' : '[lo scorso] dddd [alle] LT'; - assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ja'); - - test('parse', function (assert) { - var tests = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, a h:mm:ss', '日曜日, 2月 14 2010, 午後 3:25:50'], - ['ddd, Ah', '日, 午後3'], - ['M Mo MM MMMM MMM', '2 2 02 2月 2月'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 日曜日 日 日'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', '午後 午後'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '午後3時25分50秒'], - ['L', '2010/02/14'], - ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日午後3時25分'], - ['LLLL', '2010年2月14日午後3時25分 日曜日'], - ['l', '2010/2/14'], - ['ll', '2010年2月14日'], - ['lll', '2010年2月14日午後3時25分'], - ['llll', '2010年2月14日午後3時25分 日'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format month', function (assert) { - var expected = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = '日曜日 日 日_月曜日 月 月_火曜日 火 火_水曜日 水 水_木曜日 木 木_金曜日 金 金_土曜日 土 土'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '数秒', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1分', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1分', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2分', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44分', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1時間', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1時間', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2時間', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5時間', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21時間', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1日', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1日', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2日', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1日', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5日', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25日', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1ヶ月', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1ヶ月', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1ヶ月', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2ヶ月', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2ヶ月', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3ヶ月', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1ヶ月', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5ヶ月', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1年', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2年', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1年', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5年', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), '数秒後', 'prefix'); - assert.equal(moment(0).from(30000), '数秒前', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), '数秒前', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), '数秒後', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5日後', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), '今日 午前2時0分', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), '今日 午前2時25分', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), '今日 午前3時0分', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), '明日 午前2時0分', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), '今日 午前1時0分', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), '昨日 午前2時0分', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[来週]dddd LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[来週]dddd LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[来週]dddd LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[前週]dddd LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[前週]dddd LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[前週]dddd LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('jv'); - - - test('parse', function (assert) { - var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Minggu, Februari 14 2010, 3:25:50 sonten'], - ['ddd, hA', 'Min, 3sonten'], - ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Minggu Min Mg'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '7 7 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'sonten sonten'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15.25.50'], - ['L', '14/02/2010'], - ['LL', '14 Februari 2010'], - ['LLL', '14 Februari 2010 pukul 15.25'], - ['LLLL', 'Minggu, 14 Februari 2010 pukul 15.25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 pukul 15.25'], - ['llll', 'Min, 14 Feb 2010 pukul 15.25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format month', function (assert) { - var expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Minggu Min Mg_Senen Sen Sn_Seloso Sel Sl_Rebu Reb Rb_Kemis Kem Km_Jemuwah Jem Jm_Septu Sep Sp'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'sawetawis detik', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'setunggal menit', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'setunggal menit', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 menit', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 menit', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'setunggal jam', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'setunggal jam', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sedinten', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sedinten', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dinten', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sedinten', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dinten', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dinten', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sewulan', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sewulan', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sewulan', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 wulan', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 wulan', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 wulan', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sewulan', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 wulan', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setaun', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 taun', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setaun', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 taun', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'wonten ing sawetawis detik', 'prefix'); - assert.equal(moment(0).from(30000), 'sawetawis detik ingkang kepengker', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'sawetawis detik ingkang kepengker', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'wonten ing sawetawis detik', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'wonten ing 5 dinten', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Dinten puniko pukul 02.00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Dinten puniko pukul 02.25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Dinten puniko pukul 03.00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Mbenjang pukul 02.00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Dinten puniko pukul 01.00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kala wingi pukul 02.00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('meridiem invariant', function (assert) { - var h, m, t1, t2; - for (h = 0; h < 24; ++h) { - for (m = 0; m < 60; m += 15) { - t1 = moment.utc([2000, 0, 1, h, m]); - t2 = moment(t1.format('A h:mm'), 'A h:mm'); - assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), - 'meridiem at ' + t1.format('HH:mm')); - } - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ka'); - - test('parse', function (assert) { - var i, - tests = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split('_'); - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' უნდა იყოს თვე ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'კვირა, თებერვალი მე-14 2010, 3:25:50 pm'], - ['ddd, hA', 'კვი, 3PM'], - ['M Mo MM MMMM MMM', '2 მე-2 02 თებერვალი თებ'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 მე-14 14'], - ['d do dddd ddd dd', '0 0 კვირა კვი კვ'], - ['DDD DDDo DDDD', '45 45-ე 045'], - ['w wo ww', '7 მე-7 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['წლის DDDo დღე', 'წლის 45-ე დღე'], - ['LTS', '3:25:50 PM'], - ['L', '14/02/2010'], - ['LL', '14 თებერვალი 2010'], - ['LLL', '14 თებერვალი 2010 3:25 PM'], - ['LLLL', 'კვირა, 14 თებერვალი 2010 3:25 PM'], - ['l', '14/2/2010'], - ['ll', '14 თებ 2010'], - ['lll', '14 თებ 2010 3:25 PM'], - ['llll', 'კვი, 14 თებ 2010 3:25 PM'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ლი', '1-ლი'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), 'მე-2', 'მე-2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), 'მე-3', 'მე-3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), 'მე-4', 'მე-4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), 'მე-5', 'მე-5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), 'მე-6', 'მე-6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), 'მე-7', 'მე-7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), 'მე-8', 'მე-8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), 'მე-9', 'მე-9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), 'მე-10', 'მე-10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), 'მე-11', 'მე-11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), 'მე-12', 'მე-12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), 'მე-13', 'მე-13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), 'მე-14', 'მე-14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), 'მე-15', 'მე-15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), 'მე-16', 'მე-16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), 'მე-17', 'მე-17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), 'მე-18', 'მე-18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), 'მე-19', 'მე-19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), 'მე-20', 'მე-20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ე', '21-ე'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ე', '22-ე'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ე', '23-ე'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ე', '24-ე'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ე', '25-ე'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ე', '26-ე'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ე', '27-ე'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ე', '28-ე'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ე', '29-ე'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ე', '30-ე'); - - assert.equal(moment('2011 40', 'YYYY DDD').format('DDDo'), 'მე-40', 'მე-40'); - assert.equal(moment('2011 50', 'YYYY DDD').format('DDDo'), '50-ე', '50-ე'); - assert.equal(moment('2011 60', 'YYYY DDD').format('DDDo'), 'მე-60', 'მე-60'); - assert.equal(moment('2011 100', 'YYYY DDD').format('DDDo'), 'მე-100', 'მე-100'); - assert.equal(moment('2011 101', 'YYYY DDD').format('DDDo'), '101-ე', '101-ე'); - }); - - test('format month', function (assert) { - var i, - expected = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var i, - expected = 'კვირა კვი კვ_ორშაბათი ორშ ორ_სამშაბათი სამ სა_ოთხშაბათი ოთხ ოთ_ხუთშაბათი ხუთ ხუ_პარასკევი პარ პა_შაბათი შაბ შა'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'რამდენიმე წამი', '44 წამი = რამდენიმე წამი'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'წუთი', '45 წამი = წუთი'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'წუთი', '89 წამი = წუთი'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 წუთი', '90 წამი = 2 წუთი'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 წუთი', '44 წამი = 44 წუთი'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'საათი', '45 წამი = საათი'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'საათი', '89 წამი = საათი'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 საათი', '90 წამი = 2 საათი'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 საათი', '5 საათი = 5 საათი'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 საათი', '21 საათი = 21 საათი'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'დღე', '22 საათი = დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'დღე', '35 საათი = დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 დღე', '36 საათი = 2 დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'დღე', '1 დღე = დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 დღე', '5 დღე = 5 დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 დღე', '25 დღე = 25 დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'თვე', '26 დღე = თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'თვე', '30 დღე = თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'თვე', '45 დღე = თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 თვე', '46 დღე = 2 თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 თვე', '75 დღე = 2 თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 თვე', '76 დღე = 3 თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'თვე', '1 თვე = თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 თვე', '5 თვე = 5 თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'წელი', '345 დღე = წელი'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 წელი', '548 დღე = 2 წელი'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'წელი', '1 წელი = წელი'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 წელი', '5 წელი = 5 წელი'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'რამდენიმე წამში', 'ში სუფიქსი'); - assert.equal(moment(0).from(30000), 'რამდენიმე წამის წინ', 'წინ სუფიქსი'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'რამდენიმე წამის წინ', 'უნდა აჩვენოს როგორც წარსული'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'რამდენიმე წამში', 'რამდენიმე წამში'); - assert.equal(moment().add({d: 5}).fromNow(), '5 დღეში', '5 დღეში'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'დღეს 2:00 AM-ზე', 'დღეს ამავე დროს'); - assert.equal(moment(a).add({m: 25}).calendar(), 'დღეს 2:25 AM-ზე', 'ახლანდელ დროს დამატებული 25 წუთი'); - assert.equal(moment(a).add({h: 1}).calendar(), 'დღეს 3:00 AM-ზე', 'ახლანდელ დროს დამატებული 1 საათი'); - assert.equal(moment(a).add({d: 1}).calendar(), 'ხვალ 2:00 AM-ზე', 'ხვალ ამავე დროს'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'დღეს 1:00 AM-ზე', 'ახლანდელ დროს გამოკლებული 1 საათი'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'გუშინ 2:00 AM-ზე', 'გუშინ ამავე დროს'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), 'დღეს + ' + i + ' დღე ახლანდელ დროს'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), 'დღეს + ' + i + ' დღე დღის დასაწყისში'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), 'დღეს + ' + i + ' დღე დღის დასასრულს'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე ახლანდელ დროს'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე დღის დასაწყისში'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე დღის დასასრულს'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 კვირის წინ'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '1 კვირაში'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 კვირის წინ'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '2 კვირაში'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'დეკ 26 2011 უნდა იყოს კვირა 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'იან 1 2012 უნდა იყოს კვირა 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'იან 2 2012 უნდა იყოს კვირა 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'იან 8 2012 უნდა იყოს კვირა 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'იან 9 2012 უნდა იყოს კვირა 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'იან 1 2007 უნდა იყოს კვირა 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'იან 7 2007 უნდა იყოს კვირა 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'იან 8 2007 უნდა იყოს კვირა 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'იან 14 2007 უნდა იყოს კვირა 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'იან 15 2007 უნდა იყოს კვირა 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'დეკ 31 2007 უნდა იყოს კვირა 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'იან 1 2008 უნდა იყოს კვირა 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'იან 6 2008 უნდა იყოს კვირა 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'იან 7 2008 უნდა იყოს კვირა 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'იან 13 2008 უნდა იყოს კვირა 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'იან 14 2008 უნდა იყოს კვირა 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'დეკ 30 2002 უნდა იყოს კვირა 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'იან 1 2003 უნდა იყოს კვირა 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'იან 5 2003 უნდა იყოს კვირა 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'იან 6 2003 უნდა იყოს კვირა 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'იან 12 2003 უნდა იყოს კვირა 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'იან 13 2003 უნდა იყოს კვირა 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'დეკ 29 2008 უნდა იყოს კვირა 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'იან 1 2009 უნდა იყოს კვირა 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'იან 4 2009 უნდა იყოს კვირა 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'იან 5 2009 უნდა იყოს კვირა 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'იან 11 2009 უნდა იყოს კვირა 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'იან 12 2009 უნდა იყოს კვირა 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'დეკ 28 2009 უნდა იყოს კვირა 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'იან 1 2010 უნდა იყოს კვირა 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'იან 3 2010 უნდა იყოს კვირა 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'იან 4 2010 უნდა იყოს კვირა 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'იან 10 2010 უნდა იყოს კვირა 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'იან 11 2010 უნდა იყოს კვირა 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'დეკ 27 2010 უნდა იყოს კვირა 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'იან 1 2011 უნდა იყოს კვირა 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'იან 2 2011 უნდა იყოს კვირა 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'იან 3 2011 უნდა იყოს კვირა 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'იან 9 2011 უნდა იყოს კვირა 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'იან 10 2011 უნდა იყოს კვირა 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ლი', 'დეკ 26 2011 უნდა იყოს კვირა 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ლი', 'იან 1 2012 უნდა იყოს კვირა 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 მე-2', 'იან 2 2012 უნდა იყოს კვირა 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 მე-2', 'იან 8 2012 უნდა იყოს კვირა 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 მე-3', 'იან 9 2012 უნდა იყოს კვირა 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('km'); - - test('parse', function (assert) { - var tests = 'មករា មករា_កុម្ភៈ កុម្ភៈ_មិនា មិនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split('_'), - i; - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'អាទិត្យ, កុម្ភៈ 14 2010, 3:25:50 pm'], - ['ddd, hA', 'អាទិត្យ, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 កុម្ភៈ កុម្ភៈ'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 អាទិត្យ អាទិត្យ អាទិត្យ'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '6 6 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 កុម្ភៈ 2010'], - ['LLL', '14 កុម្ភៈ 2010 15:25'], - ['LLLL', 'អាទិត្យ, 14 កុម្ភៈ 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 កុម្ភៈ 2010'], - ['lll', '14 កុម្ភៈ 2010 15:25'], - ['llll', 'អាទិត្យ, 14 កុម្ភៈ 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10th'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20th'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21st'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22nd'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23rd'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30th'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31st'); - }); - - test('format month', function (assert) { - var expected = 'មករា មករា_កុម្ភៈ កុម្ភៈ_មិនា មិនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'អាទិត្យ អាទិត្យ អាទិត្យ_ច័ន្ទ ច័ន្ទ ច័ន្ទ_អង្គារ អង្គារ អង្គារ_ពុធ ពុធ ពុធ_ព្រហស្បតិ៍ ព្រហស្បតិ៍ ព្រហស្បតិ៍_សុក្រ សុក្រ សុក្រ_សៅរ៍ សៅរ៍ សៅរ៍'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ប៉ុន្មានវិនាទី', '44 seconds = ប៉ុន្មានវិនាទី'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'មួយនាទី', '45 seconds = មួយនាទី'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'មួយនាទី', '89 seconds = មួយនាទី'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 នាទី', '90 seconds = 2 នាទី'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 នាទី', '44 minutes = 44 នាទី'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'មួយម៉ោង', '45 minutes = មួយម៉ោង'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'មួយម៉ោង', '89 minutes = មួយម៉ោង'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ម៉ោង', '90 minutes = 2 ម៉ោង'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ម៉ោង', '5 hours = 5 ម៉ោង'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ម៉ោង', '21 hours = 21 ម៉ោង'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'មួយថ្ងៃ', '22 hours = មួយថ្ងៃ'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'មួយថ្ងៃ', '35 hours = មួយថ្ងៃ'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ថ្ងៃ', '36 hours = 2 ថ្ងៃ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'មួយថ្ងៃ', '1 day = មួយថ្ងៃ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ថ្ងៃ', '5 days = 5 ថ្ងៃ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ថ្ងៃ', '25 days = 25 ថ្ងៃ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'មួយខែ', '26 days = មួយខែ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'មួយខែ', '30 days = មួយខែ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'មួយខែ', '43 days = មួយខែ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ខែ', '46 days = 2 ខែ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ខែ', '75 days = 2 ខែ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ខែ', '76 days = 3 ខែ'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'មួយខែ', '1 month = មួយខែ'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ខែ', '5 months = 5 ខែ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'មួយឆ្នាំ', '345 days = មួយឆ្នាំ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ឆ្នាំ', '548 days = 2 ឆ្នាំ'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'មួយឆ្នាំ', '1 year = មួយឆ្នាំ'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ឆ្នាំ', '5 years = 5 ឆ្នាំ'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'ប៉ុន្មានវិនាទីទៀត', 'prefix'); - assert.equal(moment(0).from(30000), 'ប៉ុន្មានវិនាទីមុន', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'ប៉ុន្មានវិនាទីមុន', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({ - s: 30 - }).fromNow(), 'ប៉ុន្មានវិនាទីទៀត', 'in a few seconds'); - assert.equal(moment().add({ - d: 5 - }).fromNow(), '5 ថ្ងៃទៀត', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'ថ្ងៃនៈ ម៉ោង 02:00', 'today at the same time'); - assert.equal(moment(a).add({ - m: 25 - }).calendar(), 'ថ្ងៃនៈ ម៉ោង 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({ - h: 1 - }).calendar(), 'ថ្ងៃនៈ ម៉ោង 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({ - d: 1 - }).calendar(), 'ស្អែក ម៉ោង 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({ - h: 1 - }).calendar(), 'ថ្ងៃនៈ ម៉ោង 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({ - d: 1 - }).calendar(), 'ម្សិលមិញ ម៉ោង 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({ - d: i - }); - assert.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ - d: i - }); - assert.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({ - w: 1 - }), - weeksFromNow = moment().add({ - w: 1 - }); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({ - w: 2 - }); - weeksFromNow = moment().add({ - w: 2 - }); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ko'); - - test('parse', function (assert) { - var tests = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('parse meridiem', function (assert) { - var elements = [{ - expression : '1981년 9월 8일 오후 2시 30분', - inputFormat : 'YYYY[년] M[월] D[일] A h[시] m[분]', - outputFormat : 'A', - expected : '오후' - }, { - expression : '1981년 9월 8일 오전 2시 30분', - inputFormat : 'YYYY[년] M[월] D[일] A h[시] m[분]', - outputFormat : 'A h시', - expected : '오전 2시' - }, { - expression : '14시 30분', - inputFormat : 'H[시] m[분]', - outputFormat : 'A', - expected : '오후' - }, { - expression : '오후 4시', - inputFormat : 'A h[시]', - outputFormat : 'H', - expected : '16' - }], i, l, it, actual; - - - for (i = 0, l = elements.length; i < l; ++i) { - it = elements[i]; - actual = moment(it.expression, it.inputFormat).format(it.outputFormat); - - assert.equal( - actual, - it.expected, - '\'' + it.outputFormat + '\' of \'' + it.expression + '\' must be \'' + it.expected + '\' but was \'' + actual + '\'.' - ); - } - }); - - test('format', function (assert) { - var a = [ - ['YYYY년 MMMM Do dddd a h:mm:ss', '2010년 2월 14일 일요일 오후 3:25:50'], - ['ddd A h', '일 오후 3'], - ['M Mo MM MMMM MMM', '2 2일 02 2월 2월'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14일 14'], - ['d do dddd ddd dd', '0 0일 일요일 일 일'], - ['DDD DDDo DDDD', '45 45일 045'], - ['w wo ww', '8 8일 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', '오후 오후'], - ['일년 중 DDDo째 되는 날', '일년 중 45일째 되는 날'], - ['LTS', '오후 3시 25분 50초'], - ['L', '2010.02.14'], - ['LL', '2010년 2월 14일'], - ['LLL', '2010년 2월 14일 오후 3시 25분'], - ['LLLL', '2010년 2월 14일 일요일 오후 3시 25분'], - ['l', '2010.2.14'], - ['ll', '2010년 2월 14일'], - ['lll', '2010년 2월 14일 오후 3시 25분'], - ['llll', '2010년 2월 14일 일 오후 3시 25분'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1일', '1일'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2일', '2일'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3일', '3일'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4일', '4일'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5일', '5일'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6일', '6일'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7일', '7일'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8일', '8일'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9일', '9일'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10일', '10일'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11일', '11일'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12일', '12일'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13일', '13일'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14일', '14일'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15일', '15일'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16일', '16일'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17일', '17일'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18일', '18일'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19일', '19일'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20일', '20일'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21일', '21일'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22일', '22일'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23일', '23일'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24일', '24일'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25일', '25일'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26일', '26일'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27일', '27일'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28일', '28일'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29일', '29일'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30일', '30일'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31일', '31일'); - }); - - test('format month', function (assert) { - var expected = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = '일요일 일 일_월요일 월 월_화요일 화 화_수요일 수 수_목요일 목 목_금요일 금 금_토요일 토 토'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '몇초', '44초 = 몇초'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '일분', '45초 = 일분'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '일분', '89초 = 일분'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2분', '90초 = 2분'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44분', '44분 = 44분'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '한시간', '45분 = 한시간'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '한시간', '89분 = 한시간'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2시간', '90분 = 2시간'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5시간', '5시간 = 5시간'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21시간', '21시간 = 21시간'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '하루', '22시간 = 하루'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '하루', '35시간 = 하루'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2일', '36시간 = 2일'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '하루', '하루 = 하루'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5일', '5일 = 5일'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25일', '25일 = 25일'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '한달', '26일 = 한달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '한달', '30일 = 한달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '한달', '45일 = 한달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2달', '46일 = 2달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2달', '75일 = 2달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3달', '76일 = 3달'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '한달', '1달 = 한달'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5달', '5달 = 5달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '일년', '345일 = 일년'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2년', '548일 = 2년'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '일년', '일년 = 일년'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5년', '5년 = 5년'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), '몇초 후', 'prefix'); - assert.equal(moment(0).from(30000), '몇초 전', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), '몇초 전', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), '몇초 후', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5일 후', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), '오늘 오전 2시 0분', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), '오늘 오전 2시 25분', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), '오늘 오전 3시 0분', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), '내일 오전 2시 0분', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), '오늘 오전 1시 0분', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), '어제 오전 2시 0분', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('지난주 dddd LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('지난주 dddd LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('지난주 dddd LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1일', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1일', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2일', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2일', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3일', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('lb'); - - test('parse', function (assert) { - var tests = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, HH:mm:ss', 'Sonndeg, 14. Februar 2010, 15:25:50'], - ['ddd, HH:mm', 'So., 15:25'], - ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. Sonndeg So. So'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50 Auer'], - ['L', '14.02.2010'], - ['LL', '14. Februar 2010'], - ['LLL', '14. Februar 2010 15:25 Auer'], - ['LLLL', 'Sonndeg, 14. Februar 2010 15:25 Auer'], - ['l', '14.2.2010'], - ['ll', '14. Febr. 2010'], - ['lll', '14. Febr. 2010 15:25 Auer'], - ['llll', 'So., 14. Febr. 2010 15:25 Auer'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format month', function (assert) { - var expected = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Sonndeg So. So_Méindeg Mé. Mé_Dënschdeg Dë. Dë_Mëttwoch Më. Më_Donneschdeg Do. Do_Freideg Fr. Fr_Samschdeg Sa. Sa'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'e puer Sekonnen', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eng Minutt', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eng Minutt', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 Minutten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 Minutten', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eng Stonn', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eng Stonn', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 Stonnen', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stonnen', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 Stonnen', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'een Dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'een Dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 Deeg', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'een Dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 Deeg', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 Deeg', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ee Mount', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ee Mount', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ee Mount', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 Méint', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Méint', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 Méint', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ee Mount', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 Méint', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ee Joer', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 Joer', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ee Joer', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 Joer', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'an e puer Sekonnen', 'prefix'); - assert.equal(moment(0).from(30000), 'virun e puer Sekonnen', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'an e puer Sekonnen', 'in a few seconds'); - assert.equal(moment().add({d: 1}).fromNow(), 'an engem Dag', 'in one day'); - assert.equal(moment().add({d: 2}).fromNow(), 'an 2 Deeg', 'in 2 days'); - assert.equal(moment().add({d: 3}).fromNow(), 'an 3 Deeg', 'in 3 days'); - assert.equal(moment().add({d: 4}).fromNow(), 'a 4 Deeg', 'in 4 days'); - assert.equal(moment().add({d: 5}).fromNow(), 'a 5 Deeg', 'in 5 days'); - assert.equal(moment().add({d: 6}).fromNow(), 'a 6 Deeg', 'in 6 days'); - assert.equal(moment().add({d: 7}).fromNow(), 'a 7 Deeg', 'in 7 days'); - assert.equal(moment().add({d: 8}).fromNow(), 'an 8 Deeg', 'in 8 days'); - assert.equal(moment().add({d: 9}).fromNow(), 'an 9 Deeg', 'in 9 days'); - assert.equal(moment().add({d: 10}).fromNow(), 'an 10 Deeg', 'in 10 days'); - assert.equal(moment().add({y: 100}).fromNow(), 'an 100 Joer', 'in 100 years'); - assert.equal(moment().add({y: 400}).fromNow(), 'a 400 Joer', 'in 400 years'); - }); - - test('calendar last week', function (assert) { - var i, m, weekday, datestring; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - - // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) - weekday = parseInt(m.format('d'), 10); - datestring = (weekday === 2 || weekday === 4 ? '[Leschten] dddd [um] LT' : '[Leschte] dddd [um] LT'); - - assert.equal(m.calendar(), m.format(datestring), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(datestring), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(datestring), 'Today + ' + i + ' days end of day'); - } - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('lt'); - - test('parse', function (assert) { - var tests = 'sausis sau_vasaris vas_kovas kov_balandis bal_gegužė geg_birželis bir_liepa lie_rugpjūtis rgp_rugsėjis rgs_spalis spa_lapkritis lap_gruodis grd'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'sekmadienis, 14-oji vasario 2010, 3:25:50 pm'], - ['ddd, hA', 'Sek, 3PM'], - ['M Mo MM MMMM MMM', '2 2-oji 02 vasaris vas'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-oji 14'], - ['d do dddd ddd dd', '0 0-oji sekmadienis Sek S'], - ['DDD DDDo DDDD', '45 45-oji 045'], - ['w wo ww', '6 6-oji 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['DDDo [metų diena]', '45-oji metų diena'], - ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', '2010 m. vasaris 14 d.'], - ['LLL', '2010 m. vasaris 14 d., 15:25 val.'], - ['LLLL', '2010 m. vasaris 14 d., sekmadienis, 15:25 val.'], - ['l', '2010-02-14'], - ['ll', '2010 m. vasaris 14 d.'], - ['lll', '2010 m. vasaris 14 d., 15:25 val.'], - ['llll', '2010 m. vasaris 14 d., Sek, 15:25 val.'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-oji', '1-oji'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-oji', '2-oji'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-oji', '3-oji'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-oji', '4-oji'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-oji', '5-oji'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-oji', '6-oji'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-oji', '7-oji'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-oji', '8-oji'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-oji', '9-oji'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-oji', '10-oji'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-oji', '11-oji'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-oji', '12-oji'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-oji', '13-oji'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-oji', '14-oji'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-oji', '15-oji'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-oji', '16-oji'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-oji', '17-oji'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-oji', '18-oji'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-oji', '19-oji'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-oji', '20-oji'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-oji', '21-oji'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-oji', '22-oji'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-oji', '23-oji'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-oji', '24-oji'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-oji', '25-oji'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-oji', '26-oji'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-oji', '27-oji'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-oji', '28-oji'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-oji', '29-oji'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-oji', '30-oji'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-oji', '31-oji'); - }); - - test('format month', function (assert) { - var expected = 'sausis sau_vasaris vas_kovas kov_balandis bal_gegužė geg_birželis bir_liepa lie_rugpjūtis rgp_rugsėjis rgs_spalis spa_lapkritis lap_gruodis grd'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('format week on US calendar', function (assert) { - // Tests, whether the weekday names are correct, even if the week does not start on Monday - moment.locale('lt', {week: {dow: 0, doy: 6}}); - var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - moment.locale('lt', {week: {dow: 1, doy: 4}}); - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'kelios sekundės', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minutė', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minutė', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutės', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 10}), true), '10 minučių', '10 minutes = 10 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 11}), true), '11 minučių', '11 minutes = 11 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 19}), true), '19 minučių', '19 minutes = 19 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 20}), true), '20 minučių', '20 minutes = 20 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutės', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'valanda', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'valanda', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 valandos', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 valandos', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 10}), true), '10 valandų', '10 hours = 10 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 valandos', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diena', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diena', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dienos', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diena', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dienos', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 10}), true), '10 dienų', '10 days = 10 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dienos', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mėnuo', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mėnuo', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mėnuo', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mėnesiai', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mėnesiai', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mėnesiai', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mėnuo', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mėnesiai', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 10}), true), '10 mėnesių', '10 months = 10 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'metai', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 metai', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'metai', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 metai', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'po kelių sekundžių', 'prefix'); - assert.equal(moment(0).from(30000), 'prieš kelias sekundes', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'prieš kelias sekundes', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'po kelių sekundžių', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'po 5 dienų', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Šiandien 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Šiandien 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Šiandien 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Rytoj 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Šiandien 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Vakar 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52-oji', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1-oji', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1-oji', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2-oji', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2-oji', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('lv'); - - test('parse', function (assert) { - var tests = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'svētdiena, 14. februāris 2010, 3:25:50 pm'], - ['ddd, hA', 'Sv, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februāris feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. svētdiena Sv Sv'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14.02.2010.'], - ['LL', '2010. gada 14. februāris'], - ['LLL', '2010. gada 14. februāris, 15:25'], - ['LLLL', '2010. gada 14. februāris, svētdiena, 15:25'], - ['l', '14.2.2010.'], - ['ll', '2010. gada 14. feb'], - ['lll', '2010. gada 14. feb, 15:25'], - ['llll', '2010. gada 14. feb, Sv, 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'svētdiena Sv Sv_pirmdiena P P_otrdiena O O_trešdiena T T_ceturtdiena C C_piektdiena Pk Pk_sestdiena S S'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - // Includes testing the cases of withoutSuffix = true and false. - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'dažas sekundes', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), false), 'pirms dažām sekundēm', '44 seconds with suffix = seconds ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minūte', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), false), 'pirms minūtes', '45 seconds with suffix = a minute ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minūte', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: -89}), false), 'pēc minūtes', '89 seconds with suffix/prefix = in a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minūtes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), false), 'pirms 2 minūtēm', '90 seconds with suffix = 2 minutes ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minūtes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), false), 'pirms 44 minūtēm', '44 minutes with suffix = 44 minutes ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'stunda', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), false), 'pirms stundas', '45 minutes with suffix = an hour ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'stunda', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 stundas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: -90}), false), 'pēc 2 stundām', '90 minutes with suffix = in 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 stundas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), false), 'pirms 5 stundām', '5 hours with suffix = 5 hours ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 stunda', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), false), 'pirms 21 stundas', '21 hours with suffix = 21 hours ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diena', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), false), 'pirms dienas', '22 hours with suffix = a day ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diena', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dienas', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), false), 'pirms 2 dienām', '36 hours with suffix = 2 days ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diena', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dienas', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), false), 'pirms 5 dienām', '5 days with suffix = 5 days ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dienas', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), false), 'pirms 25 dienām', '25 days with suffix = 25 days ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mēnesis', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), false), 'pirms mēneša', '26 days with suffix = a month ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mēnesis', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mēnesis', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mēneši', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), false), 'pirms 2 mēnešiem', '46 days with suffix = 2 months ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mēneši', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mēneši', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), false), 'pirms 3 mēnešiem', '76 days with suffix = 3 months ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mēnesis', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mēneši', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), false), 'pirms 5 mēnešiem', '5 months with suffix = 5 months ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'gads', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), false), 'pirms gada', '345 days with suffix = a year ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 gadi', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), false), 'pirms 2 gadiem', '548 days with suffix = 2 years ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'gads', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 gadi', '5 years = 5 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), false), 'pirms 5 gadiem', '5 years with suffix = 5 years ago'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'pēc dažām sekundēm', 'prefix'); - assert.equal(moment(0).from(30000), 'pirms dažām sekundēm', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'pirms dažām sekundēm', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'pēc dažām sekundēm', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'pēc 5 dienām', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Šodien pulksten 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Šodien pulksten 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Šodien pulksten 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Rīt pulksten 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Šodien pulksten 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Vakar pulksten 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [pulksten] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [pulksten] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [pulksten] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('me'); - - test('parse', function (assert) { - var tests = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), - i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. februar 2010, 3:25:50 pm'], - ['ddd, hA', 'ned., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14. 02. 2010'], - ['LL', '14. februar 2010'], - ['LLL', '14. februar 2010 15:25'], - ['LLLL', 'nedjelja, 14. februar 2010 15:25'], - ['l', '14. 2. 2010'], - ['ll', '14. feb. 2010'], - ['lll', '14. feb. 2010 15:25'], - ['llll', 'ned., 14. feb. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nekoliko sekundi', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedan minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedan minut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuta', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mjesec', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mjesec', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mjesec', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mjeseca', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mjeseca', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mjeseca', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mjesec', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mjeseci', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za nekoliko sekundi', 'prefix'); - assert.equal(moment(0).from(30000), 'prije nekoliko sekundi', 'prefix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'prije nekoliko sekundi', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'za nekoliko sekundi', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'danas u 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'sjutra u 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'juče u 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - var lastWeekDay = [ - '[prošle] [nedjelje] [u] LT', - '[prošlog] [ponedjeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srijede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - - return lastWeekDay[d.day()]; - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('mk'); - - test('parse', function (assert) { - var tests = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, H:mm:ss', 'недела, февруари 14-ти 2010, 15:25:50'], - ['ddd, hA', 'нед, 3PM'], - ['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-ти 14'], - ['d do dddd ddd dd', '0 0-ев недела нед нe'], - ['DDD DDDo DDDD', '45 45-ти 045'], - ['w wo ww', '7 7-ми 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45-ти day of the year'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 февруари 2010'], - ['LLL', '14 февруари 2010 15:25'], - ['LLLL', 'недела, 14 февруари 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 фев 2010'], - ['lll', '14 фев 2010 15:25'], - ['llll', 'нед, 14 фев 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви'); - }); - - test('format month', function (assert) { - var expected = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'недела нед нe_понеделник пон пo_вторник вто вт_среда сре ср_четврток чет че_петок пет пе_сабота саб сa'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'неколку секунди', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'минута', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'минута', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минути', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минути', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'час', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'час', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 часа', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 часа', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 часа', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ден', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ден', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дена', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ден', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дена', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дена', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месец', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месец', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месец', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месеци', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месеци', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месеци', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месец', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месеци', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'година', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 години', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'година', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 години', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'после неколку секунди', 'prefix'); - assert.equal(moment(0).from(30000), 'пред неколку секунди', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'пред неколку секунди', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'после неколку секунди', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'после 5 дена', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Денес во 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Денес во 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Денес во 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Утре во 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Денес во 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчера во 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [во] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [во] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [во] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - case 3: - case 6: - return '[Во изминатата] dddd [во] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Во изминатиот] dddd [во] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ви', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ви', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ри', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ри', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ти', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ml'); - - test('parse', function (assert) { - var tests = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റംബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവംബർ നവം._ഡിസംബർ ഡിസം.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, a h:mm:ss -നു', 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25:50 -നു'], - ['ddd, a h -നു', 'ഞായർ, ഉച്ച കഴിഞ്ഞ് 3 -നു'], - ['M Mo MM MMMM MMM', '2 2 02 ഫെബ്രുവരി ഫെബ്രു.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 ഞായറാഴ്ച ഞായർ ഞാ'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'ഉച്ച കഴിഞ്ഞ് ഉച്ച കഴിഞ്ഞ്'], - ['LTS', 'ഉച്ച കഴിഞ്ഞ് 3:25:50 -നു'], - ['L', '14/02/2010'], - ['LL', '14 ഫെബ്രുവരി 2010'], - ['LLL', '14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'], - ['LLLL', 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'], - ['l', '14/2/2010'], - ['ll', '14 ഫെബ്രു. 2010'], - ['lll', '14 ഫെബ്രു. 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'], - ['llll', 'ഞായർ, 14 ഫെബ്രു. 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var expected = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റംബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവംബർ നവം._ഡിസംബർ ഡിസം.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'ഞായറാഴ്ച ഞായർ ഞാ_തിങ്കളാഴ്ച തിങ്കൾ തി_ചൊവ്വാഴ്ച ചൊവ്വ ചൊ_ബുധനാഴ്ച ബുധൻ ബു_വ്യാഴാഴ്ച വ്യാഴം വ്യാ_വെള്ളിയാഴ്ച വെള്ളി വെ_ശനിയാഴ്ച ശനി ശ'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'അൽപ നിമിഷങ്ങൾ', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ഒരു മിനിറ്റ്', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ഒരു മിനിറ്റ്', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 മിനിറ്റ്', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 മിനിറ്റ്', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ഒരു മണിക്കൂർ', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ഒരു മണിക്കൂർ', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 മണിക്കൂർ', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 മണിക്കൂർ', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 മണിക്കൂർ', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ഒരു ദിവസം', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ഒരു ദിവസം', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ദിവസം', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ഒരു ദിവസം', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ദിവസം', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ദിവസം', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ഒരു മാസം', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ഒരു മാസം', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ഒരു മാസം', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 മാസം', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 മാസം', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 മാസം', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ഒരു മാസം', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 മാസം', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ഒരു വർഷം', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 വർഷം', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ഒരു വർഷം', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 വർഷം', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്', 'prefix'); - assert.equal(moment(0).from(30000), 'അൽപ നിമിഷങ്ങൾ മുൻപ്', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'അൽപ നിമിഷങ്ങൾ മുൻപ്', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്', 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്'); - assert.equal(moment().add({d: 5}).fromNow(), '5 ദിവസം കഴിഞ്ഞ്', '5 ദിവസം കഴിഞ്ഞ്'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'ഇന്ന് രാത്രി 2:00 -നു', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'ഇന്ന് രാത്രി 2:25 -നു', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 3}).calendar(), 'ഇന്ന് രാവിലെ 5:00 -നു', 'Now plus 3 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'നാളെ രാത്രി 2:00 -നു', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'ഇന്ന് രാത്രി 1:00 -നു', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ഇന്നലെ രാത്രി 2:00 -നു', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'രാത്രി', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'രാവിലെ', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'ഉച്ച കഴിഞ്ഞ്', 'during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'വൈകുന്നേരം', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'വൈകുന്നേരം', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'രാത്രി', 'night'); - - assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'രാത്രി', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'രാവിലെ', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'ഉച്ച കഴിഞ്ഞ്', ' during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'വൈകുന്നേരം', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'വൈകുന്നേരം', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'രാത്രി', 'night'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('mr'); - - test('parse', function (assert) { - var tests = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, a h:mm:ss वाजता', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५:५० वाजता'], - ['ddd, a h वाजता', 'रवि, दुपारी ३ वाजता'], - ['M Mo MM MMMM MMM', '२ २ ०२ फेब्रुवारी फेब्रु.'], - ['YYYY YY', '२०१० १०'], - ['D Do DD', '१४ १४ १४'], - ['d do dddd ddd dd', '० ० रविवार रवि र'], - ['DDD DDDo DDDD', '४५ ४५ ०४५'], - ['w wo ww', '८ ८ ०८'], - ['h hh', '३ ०३'], - ['H HH', '१५ १५'], - ['m mm', '२५ २५'], - ['s ss', '५० ५०'], - ['a A', 'दुपारी दुपारी'], - ['LTS', 'दुपारी ३:२५:५० वाजता'], - ['L', '१४/०२/२०१०'], - ['LL', '१४ फेब्रुवारी २०१०'], - ['LLL', '१४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'], - ['LLLL', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'], - ['l', '१४/२/२०१०'], - ['ll', '१४ फेब्रु. २०१०'], - ['lll', '१४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'], - ['llll', 'रवि, १४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); - }); - - test('format month', function (assert) { - var expected = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'रविवार रवि र_सोमवार सोम सो_मंगळवार मंगळ मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'सेकंद', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'एक मिनिट', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'एक मिनिट', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '२ मिनिटे', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '४४ मिनिटे', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'एक तास', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'एक तास', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '२ तास', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '५ तास', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '२१ तास', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'एक दिवस', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'एक दिवस', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '२ दिवस', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'एक दिवस', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '५ दिवस', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '२५ दिवस', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'एक महिना', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'एक महिना', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'एक महिना', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '२ महिने', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '२ महिने', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '३ महिने', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'एक महिना', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '५ महिने', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'एक वर्ष', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '२ वर्षे', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'एक वर्ष', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '५ वर्षे', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'सेकंद नंतर', 'prefix'); - assert.equal(moment(0).from(30000), 'सेकंद पूर्वी', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'सेकंद पूर्वी', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'सेकंद नंतर', 'सेकंद नंतर'); - assert.equal(moment().add({d: 5}).fromNow(), '५ दिवस नंतर', '५ दिवस नंतर'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'आज रात्री २:०० वाजता', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'आज रात्री २:२५ वाजता', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 3}).calendar(), 'आज सकाळी ५:०० वाजता', 'Now plus 3 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'उद्या रात्री २:०० वाजता', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'आज रात्री १:०० वाजता', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'काल रात्री २:०० वाजता', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'रात्री', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'सकाळी', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'दुपारी', 'during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'सायंकाळी', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'सायंकाळी', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'रात्री', 'night'); - - assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'रात्री', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'सकाळी', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'दुपारी', ' during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'सायंकाळी', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'सायंकाळी', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'रात्री', 'night'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '१ ०१ १', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '२ ०२ २', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '३ ०३ ३', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('meridiem invariant', function (assert) { - var h, m, t1, t2; - for (h = 0; h < 24; ++h) { - for (m = 0; m < 60; m += 15) { - t1 = moment.utc([2000, 0, 1, h, m]); - t2 = moment(t1.format('A h:mm'), 'A h:mm'); - assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), - 'meridiem at ' + t1.format('HH:mm')); - } - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ms-my'); - - test('parse', function (assert) { - var i, - tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' sepatutnya bulan ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Ahad, Februari 14 2010, 3:25:50 petang'], - ['ddd, hA', 'Ahd, 3petang'], - ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Ahad Ahd Ah'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '7 7 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'petang petang'], - ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'], - ['LTS', '15.25.50'], - ['L', '14/02/2010'], - ['LL', '14 Februari 2010'], - ['LLL', '14 Februari 2010 pukul 15.25'], - ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 pukul 15.25'], - ['llll', 'Ahd, 14 Feb 2010 pukul 15.25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var i, - expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var i, - expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'beberapa saat', '44 saat = beberapa saat'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'seminit', '45 saat = seminit'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'seminit', '89 saat = seminit'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minit', '90 saat = 2 minit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minit', '44 minit = 44 minit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'sejam', '45 minit = sejam'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '89 minit = sejam'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minit = 2 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 jam = 5 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 jam = 21 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sehari', '22 jam = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 jam = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 jam = 2 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 hari = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 hari = 5 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 hari = 25 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '45 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 hari = 2 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 hari = 2 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 hari = 3 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 bulan = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 bulan = 5 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 hari = setahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 hari = 2 tahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 tahun = setahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 tahun = 5 tahun'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dalam beberapa saat', 'prefix'); - assert.equal(moment(0).from(30000), 'beberapa saat yang lepas', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'beberapa saat yang lepas', 'waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa saat', 'dalam beberapa saat'); - assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'dalam 5 hari'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Hari ini pukul 02.00', 'hari ini pada waktu yang sama'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 02.25', 'Sekarang tambah 25 minit'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 03.00', 'Sekarang tambah 1 jam'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Esok pukul 02.00', 'esok pada waktu yang sama'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 01.00', 'Sekarang tolak 1 jam'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kelmarin pukul 02.00', 'kelmarin pada waktu yang sama'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari waktu sekarang'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari permulaan hari'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari tamat hari'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari waktu sekarang'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari permulaan hari'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari tamat hari'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 minggu lepas'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 1 minggu'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 minggu lepas'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 2 minggu'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 sepatutnya minggu 1'); - assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 sepatutnya minggu 3'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 sepatutnya minggu 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 53, 'Dec 31 2006 sepatutnya minggu 53'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 sepatutnya minggu 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 sepatutnya minggu 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 sepatutnya minggu 1'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 sepatutnya minggu 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 sepatutnya minggu 2'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 30]).week(), 52, 'Dec 30 2007 sepatutnya minggu 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 sepatutnya minggu 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 sepatutnya minggu 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 sepatutnya minggu 1'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 sepatutnya minggu 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 sepatutnya minggu 2'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 52, 'Dec 29 2002 sepatutnya minggu 52'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 sepatutnya minggu 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 sepatutnya minggu 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 sepatutnya minggu 1'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 sepatutnya minggu 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 sepatutnya minggu 2'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 52, 'Dec 28 2008 sepatutnya minggu 52'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 sepatutnya minggu 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 sepatutnya minggu 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 sepatutnya minggu 1'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 sepatutnya minggu 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 sepatutnya minggu 2'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 52, 'Dec 27 2009 sepatutnya minggu 52'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 sepatutnya minggu 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 sepatutnya minggu 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 sepatutnya minggu 1'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 sepatutnya minggu 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 sepatutnya minggu 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 52, 'Dec 26 2010 sepatutnya minggu 52'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 sepatutnya minggu 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 sepatutnya minggu 1'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 sepatutnya minggu 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 sepatutnya minggu 2'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 sepatutnya minggu 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 sepatutnya minggu 3'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 sepatutnya minggu 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('meridiem invariant', function (assert) { - var h, m, t1, t2; - for (h = 0; h < 24; ++h) { - for (m = 0; m < 60; m += 15) { - t1 = moment.utc([2000, 0, 1, h, m]); - t2 = moment(t1.format('A h:mm'), 'A h:mm'); - assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), - 'meridiem at ' + t1.format('HH:mm')); - } - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ms'); - - test('parse', function (assert) { - var i, - tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' sepatutnya bulan ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Ahad, Februari 14 2010, 3:25:50 petang'], - ['ddd, hA', 'Ahd, 3petang'], - ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Ahad Ahd Ah'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '7 7 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'petang petang'], - ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'], - ['LTS', '15.25.50'], - ['L', '14/02/2010'], - ['LL', '14 Februari 2010'], - ['LLL', '14 Februari 2010 pukul 15.25'], - ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 pukul 15.25'], - ['llll', 'Ahd, 14 Feb 2010 pukul 15.25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var i, - expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var i, - expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'beberapa saat', '44 saat = beberapa saat'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'seminit', '45 saat = seminit'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'seminit', '89 saat = seminit'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minit', '90 saat = 2 minit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minit', '44 minit = 44 minit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'sejam', '45 minit = sejam'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '89 minit = sejam'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minit = 2 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 jam = 5 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 jam = 21 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sehari', '22 jam = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 jam = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 jam = 2 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 hari = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 hari = 5 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 hari = 25 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '45 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 hari = 2 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 hari = 2 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 hari = 3 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 bulan = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 bulan = 5 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 hari = setahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 hari = 2 tahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 tahun = setahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 tahun = 5 tahun'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dalam beberapa saat', 'prefix'); - assert.equal(moment(0).from(30000), 'beberapa saat yang lepas', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'beberapa saat yang lepas', 'waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa saat', 'dalam beberapa saat'); - assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'dalam 5 hari'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Hari ini pukul 02.00', 'hari ini pada waktu yang sama'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 02.25', 'Sekarang tambah 25 minit'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 03.00', 'Sekarang tambah 1 jam'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Esok pukul 02.00', 'esok pada waktu yang sama'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 01.00', 'Sekarang tolak 1 jam'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kelmarin pukul 02.00', 'kelmarin pada waktu yang sama'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari waktu sekarang'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari permulaan hari'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari tamat hari'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari waktu sekarang'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari permulaan hari'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari tamat hari'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 minggu lepas'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 1 minggu'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 minggu lepas'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 2 minggu'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 sepatutnya minggu 1'); - assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 sepatutnya minggu 3'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 sepatutnya minggu 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 53, 'Dec 31 2006 sepatutnya minggu 53'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 sepatutnya minggu 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 sepatutnya minggu 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 sepatutnya minggu 1'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 sepatutnya minggu 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 sepatutnya minggu 2'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 30]).week(), 52, 'Dec 30 2007 sepatutnya minggu 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 sepatutnya minggu 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 sepatutnya minggu 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 sepatutnya minggu 1'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 sepatutnya minggu 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 sepatutnya minggu 2'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 52, 'Dec 29 2002 sepatutnya minggu 52'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 sepatutnya minggu 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 sepatutnya minggu 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 sepatutnya minggu 1'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 sepatutnya minggu 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 sepatutnya minggu 2'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 52, 'Dec 28 2008 sepatutnya minggu 52'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 sepatutnya minggu 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 sepatutnya minggu 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 sepatutnya minggu 1'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 sepatutnya minggu 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 sepatutnya minggu 2'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 52, 'Dec 27 2009 sepatutnya minggu 52'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 sepatutnya minggu 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 sepatutnya minggu 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 sepatutnya minggu 1'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 sepatutnya minggu 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 sepatutnya minggu 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 52, 'Dec 26 2010 sepatutnya minggu 52'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 sepatutnya minggu 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 sepatutnya minggu 1'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 sepatutnya minggu 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 sepatutnya minggu 2'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 sepatutnya minggu 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 sepatutnya minggu 3'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 sepatutnya minggu 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('meridiem invariant', function (assert) { - var h, m, t1, t2; - for (h = 0; h < 24; ++h) { - for (m = 0; m < 60; m += 15) { - t1 = moment.utc([2000, 0, 1, h, m]); - t2 = moment(t1.format('A h:mm'), 'A h:mm'); - assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), - 'meridiem at ' + t1.format('HH:mm')); - } - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('my'); - - test('parse', function (assert) { - var tests = 'ဇန်နဝါရီ ဇန်_ဖေဖော်ဝါရီ ဖေ_မတ် မတ်_ဧပြီ ပြီ_မေ မေ_ဇွန် ဇွန်_ဇူလိုင် လိုင်_သြဂုတ် သြ_စက်တင်ဘာ စက်_အောက်တိုဘာ အောက်_နိုဝင်ဘာ နို_ဒီဇင်ဘာ ဒီ'.split('_'), - i; - - function equalTest (input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'တနင်္ဂနွေ, ဖေဖော်ဝါရီ ၁၄ ၂၀၁၀, ၃:၂၅:၅၀ pm'], - ['ddd, hA', 'နွေ, ၃PM'], - ['M Mo MM MMMM MMM', '၂ ၂ ၀၂ ဖေဖော်ဝါရီ ဖေ'], - ['YYYY YY', '၂၀၁၀ ၁၀'], - ['D Do DD', '၁၄ ၁၄ ၁၄'], - ['d do dddd ddd dd', '၀ ၀ တနင်္ဂနွေ နွေ နွေ'], - ['DDD DDDo DDDD', '၄၅ ၄၅ ၀၄၅'], - ['w wo ww', '၆ ၆ ၀၆'], - ['h hh', '၃ ၀၃'], - ['H HH', '၁၅ ၁၅'], - ['m mm', '၂၅ ၂၅'], - ['s ss', '၅၀ ၅၀'], - ['a A', 'pm PM'], - ['[နှစ်၏] DDDo [ရက်မြောက်]', 'နှစ်၏ ၄၅ ရက်မြောက်'], - ['LTS', '၁၅:၂၅:၅၀'], - ['L', '၁၄/၀၂/၂၀၁၀'], - ['LL', '၁၄ ဖေဖော်ဝါရီ ၂၀၁၀'], - ['LLL', '၁၄ ဖေဖော်ဝါရီ ၂၀၁၀ ၁၅:၂၅'], - ['LLLL', 'တနင်္ဂနွေ ၁၄ ဖေဖော်ဝါရီ ၂၀၁၀ ၁၅:၂၅'], - ['l', '၁၄/၂/၂၀၁၀'], - ['ll', '၁၄ ဖေ ၂၀၁၀'], - ['lll', '၁၄ ဖေ ၂၀၁၀ ၁၅:၂၅'], - ['llll', 'နွေ ၁၄ ဖေ ၂၀၁၀ ၁၅:၂၅'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '၁', '၁'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '၂', '၂'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '၃', '၃'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '၄', '၄'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '၅', '၅'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '၆', '၆'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '၇', '၇'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '၈', '၈'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '၉', '၉'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '၁၀', '၁၀'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '၁၁', '၁၁'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '၁၂', '၁၂'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '၁၃', '၁၃'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '၁၄', '၁၄'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '၁၅', '၁၅'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '၁၆', '၁၆'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '၁၇', '၁၇'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '၁၈', '၁၈'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '၁၉', '၁၉'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '၂၀', '၂၀'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '၂၁', '၂၁'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '၂၂', '၂၂'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '၂၃', '၂၃'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '၂၄', '၂၄'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '၂၅', '၂၅'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '၂၆', '၂၆'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '၂၇', '၂၇'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '၂၈', '၂၈'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '၂၉', '၂၉'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '၃၀', '၃၀'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '၃၁', '၃၁'); - }); - - test('format month', function (assert) { - var expected = 'ဇန်နဝါရီ ဇန်_ဖေဖော်ဝါရီ ဖေ_မတ် မတ်_ဧပြီ ပြီ_မေ မေ_ဇွန် ဇွန်_ဇူလိုင် လိုင်_သြဂုတ် သြ_စက်တင်ဘာ စက်_အောက်တိုဘာ အောက်_နိုဝင်ဘာ နို_ဒီဇင်ဘာ ဒီ'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'တနင်္ဂနွေ နွေ နွေ_တနင်္လာ လာ လာ_အင်္ဂါ ဂါ ဂါ_ဗုဒ္ဓဟူး ဟူး ဟူး_ကြာသပတေး ကြာ ကြာ_သောကြာ သော သော_စနေ နေ နေ'.split('_'), - i; - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({ - s: 44 - }), true), 'စက္ကန်.အနည်းငယ်', '၄၄ စက္ကန်. = စက္ကန်.အနည်းငယ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - s: 45 - }), true), 'တစ်မိနစ်', '၄၅ စက္ကန်. = တစ်မိနစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - s: 89 - }), true), 'တစ်မိနစ်', '၈၉ စက္ကန်. = တစ်မိနစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - s: 90 - }), true), '၂ မိနစ်', '၉၀ စက္ကန်. = ၂ မိနစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 44 - }), true), '၄၄ မိနစ်', '၄၄ မိနစ် = ၄၄ မိနစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 45 - }), true), 'တစ်နာရီ', '၄၅ မိနစ် = ၁ နာရီ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 89 - }), true), 'တစ်နာရီ', '၈၉ မိနစ် = တစ်နာရီ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 90 - }), true), '၂ နာရီ', 'မိနစ် ၉၀= ၂ နာရီ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 5 - }), true), '၅ နာရီ', '၅ နာရီ= ၅ နာရီ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 21 - }), true), '၂၁ နာရီ', '၂၁ နာရီ =၂၁ နာရီ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 22 - }), true), 'တစ်ရက်', '၂၂ နာရီ =တစ်ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 35 - }), true), 'တစ်ရက်', '၃၅ နာရီ =တစ်ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 36 - }), true), '၂ ရက်', '၃၆ နာရီ = ၂ ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 1 - }), true), 'တစ်ရက်', '၁ ရက်= တစ်ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 5 - }), true), '၅ ရက်', '၅ ရက် = ၅ ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 25 - }), true), '၂၅ ရက်', '၂၅ ရက်= ၂၅ ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 26 - }), true), 'တစ်လ', '၂၆ ရက် = တစ်လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 30 - }), true), 'တစ်လ', 'ရက် ၃၀ = တစ်လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 43 - }), true), 'တစ်လ', '၄၃ ရက် = တစ်လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 46 - }), true), '၂ လ', '၄၆ ရက် = ၂ လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 74 - }), true), '၂ လ', '၇၅ ရက်= ၂ လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 76 - }), true), '၃ လ', '၇၆ ရက် = ၃ လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - M: 1 - }), true), 'တစ်လ', '၁ လ = တစ်လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - M: 5 - }), true), '၅ လ', '၅ လ = ၅ လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 345 - }), true), 'တစ်နှစ်', '၃၄၅ ရက် = တစ်နှစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 548 - }), true), '၂ နှစ်', '၅၄၈ ရက် = ၂ နှစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - y: 1 - }), true), 'တစ်နှစ်', '၁ နှစ် = တစ်နှစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - y: 5 - }), true), '၅ နှစ်', '၅ နှစ် = ၅ နှစ်'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'လာမည့် စက္ကန်.အနည်းငယ် မှာ', 'prefix'); - assert.equal(moment(0).from(30000), 'လွန်ခဲ့သော စက္ကန်.အနည်းငယ် က', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'လွန်ခဲ့သော စက္ကန်.အနည်းငယ် က', 'ယခုမှစပြီး အတိတ်တွင်ဖော်ပြသလိုဖော်ပြမည်'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({ - s: 30 - }).fromNow(), 'လာမည့် စက္ကန်.အနည်းငယ် မှာ', 'လာမည့် စက္ကန်.အနည်းငယ် မှာ'); - assert.equal(moment().add({ - d: 5 - }).fromNow(), 'လာမည့် ၅ ရက် မှာ', 'လာမည့် ၅ ရက် မှာ'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'ယနေ. ၀၂:၀၀ မှာ', 'ယနေ. ဒီအချိန်'); - assert.equal(moment(a).add({ - m: 25 - }).calendar(), 'ယနေ. ၀၂:၂၅ မှာ', 'ယခုမှ ၂၅ မိနစ်ပေါင်းထည့်'); - assert.equal(moment(a).add({ - h: 1 - }).calendar(), 'ယနေ. ၀၃:၀၀ မှာ', 'ယခုမှ ၁ နာရီပေါင်းထည့်'); - assert.equal(moment(a).add({ - d: 1 - }).calendar(), 'မနက်ဖြန် ၀၂:၀၀ မှာ', 'မနက်ဖြန် ဒီအချိန်'); - assert.equal(moment(a).subtract({ - h: 1 - }).calendar(), 'ယနေ. ၀၁:၀၀ မှာ', 'ယခုမှ ၁ နာရီနှုတ်'); - assert.equal(moment(a).subtract({ - d: 1 - }).calendar(), 'မနေ.က ၀၂:၀၀ မှာ', 'မနေ.က ဒီအချိန်'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({ - d: i - }); - assert.equal(m.calendar(), m.format('dddd LT [မှာ]'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd LT [မှာ]'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd LT [မှာ]'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ - d: i - }); - assert.equal(m.calendar(), m.format('[ပြီးခဲ့သော] dddd LT [မှာ]'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[ပြီးခဲ့သော] dddd LT [မှာ]'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[ပြီးခဲ့သော] dddd LT [မှာ]'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({ - w: 1 - }), - weeksFromNow = moment().add({ - w: 1 - }); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'လွန်ခဲ့သော ၁ ပတ်က'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '၁ ပတ်အတွင်း'); - - weeksAgo = moment().subtract({ - w: 2 - }); - weeksFromNow = moment().add({ - w: 2 - }); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '၂ ပတ် အရင်က'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '၂ ပတ် အတွင်း'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '၅၂ ၅၂ ၅၂', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '၁ ၀၁ ၁', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '၁ ၀၁ ၁', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '၂ ၀၂ ၂', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '၂ ၀၂ ၂', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('nb'); - - test('parse', function (assert) { - var tests = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), - i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'søndag, februar 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'søn, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. søndag søn sø'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[den] DDDo [dagen i året]', 'den 45. dagen i året'], - ['LTS', '15.25.50'], - ['L', '14.02.2010'], - ['LL', '14. februar 2010'], - ['LLL', '14. februar 2010 kl. 15.25'], - ['LLLL', 'søndag 14. februar 2010 kl. 15.25'], - ['l', '14.2.2010'], - ['ll', '14. feb 2010'], - ['lll', '14. feb 2010 kl. 15.25'], - ['llll', 'søn 14. feb 2010 kl. 15.25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'søndag søn sø_mandag man ma_tirsdag tirs ti_onsdag ons on_torsdag tors to_fredag fre fr_lørdag lør lø'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'noen sekunder', '44 sekunder = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ett minutt', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ett minutt', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutter', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutter', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en time', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en time', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timer', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timer', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timer', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dager', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dager', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dager', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en måned', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en måned', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en måned', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 måneder', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 måneder', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 måneder', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en måned', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 måneder', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ett år', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ett år', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'om noen sekunder', 'prefix'); - assert.equal(moment(0).from(30000), 'for noen sekunder siden', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'for noen sekunder siden', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'om noen sekunder', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dager', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'i dag kl. 2.00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'i dag kl. 2.25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'i dag kl. 3.00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'i morgen kl. 2.00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'i dag kl. 1.00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'i går kl. 2.00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ne'); - - test('parse', function (assert) { - var tests = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, aको h:mm:ss बजे', 'आइतबार, १४ फेब्रुवरी २०१०, बेलुकाको ३:२५:५० बजे'], - ['ddd, aको h बजे', 'आइत., बेलुकाको ३ बजे'], - ['M Mo MM MMMM MMM', '२ २ ०२ फेब्रुवरी फेब्रु.'], - ['YYYY YY', '२०१० १०'], - ['D Do DD', '१४ १४ १४'], - ['d do dddd ddd dd', '० ० आइतबार आइत. आइ.'], - ['DDD DDDo DDDD', '४५ ४५ ०४५'], - ['w wo ww', '७ ७ ०७'], - ['h hh', '३ ०३'], - ['H HH', '१५ १५'], - ['m mm', '२५ २५'], - ['s ss', '५० ५०'], - ['a A', 'बेलुका बेलुका'], - ['LTS', 'बेलुकाको ३:२५:५० बजे'], - ['L', '१४/०२/२०१०'], - ['LL', '१४ फेब्रुवरी २०१०'], - ['LLL', '१४ फेब्रुवरी २०१०, बेलुकाको ३:२५ बजे'], - ['LLLL', 'आइतबार, १४ फेब्रुवरी २०१०, बेलुकाको ३:२५ बजे'], - ['l', '१४/२/२०१०'], - ['ll', '१४ फेब्रु. २०१०'], - ['lll', '१४ फेब्रु. २०१०, बेलुकाको ३:२५ बजे'], - ['llll', 'आइत., १४ फेब्रु. २०१०, बेलुकाको ३:२५ बजे'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); - }); - - test('format month', function (assert) { - var expected = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'आइतबार आइत. आइ._सोमबार सोम. सो._मङ्गलबार मङ्गल. मङ्_बुधबार बुध. बु._बिहिबार बिहि. बि._शुक्रबार शुक्र. शु._शनिबार शनि. श.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'केही समय', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'एक मिनेट', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'एक मिनेट', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '२ मिनेट', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '४४ मिनेट', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'एक घण्टा', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'एक घण्टा', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '२ घण्टा', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '५ घण्टा', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '२१ घण्टा', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'एक दिन', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'एक दिन', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '२ दिन', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'एक दिन', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '५ दिन', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '२५ दिन', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'एक महिना', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'एक महिना', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'एक महिना', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '२ महिना', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '२ महिना', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '३ महिना', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'एक महिना', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '५ महिना', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'एक बर्ष', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '२ बर्ष', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'एक बर्ष', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '५ बर्ष', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'केही समयमा', 'prefix'); - assert.equal(moment(0).from(30000), 'केही समय अगाडी', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'केही समय अगाडी', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'केही समयमा', 'केही समयमा'); - assert.equal(moment().add({d: 5}).fromNow(), '५ दिनमा', '५ दिनमा'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'आज रातीको २:०० बजे', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'आज रातीको २:२५ बजे', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'आज बिहानको ३:०० बजे', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'भोली रातीको २:०० बजे', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'आज रातीको १:०० बजे', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'हिजो रातीको २:०० बजे', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'राती', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'बिहान', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'दिउँसो', 'during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'बेलुका', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'साँझ', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'राती', 'night'); - - assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'राती', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'बिहान', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'दिउँसो', 'during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'बेलुका', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'साँझ', 'late evening'); - assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'राती', 'night'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '१ ०१ १', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '२ ०२ २', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '३ ०३ ३', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('meridiem invariant', function (assert) { - var h, m, t1, t2; - for (h = 0; h < 24; ++h) { - for (m = 0; m < 60; m += 15) { - t1 = moment.utc([2000, 0, 1, h, m]); - t2 = moment(t1.format('A h:mm'), 'A h:mm'); - assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), - 'meridiem at ' + t1.format('HH:mm')); - } - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('nl'); - - test('parse', function (assert) { - var tests = 'januari jan._februari feb._maart mrt._april apr._mei mei._juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, HH:mm:ss', 'zondag, februari 14de 2010, 15:25:50'], - ['ddd, HH', 'zo., 15'], - ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14de 14'], - ['d do dddd ddd dd', '0 0de zondag zo. Zo'], - ['DDD DDDo DDDD', '45 45ste 045'], - ['w wo ww', '6 6de 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45ste day of the year'], - ['LTS', '15:25:50'], - ['L', '14-02-2010'], - ['LL', '14 februari 2010'], - ['LLL', '14 februari 2010 15:25'], - ['LLLL', 'zondag 14 februari 2010 15:25'], - ['l', '14-2-2010'], - ['ll', '14 feb. 2010'], - ['lll', '14 feb. 2010 15:25'], - ['llll', 'zo. 14 feb. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); - }); - - test('format month', function (assert) { - var expected = 'januari jan._februari feb._maart mrt._april apr._mei mei_juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'zondag zo. Zo_maandag ma. Ma_dinsdag di. Di_woensdag wo. Wo_donderdag do. Do_vrijdag vr. Vr_zaterdag za. Za'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'een paar seconden', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'één minuut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'één minuut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuten', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'één uur', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'één uur', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uur', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 uur', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 uur', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'één dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'één dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagen', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'één dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagen', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagen', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'één maand', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'één maand', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'één maand', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 maanden', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 maanden', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 maanden', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'één maand', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 maanden', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'één jaar', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaar', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'één jaar', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaar', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'over een paar seconden', 'prefix'); - assert.equal(moment(0).from(30000), 'een paar seconden geleden', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'een paar seconden geleden', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'over een paar seconden', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'over 5 dagen', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'vandaag om 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'vandaag om 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'vandaag om 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'morgen om 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'vandaag om 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'gisteren om 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('month abbreviation', function (assert) { - assert.equal(moment([2012, 5, 23]).format('D-MMM-YYYY'), '23-jun-2012', 'format month abbreviation surrounded by dashes should not include a dot'); - assert.equal(moment([2012, 5, 23]).format('D MMM YYYY'), '23 jun. 2012', 'format month abbreviation not surrounded by dashes should include a dot'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('nn'); - - test('parse', function (assert) { - var tests = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'sundag, februar 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. sundag sun su'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 februar 2010'], - ['LLL', '14 februar 2010 15:25'], - ['LLLL', 'sundag 14 februar 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 feb 2010'], - ['lll', '14 feb 2010 15:25'], - ['llll', 'sun 14 feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'sundag sun su_måndag mån må_tysdag tys ty_onsdag ons on_torsdag tor to_fredag fre fr_laurdag lau lø'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nokre sekund', '44 sekunder = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eit minutt', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eit minutt', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutt', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutt', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ein time', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ein time', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timar', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timar', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timar', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein månad', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein månad', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein månad', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 månader', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 månader', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 månader', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein månad', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 månader', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eit år', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eit år', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'om nokre sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'for nokre sekund sidan', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'for nokre sekund sidan', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'om nokre sekund', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dagar', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'I dag klokka 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'I dag klokka 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'I dag klokka 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'I morgon klokka 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'I dag klokka 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'I går klokka 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [klokka] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [klokka] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [klokka] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('pl'); - - test('parse', function (assert) { - var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][2], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][2], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][2].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][2].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('parse strict', function (assert) { - var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm, true).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][2], 'MMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][2].toLocaleLowerCase(), 'MMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][2].toLocaleUpperCase(), 'MMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'niedziela, luty 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'nie, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 luty lut'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. niedziela nie N'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 lutego 2010'], - ['LLL', '14 lutego 2010 15:25'], - ['LLLL', 'niedziela, 14 lutego 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 lut 2010'], - ['lll', '14 lut 2010 15:25'], - ['llll', 'nie, 14 lut 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'styczeń sty_luty lut_marzec mar_kwiecień kwi_maj maj_czerwiec cze_lipiec lip_sierpień sie_wrzesień wrz_październik paź_listopad lis_grudzień gru'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'niedziela nie N_poniedziałek pon Pn_wtorek wt Wt_środa śr Śr_czwartek czw Cz_piątek pt Pt_sobota sb So'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'kilka sekund', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuta', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuta', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuty', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuty', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'godzina', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'godzina', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 godziny', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 godzin', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 godzin', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 dzień', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 dzień', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 dzień', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dni', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'miesiąc', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'miesiąc', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'miesiąc', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 miesiące', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 miesiące', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 miesiące', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'miesiąc', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 miesięcy', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'rok', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 lata', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'rok', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 lat', '5 years = 5 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 112}), true), '112 lat', '112 years = 112 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 122}), true), '122 lata', '122 years = 122 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 213}), true), '213 lat', '213 years = 213 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 223}), true), '223 lata', '223 years = 223 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za kilka sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'kilka sekund temu', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'kilka sekund temu', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'za kilka sekund', 'in a few seconds'); - assert.equal(moment().add({h: 1}).fromNow(), 'za godzinę', 'in an hour'); - assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dni', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Dziś o 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Dziś o 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Dziś o 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Jutro o 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Dziś o 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Wczoraj o 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[W] dddd [o] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[W] dddd [o] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[W] dddd [o] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('pt-br'); - - test('parse', function (assert) { - var tests = 'janeiro jan_fevereiro fev_março mar_abril abr_maio mai_junho jun_julho jul_agosto ago_setembro set_outubro out_novembro nov_dezembro dez'.split('_'), i; - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd', '0 0º Domingo Dom'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '8 8º 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 de Fevereiro de 2010'], - ['LLL', '14 de Fevereiro de 2010 às 15:25'], - ['LLLL', 'Domingo, 14 de Fevereiro de 2010 às 15:25'], - ['l', '14/2/2010'], - ['ll', '14 de Fev de 2010'], - ['lll', '14 de Fev de 2010 às 15:25'], - ['llll', 'Dom, 14 de Fev de 2010 às 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); - }); - - test('format month', function (assert) { - var expected = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Domingo Dom_Segunda-Feira Seg_Terça-Feira Ter_Quarta-Feira Qua_Quinta-Feira Qui_Sexta-Feira Sex_Sábado Sáb'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'poucos segundos', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'um minuto', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'um minuto', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'uma hora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'uma hora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'um dia', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'um dia', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dias', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'um dia', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dias', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dias', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'um mês', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'um mês', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'um mês', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'um mês', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'um ano', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anos', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'um ano', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anos', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'em poucos segundos', 'prefix'); - assert.equal(moment(0).from(30000), 'poucos segundos atrás', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'em poucos segundos', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'em 5 dias', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Hoje às 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hoje às 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hoje às 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Amanhã às 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hoje às 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ontem às 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1º', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1º', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2º', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3º', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('pt'); - - test('parse', function (assert) { - var tests = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd', '0 0º Domingo Dom'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '6 6º 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 de Fevereiro de 2010'], - ['LLL', '14 de Fevereiro de 2010 15:25'], - ['LLLL', 'Domingo, 14 de Fevereiro de 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 de Fev de 2010'], - ['lll', '14 de Fev de 2010 15:25'], - ['llll', 'Dom, 14 de Fev de 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); - }); - - test('format month', function (assert) { - var expected = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Domingo Dom Dom_Segunda-Feira Seg 2ª_Terça-Feira Ter 3ª_Quarta-Feira Qua 4ª_Quinta-Feira Qui 5ª_Sexta-Feira Sex 6ª_Sábado Sáb Sáb'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'segundos', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'um minuto', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'um minuto', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'uma hora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'uma hora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'um dia', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'um dia', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dias', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'um dia', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dias', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dias', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'um mês', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'um mês', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'um mês', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'um mês', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'um ano', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anos', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'um ano', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anos', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'em segundos', 'prefix'); - assert.equal(moment(0).from(30000), 'há segundos', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'em segundos', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'em 5 dias', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Hoje às 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hoje às 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hoje às 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Amanhã às 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hoje às 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ontem às 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ro'); - - test('parse', function (assert) { - var tests = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss A', 'duminică, februarie 14 2010, 3:25:50 PM'], - ['ddd, hA', 'Dum, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 februarie febr.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 duminică Dum Du'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '7 7 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[a] DDDo[a zi a anului]', 'a 45a zi a anului'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 februarie 2010'], - ['LLL', '14 februarie 2010 15:25'], - ['LLLL', 'duminică, 14 februarie 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 febr. 2010'], - ['lll', '14 febr. 2010 15:25'], - ['llll', 'Dum, 14 febr. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var expected = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'duminică Dum Du_luni Lun Lu_marți Mar Ma_miercuri Mie Mi_joi Joi Jo_vineri Vin Vi_sâmbătă Sâm Sâ'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'câteva secunde', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 de minute', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'o oră', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'o oră', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ore', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ore', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 de ore', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'o zi', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'o zi', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 zile', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'o zi', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 zile', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 de zile', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'o lună', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'o lună', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'o lună', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 luni', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 luni', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 luni', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'o lună', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 luni', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ani', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ani', '5 years = 5 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 19}), true), '19 ani', '19 years = 19 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 20}), true), '20 de ani', '20 years = 20 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 100}), true), '100 de ani', '100 years = 100 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 101}), true), '101 ani', '101 years = 101 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 119}), true), '119 ani', '119 years = 119 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 120}), true), '120 de ani', '120 years = 120 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 219}), true), '219 ani', '219 years = 219 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 220}), true), '220 de ani', '220 years = 220 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'peste câteva secunde', 'prefix'); - assert.equal(moment(0).from(30000), 'câteva secunde în urmă', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'câteva secunde în urmă', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'peste câteva secunde', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'peste 5 zile', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'azi la 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'azi la 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'azi la 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'mâine la 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'azi la 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ieri la 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [la] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [la] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [la] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ru'); - - test('parse', function (assert) { - var tests = 'январь янв_февраль фев_март март_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('parse exceptional case', function (assert) { - assert.equal(moment('11 мая 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989'); - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, HH:mm:ss', 'воскресенье, 14-го февраля 2010, 15:25:50'], - ['ddd, h A', 'вс, 3 дня'], - ['M Mo MM MMMM MMM', '2 2-й 02 февраль фев'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-го 14'], - ['d do dddd ddd dd', '0 0-й воскресенье вс вс'], - ['DDD DDDo DDDD', '45 45-й 045'], - ['w wo ww', '7 7-я 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'дня дня'], - ['DDDo [день года]', '45-й день года'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 февраля 2010 г.'], - ['LLL', '14 февраля 2010 г., 15:25'], - ['LLLL', 'воскресенье, 14 февраля 2010 г., 15:25'], - ['l', '14.2.2010'], - ['ll', '14 фев 2010 г.'], - ['lll', '14 фев 2010 г., 15:25'], - ['llll', 'вс, 14 фев 2010 г., 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format meridiem', function (assert) { - assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ночи', 'night'); - assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'ночи', 'night'); - assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'утра', 'morning'); - assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'утра', 'morning'); - assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'дня', 'afternoon'); - assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'дня', 'afternoon'); - assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'вечера', 'evening'); - assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'вечера', 'evening'); - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й'); - }); - - test('format month', function (assert) { - var expected = 'январь янв_февраль фев_март март_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format month case', function (assert) { - var months = { - 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); - assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); - } - }); - - test('format month short case', function (assert) { - var monthsShort = { - 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); - assert.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.nominative[i]); - } - }); - - test('format month case with escaped symbols', function (assert) { - var months = { - 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); - assert.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMMM[</b>]'), '<i>1</i> <b>' + months.accusative[i] + '</b>', '1 <b>' + months.accusative[i] + '</b>'); - assert.equal(moment([2013, i, 1]).format('D[-й день] MMMM'), '1-й день ' + months.accusative[i], '1-й день ' + months.accusative[i]); - assert.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]); - } - }); - - test('format month short case with escaped symbols', function (assert) { - var monthsShort = { - 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); - assert.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMM[</b>]'), '<i>1</i> <b>' + monthsShort.accusative[i] + '</b>', '1 <b>' + monthsShort.accusative[i] + '</b>'); - assert.equal(moment([2013, i, 1]).format('D[-й день] MMM'), '1-й день ' + monthsShort.accusative[i], '1-й день ' + monthsShort.accusative[i]); - assert.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]); - } - }); - - test('format week', function (assert) { - var expected = 'воскресенье вс вс_понедельник пн пн_вторник вт вт_среда ср ср_четверг чт чт_пятница пт пт_суббота сб сб'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'несколько секунд', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'минута', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'минута', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минуты', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 31}), true), '31 минута', '31 minutes = 31 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минуты', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'час', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'час', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 часа', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 часов', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 час', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'день', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'день', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дня', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'день', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дней', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 дней', '11 days = 11 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 день', '21 days = 21 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дней', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месяц', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месяц', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месяц', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месяца', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месяца', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месяца', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месяц', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месяцев', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'год', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 года', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'год', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 лет', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'через несколько секунд', 'prefix'); - assert.equal(moment(0).from(30000), 'несколько секунд назад', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'через несколько секунд', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'через 5 дней', 'in 5 days'); - assert.equal(moment().add({m: 31}).fromNow(), 'через 31 минуту', 'in 31 minutes = in 31 minutes'); - assert.equal(moment().subtract({m: 31}).fromNow(), '31 минуту назад', '31 minutes ago = 31 minutes ago'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Сегодня в 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Сегодня в 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Сегодня в 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Завтра в 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Сегодня в 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчера в 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - function makeFormat(d) { - return d.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; - } - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m, now; - - function makeFormatLast(d) { - switch (d.day()) { - case 0: - return '[В прошлое] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd [в] LT'; - } - } - - function makeFormatThis(d) { - switch (d.day()) { - case 2: - return '[Во] dddd [в] LT'; - case 0: - case 1: - case 3: - case 4: - case 5: - case 6: - return '[В] dddd [в] LT'; - } - } - - now = moment().startOf('week'); - for (i = 2; i < 7; i++) { - m = moment(now).subtract({d: i}); - assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days end of day'); - } - - now = moment().endOf('week'); - for (i = 2; i < 7; i++) { - m = moment(now).subtract({d: i}); - assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-я', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-я', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-я', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-я', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-я', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('si'); - - /*jshint -W100*/ - test('parse', function (assert) { - var tests = 'ජනවාරි ජන_පෙබරවාරි පෙබ_මාර්තු මාර්_අප්රේල් අප්_මැයි මැයි_ජූනි ජූනි_ජූලි ජූලි_අගෝස්තු අගෝ_සැප්තැම්බර් සැප්_ඔක්තෝබර් ඔක්_නොවැම්බර් නොවැ_දෙසැම්බර් දෙසැ'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['YYYY MMMM Do dddd, a h:mm:ss', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], - ['YYYY MMMM Do dddd, a h:mm:ss', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], - ['ddd, A h', 'ඉරි, පස් වරු 3'], - ['M Mo MM MMMM MMM', '2 2 වැනි 02 පෙබරවාරි පෙබ'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 වැනි 14'], - ['d do dddd ddd dd', '0 0 වැනි ඉරිදා ඉරි ඉ'], - ['DDD DDDo DDDD', '45 45 වැනි 045'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'ප.ව. පස් වරු'], - ['[වසරේ] DDDo [දිනය]', 'වසරේ 45 වැනි දිනය'], - ['LTS', 'ප.ව. 3:25:50'], - ['LT', 'ප.ව. 3:25'], - ['L', '2010/02/14'], - ['LL', '2010 පෙබරවාරි 14'], - ['LLL', '2010 පෙබරවාරි 14, ප.ව. 3:25'], - ['LLLL', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], - ['l', '2010/2/14'], - ['ll', '2010 පෙබ 14'], - ['lll', '2010 පෙබ 14, ප.ව. 3:25'], - ['llll', '2010 පෙබ 14 වැනි ඉරි, ප.ව. 3:25:50'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1 වැනි', '1 වැනි'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2 වැනි', '2 වැනි'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3 වැනි', '3 වැනි'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4 වැනි', '4 වැනි'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5 වැනි', '5 වැනි'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6 වැනි', '6 වැනි'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7 වැනි', '7 වැනි'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8 වැනි', '8 වැනි'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9 වැනි', '9 වැනි'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10 වැනි', '10 වැනි'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11 වැනි', '11 වැනි'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12 වැනි', '12 වැනි'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13 වැනි', '13 වැනි'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14 වැනි', '14 වැනි'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15 වැනි', '15 වැනි'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16 වැනි', '16 වැනි'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17 වැනි', '17 වැනි'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18 වැනි', '18 වැනි'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19 වැනි', '19 වැනි'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20 වැනි', '20 වැනි'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21 වැනි', '21 වැනි'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22 වැනි', '22 වැනි'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23 වැනි', '23 වැනි'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24 වැනි', '24 වැනි'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25 වැනි', '25 වැනි'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26 වැනි', '26 වැනි'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27 වැනි', '27 වැනි'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28 වැනි', '28 වැනි'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29 වැනි', '29 වැනි'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30 වැනි', '30 වැනි'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31 වැනි', '31 වැනි'); - }); - - test('format month', function (assert) { - var expected = 'ජනවාරි ජන_පෙබරවාරි පෙබ_මාර්තු මාර්_අප්රේල් අප්_මැයි මැයි_ජූනි ජූනි_ජූලි ජූලි_අගෝස්තු අගෝ_සැප්තැම්බර් සැප්_ඔක්තෝබර් ඔක්_නොවැම්බර් නොවැ_දෙසැම්බර් දෙසැ'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'ඉරිදා ඉරි ඉ_සඳුදා සඳු ස_අඟහරුවාදා අඟ අ_බදාදා බදා බ_බ්රහස්පතින්දා බ්රහ බ්ර_සිකුරාදා සිකු සි_සෙනසුරාදා සෙන සෙ'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'තත්පර කිහිපය', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'මිනිත්තුව', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'මිනිත්තුව', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'මිනිත්තු 2', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'මිනිත්තු 44', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'පැය', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'පැය', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'පැය 2', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'පැය 5', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'පැය 21', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'දිනය', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'දිනය', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'දින 2', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'දිනය', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'දින 5', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'දින 25', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'මාසය', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'මාසය', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'මාසය', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'මාස 2', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'මාස 2', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'මාස 3', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'මාසය', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'මාස 5', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'වසර', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'වසර 2', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'වසර', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'වසර 5', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'තත්පර කිහිපයකින්', 'prefix'); - assert.equal(moment(0).from(30000), 'තත්පර කිහිපයකට පෙර', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'තත්පර කිහිපයකට පෙර', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'තත්පර කිහිපයකින්', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'දින 5කින්', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'අද පෙ.ව. 2:00ට', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'අද පෙ.ව. 2:25ට', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'අද පෙ.ව. 3:00ට', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'හෙට පෙ.ව. 2:00ට', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'අද පෙ.ව. 1:00ට', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ඊයේ පෙ.ව. 2:00ට', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('sk'); - - test('parse', function (assert) { - var tests = 'január jan._február feb._marec mar._apríl apr._máj máj_jún jún._júl júl._august aug._september sep._október okt._november nov._december dec.'.split('_'), i; - function equalTest(input, mmm, monthIndex) { - assert.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss', 'nedeľa, február 14. 2010, 3:25:50'], - ['ddd, h', 'ne, 3'], - ['M Mo MM MMMM MMM', '2 2. 02 február feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. nedeľa ne ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['DDDo [deň v roku]', '45. deň v roku'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. február 2010'], - ['LLL', '14. február 2010 15:25'], - ['LLLL', 'nedeľa 14. február 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. feb 2010'], - ['lll', '14. feb 2010 15:25'], - ['llll', 'ne 14. feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'január jan_február feb_marec mar_apríl apr_máj máj_jún jún_júl júl_august aug_september sep_október okt_november nov_december dec'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'nedeľa ne ne_pondelok po po_utorok ut ut_streda st st_štvrtok št št_piatok pi pi_sobota so so'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'pár sekúnd', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minúta', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minúta', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minúty', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minút', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'hodina', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'hodina', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hodiny', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hodín', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hodín', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'deň', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'deň', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'deň', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dní', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dní', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mesiac', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mesiac', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mesiac', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesiace', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesiace', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesiace', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mesiac', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesiacov', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'rok', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 roky', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'rok', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 rokov', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za pár sekúnd', 'prefix'); - assert.equal(moment(0).from(30000), 'pred pár sekundami', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'pred pár sekundami', 'now from now should display as in the past'); - }); - - test('fromNow (future)', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'za pár sekúnd', 'in a few seconds'); - assert.equal(moment().add({m: 1}).fromNow(), 'za minútu', 'in a minute'); - assert.equal(moment().add({m: 3}).fromNow(), 'za 3 minúty', 'in 3 minutes'); - assert.equal(moment().add({m: 10}).fromNow(), 'za 10 minút', 'in 10 minutes'); - assert.equal(moment().add({h: 1}).fromNow(), 'za hodinu', 'in an hour'); - assert.equal(moment().add({h: 3}).fromNow(), 'za 3 hodiny', 'in 3 hours'); - assert.equal(moment().add({h: 10}).fromNow(), 'za 10 hodín', 'in 10 hours'); - assert.equal(moment().add({d: 1}).fromNow(), 'za deň', 'in a day'); - assert.equal(moment().add({d: 3}).fromNow(), 'za 3 dni', 'in 3 days'); - assert.equal(moment().add({d: 10}).fromNow(), 'za 10 dní', 'in 10 days'); - assert.equal(moment().add({M: 1}).fromNow(), 'za mesiac', 'in a month'); - assert.equal(moment().add({M: 3}).fromNow(), 'za 3 mesiace', 'in 3 months'); - assert.equal(moment().add({M: 10}).fromNow(), 'za 10 mesiacov', 'in 10 months'); - assert.equal(moment().add({y: 1}).fromNow(), 'za rok', 'in a year'); - assert.equal(moment().add({y: 3}).fromNow(), 'za 3 roky', 'in 3 years'); - assert.equal(moment().add({y: 10}).fromNow(), 'za 10 rokov', 'in 10 years'); - }); - - test('fromNow (past)', function (assert) { - assert.equal(moment().subtract({s: 30}).fromNow(), 'pred pár sekundami', 'a few seconds ago'); - assert.equal(moment().subtract({m: 1}).fromNow(), 'pred minútou', 'a minute ago'); - assert.equal(moment().subtract({m: 3}).fromNow(), 'pred 3 minútami', '3 minutes ago'); - assert.equal(moment().subtract({m: 10}).fromNow(), 'pred 10 minútami', '10 minutes ago'); - assert.equal(moment().subtract({h: 1}).fromNow(), 'pred hodinou', 'an hour ago'); - assert.equal(moment().subtract({h: 3}).fromNow(), 'pred 3 hodinami', '3 hours ago'); - assert.equal(moment().subtract({h: 10}).fromNow(), 'pred 10 hodinami', '10 hours ago'); - assert.equal(moment().subtract({d: 1}).fromNow(), 'pred dňom', 'a day ago'); - assert.equal(moment().subtract({d: 3}).fromNow(), 'pred 3 dňami', '3 days ago'); - assert.equal(moment().subtract({d: 10}).fromNow(), 'pred 10 dňami', '10 days ago'); - assert.equal(moment().subtract({M: 1}).fromNow(), 'pred mesiacom', 'a month ago'); - assert.equal(moment().subtract({M: 3}).fromNow(), 'pred 3 mesiacmi', '3 months ago'); - assert.equal(moment().subtract({M: 10}).fromNow(), 'pred 10 mesiacmi', '10 months ago'); - assert.equal(moment().subtract({y: 1}).fromNow(), 'pred rokom', 'a year ago'); - assert.equal(moment().subtract({y: 3}).fromNow(), 'pred 3 rokmi', '3 years ago'); - assert.equal(moment().subtract({y: 10}).fromNow(), 'pred 10 rokmi', '10 years ago'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'dnes o 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'dnes o 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'dnes o 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'zajtra o 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'dnes o 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'včera o 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m, nextDay; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - nextDay = ''; - switch (m.day()) { - case 0: - nextDay = 'v nedeľu'; - break; - case 1: - nextDay = 'v pondelok'; - break; - case 2: - nextDay = 'v utorok'; - break; - case 3: - nextDay = 'v stredu'; - break; - case 4: - nextDay = 'vo štvrtok'; - break; - case 5: - nextDay = 'v piatok'; - break; - case 6: - nextDay = 'v sobotu'; - break; - } - assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m, lastDay; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - lastDay = ''; - switch (m.day()) { - case 0: - lastDay = 'minulú nedeľu'; - break; - case 1: - lastDay = 'minulý pondelok'; - break; - case 2: - lastDay = 'minulý utorok'; - break; - case 3: - lastDay = 'minulú stredu'; - break; - case 4: - lastDay = 'minulý štvrtok'; - break; - case 5: - lastDay = 'minulý piatok'; - break; - case 6: - lastDay = 'minulú sobotu'; - break; - } - assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('humanize duration', function (assert) { - assert.equal(moment.duration(1, 'minutes').humanize(), 'minúta', 'a minute (future)'); - assert.equal(moment.duration(1, 'minutes').humanize(true), 'za minútu', 'in a minute'); - assert.equal(moment.duration(-1, 'minutes').humanize(), 'minúta', 'a minute (past)'); - assert.equal(moment.duration(-1, 'minutes').humanize(true), 'pred minútou', 'a minute ago'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('sl'); - - test('parse', function (assert) { - var tests = 'januar jan._februar feb._marec mar._april apr._maj maj_junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'], - ['ddd, hA', 'ned., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. nedelja ned. ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14. 02. 2010'], - ['LL', '14. februar 2010'], - ['LLL', '14. februar 2010 15:25'], - ['LLLL', 'nedelja, 14. februar 2010 15:25'], - ['l', '14. 2. 2010'], - ['ll', '14. feb. 2010'], - ['lll', '14. feb. 2010 15:25'], - ['llll', 'ned., 14. feb. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'januar jan._februar feb._marec mar._april apr._maj maj._junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'nedelja ned. ne_ponedeljek pon. po_torek tor. to_sreda sre. sr_četrtek čet. če_petek pet. pe_sobota sob. so'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nekaj sekund', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ena minuta', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ena minuta', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuti', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minut', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ena ura', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ena ura', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uri', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ur', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ur', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dan', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dan', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dan', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dni', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en mesec', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en mesec', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en mesec', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meseca', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meseca', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesece', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en mesec', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesecev', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eno leto', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 leti', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eno leto', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years = 5 years'); - - assert.equal(start.from(moment([2007, 1, 28]).add({m: 1}), true), 'ena minuta', 'a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 2}), true), '2 minuti', '2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 3}), true), '3 minute', '3 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 4}), true), '4 minute', '4 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 5}), true), '5 minut', '5 minutes'); - - assert.equal(start.from(moment([2007, 1, 28]).add({h: 1}), true), 'ena ura', 'an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 2}), true), '2 uri', '2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 3}), true), '3 ure', '3 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 4}), true), '4 ure', '4 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ur', '5 hours'); - - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dan', 'a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 2}), true), '2 dni', '2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 3}), true), '3 dni', '3 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 4}), true), '4 dni', '4 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days'); - - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en mesec', 'a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 2}), true), '2 meseca', '2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 3}), true), '3 mesece', '3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 4}), true), '4 mesece', '4 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesecev', '5 months'); - - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eno leto', 'a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), '2 leti', '2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), '3 leta', '3 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), '4 leta', '4 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'čez nekaj sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'pred nekaj sekundami', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'pred nekaj sekundami', 'now from now should display as in the past'); - }); - - test('fromNow (future)', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'čez nekaj sekund', 'in a few seconds'); - assert.equal(moment().add({m: 1}).fromNow(), 'čez eno minuto', 'in a minute'); - assert.equal(moment().add({m: 2}).fromNow(), 'čez 2 minuti', 'in 2 minutes'); - assert.equal(moment().add({m: 3}).fromNow(), 'čez 3 minute', 'in 3 minutes'); - assert.equal(moment().add({m: 4}).fromNow(), 'čez 4 minute', 'in 4 minutes'); - assert.equal(moment().add({m: 5}).fromNow(), 'čez 5 minut', 'in 5 minutes'); - - assert.equal(moment().add({h: 1}).fromNow(), 'čez eno uro', 'in an hour'); - assert.equal(moment().add({h: 2}).fromNow(), 'čez 2 uri', 'in 2 hours'); - assert.equal(moment().add({h: 3}).fromNow(), 'čez 3 ure', 'in 3 hours'); - assert.equal(moment().add({h: 4}).fromNow(), 'čez 4 ure', 'in 4 hours'); - assert.equal(moment().add({h: 5}).fromNow(), 'čez 5 ur', 'in 5 hours'); - - assert.equal(moment().add({d: 1}).fromNow(), 'čez en dan', 'in a day'); - assert.equal(moment().add({d: 2}).fromNow(), 'čez 2 dni', 'in 2 days'); - assert.equal(moment().add({d: 3}).fromNow(), 'čez 3 dni', 'in 3 days'); - assert.equal(moment().add({d: 4}).fromNow(), 'čez 4 dni', 'in 4 days'); - assert.equal(moment().add({d: 5}).fromNow(), 'čez 5 dni', 'in 5 days'); - - assert.equal(moment().add({M: 1}).fromNow(), 'čez en mesec', 'in a month'); - assert.equal(moment().add({M: 2}).fromNow(), 'čez 2 meseca', 'in 2 months'); - assert.equal(moment().add({M: 3}).fromNow(), 'čez 3 mesece', 'in 3 months'); - assert.equal(moment().add({M: 4}).fromNow(), 'čez 4 mesece', 'in 4 months'); - assert.equal(moment().add({M: 5}).fromNow(), 'čez 5 mesecev', 'in 5 months'); - - assert.equal(moment().add({y: 1}).fromNow(), 'čez eno leto', 'in a year'); - assert.equal(moment().add({y: 2}).fromNow(), 'čez 2 leti', 'in 2 years'); - assert.equal(moment().add({y: 3}).fromNow(), 'čez 3 leta', 'in 3 years'); - assert.equal(moment().add({y: 4}).fromNow(), 'čez 4 leta', 'in 4 years'); - assert.equal(moment().add({y: 5}).fromNow(), 'čez 5 let', 'in 5 years'); - - assert.equal(moment().subtract({s: 30}).fromNow(), 'pred nekaj sekundami', 'a few seconds ago'); - - assert.equal(moment().subtract({m: 1}).fromNow(), 'pred eno minuto', 'a minute ago'); - assert.equal(moment().subtract({m: 2}).fromNow(), 'pred 2 minutama', '2 minutes ago'); - assert.equal(moment().subtract({m: 3}).fromNow(), 'pred 3 minutami', '3 minutes ago'); - assert.equal(moment().subtract({m: 4}).fromNow(), 'pred 4 minutami', '4 minutes ago'); - assert.equal(moment().subtract({m: 5}).fromNow(), 'pred 5 minutami', '5 minutes ago'); - - assert.equal(moment().subtract({h: 1}).fromNow(), 'pred eno uro', 'an hour ago'); - assert.equal(moment().subtract({h: 2}).fromNow(), 'pred 2 urama', '2 hours ago'); - assert.equal(moment().subtract({h: 3}).fromNow(), 'pred 3 urami', '3 hours ago'); - assert.equal(moment().subtract({h: 4}).fromNow(), 'pred 4 urami', '4 hours ago'); - assert.equal(moment().subtract({h: 5}).fromNow(), 'pred 5 urami', '5 hours ago'); - - assert.equal(moment().subtract({d: 1}).fromNow(), 'pred enim dnem', 'a day ago'); - assert.equal(moment().subtract({d: 2}).fromNow(), 'pred 2 dnevoma', '2 days ago'); - assert.equal(moment().subtract({d: 3}).fromNow(), 'pred 3 dnevi', '3 days ago'); - assert.equal(moment().subtract({d: 4}).fromNow(), 'pred 4 dnevi', '4 days ago'); - assert.equal(moment().subtract({d: 5}).fromNow(), 'pred 5 dnevi', '5 days ago'); - - assert.equal(moment().subtract({M: 1}).fromNow(), 'pred enim mesecem', 'a month ago'); - assert.equal(moment().subtract({M: 2}).fromNow(), 'pred 2 mesecema', '2 months ago'); - assert.equal(moment().subtract({M: 3}).fromNow(), 'pred 3 meseci', '3 months ago'); - assert.equal(moment().subtract({M: 4}).fromNow(), 'pred 4 meseci', '4 months ago'); - assert.equal(moment().subtract({M: 5}).fromNow(), 'pred 5 meseci', '5 months ago'); - - assert.equal(moment().subtract({y: 1}).fromNow(), 'pred enim letom', 'a year ago'); - assert.equal(moment().subtract({y: 2}).fromNow(), 'pred 2 letoma', '2 years ago'); - assert.equal(moment().subtract({y: 3}).fromNow(), 'pred 3 leti', '3 years ago'); - assert.equal(moment().subtract({y: 4}).fromNow(), 'pred 4 leti', '4 years ago'); - assert.equal(moment().subtract({y: 5}).fromNow(), 'pred 5 leti', '5 years ago'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'danes ob 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'danes ob 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'danes ob 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'jutri ob 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'danes ob 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'včeraj ob 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[prejšnjo] [nedeljo] [ob] LT'; - case 3: - return '[prejšnjo] [sredo] [ob] LT'; - case 6: - return '[prejšnjo] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('sq'); - - test('parse', function (assert) { - var i, - tests = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split('_'); - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, HH:mm:ss', 'E Diel, Shkurt 14. 2010, 15:25:50'], - ['ddd, HH', 'Die, 15'], - ['M Mo MM MMMM MMM', '2 2. 02 Shkurt Shk'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. E Diel Die D'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'MD MD'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 Shkurt 2010'], - ['LLL', '14 Shkurt 2010 15:25'], - ['LLLL', 'E Diel, 14 Shkurt 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Shk 2010'], - ['lll', '14 Shk 2010 15:25'], - ['llll', 'Die, 14 Shk 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), 'PD', 'before dawn'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'MD', 'noon'); - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var i, - expected = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var i, - expected = 'E Diel Die D_E Hënë Hën H_E Martë Mar Ma_E Mërkurë Mër Më_E Enjte Enj E_E Premte Pre P_E Shtunë Sht Sh'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'disa sekonda', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'një minutë', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'një minutë', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuta', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'një orë', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'një orë', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 orë', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 orë', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 orë', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'një ditë', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'një ditë', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ditë', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'një ditë', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ditë', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ditë', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'një muaj', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'një muaj', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'një muaj', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 muaj', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 muaj', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 muaj', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'një muaj', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 muaj', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'një vit', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 vite', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'një vit', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 vite', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'në disa sekonda', 'prefix'); - assert.equal(moment(0).from(30000), 'disa sekonda më parë', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'disa sekonda më parë', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'në disa sekonda', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'në 5 ditë', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Sot në 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Sot në 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Sot në 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Nesër në 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Sot në 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Dje në 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [në] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [në] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [në] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('sr-cyrl'); - - test('parse', function (assert) { - var tests = 'јануар јан._фебруар феб._март мар._април апр._мај мај_јун јун_јул јул_август авг._септембар сеп._октобар окт._новембар нов._децембар дец.'.split('_'), - i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'недеља, 14. фебруар 2010, 3:25:50 pm'], - ['ddd, hA', 'нед., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 фебруар феб.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. недеља нед. не'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14. 02. 2010'], - ['LL', '14. фебруар 2010'], - ['LLL', '14. фебруар 2010 15:25'], - ['LLLL', 'недеља, 14. фебруар 2010 15:25'], - ['l', '14. 2. 2010'], - ['ll', '14. феб. 2010'], - ['lll', '14. феб. 2010 15:25'], - ['llll', 'нед., 14. феб. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'јануар јан._фебруар феб._март мар._април апр._мај мај_јун јун_јул јул_август авг._септембар сеп._октобар окт._новембар нов._децембар дец.'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'недеља нед. не_понедељак пон. по_уторак уто. ут_среда сре. ср_четвртак чет. че_петак пет. пе_субота суб. су'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'неколико секунди', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'један минут', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'један минут', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минуте', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минута', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'један сат', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'један сат', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 сата', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 сати', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 сати', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'дан', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'дан', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дана', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'дан', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дана', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дана', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месец', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месец', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месец', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месеца', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месеца', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месеца', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месец', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месеци', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'годину', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 године', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'годину', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 година', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'за неколико секунди', 'prefix'); - assert.equal(moment(0).from(30000), 'пре неколико секунди', 'prefix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'пре неколико секунди', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'за неколико секунди', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'за 5 дана', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'данас у 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'данас у 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'данас у 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'сутра у 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'данас у 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'јуче у 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - var lastWeekDay = [ - '[прошле] [недеље] [у] LT', - '[прошлог] [понедељка] [у] LT', - '[прошлог] [уторка] [у] LT', - '[прошле] [среде] [у] LT', - '[прошлог] [четвртка] [у] LT', - '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' - ]; - - return lastWeekDay[d.day()]; - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('sr'); - - test('parse', function (assert) { - var tests = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), - i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'], - ['ddd, hA', 'ned., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. nedelja ned. ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14. 02. 2010'], - ['LL', '14. februar 2010'], - ['LLL', '14. februar 2010 15:25'], - ['LLLL', 'nedelja, 14. februar 2010 15:25'], - ['l', '14. 2. 2010'], - ['ll', '14. feb. 2010'], - ['lll', '14. feb. 2010 15:25'], - ['llll', 'ned., 14. feb. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'nedelja ned. ne_ponedeljak pon. po_utorak uto. ut_sreda sre. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'), - i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nekoliko sekundi', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedan minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedan minut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mesec', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mesec', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mesec', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meseca', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meseca', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meseca', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mesec', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meseci', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za nekoliko sekundi', 'prefix'); - assert.equal(moment(0).from(30000), 'pre nekoliko sekundi', 'prefix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'pre nekoliko sekundi', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'za nekoliko sekundi', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'danas u 2:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 2:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 3:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'sutra u 2:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 1:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'juče u 2:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[u] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - var lastWeekDay = [ - '[prošle] [nedelje] [u] LT', - '[prošlog] [ponedeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - - return lastWeekDay[d.day()]; - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('sv'); - - test('parse', function (assert) { - var tests = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'söndag, februari 14e 2010, 3:25:50 pm'], - ['ddd, hA', 'sön, 3PM'], - ['M Mo MM MMMM MMM', '2 2a 02 februari feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14e 14'], - ['d do dddd ddd dd', '0 0e söndag sön sö'], - ['DDD DDDo DDDD', '45 45e 045'], - ['w wo ww', '6 6e 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45e day of the year'], - ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', '14 februari 2010'], - ['LLL', '14 februari 2010 15:25'], - ['LLLL', 'söndag 14 februari 2010 15:25'], - ['l', '2010-2-14'], - ['ll', '14 feb 2010'], - ['lll', '14 feb 2010 15:25'], - ['llll', 'sön 14 feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a'); - }); - - test('format month', function (assert) { - var expected = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'söndag sön sö_måndag mån må_tisdag tis ti_onsdag ons on_torsdag tor to_fredag fre fr_lördag lör lö'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'några sekunder', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'en minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'en minut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuter', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuter', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en timme', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en timme', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timmar', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timmar', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timmar', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en månad', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en månad', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en månad', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 månader', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 månader', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 månader', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en månad', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 månader', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ett år', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ett år', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'om några sekunder', 'prefix'); - assert.equal(moment(0).from(30000), 'för några sekunder sedan', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'för några sekunder sedan', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'om några sekunder', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dagar', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Idag 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Idag 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Idag 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Imorgon 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Idag 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Igår 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52a', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1a', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1a', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2a', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2a', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('ta'); - - test('parse', function (assert) { - var tests = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'ஞாயிற்றுக்கிழமை, பிப்ரவரி 14வது 2010, 3:25:50 எற்பாடு'], - ['ddd, hA', 'ஞாயிறு, 3 எற்பாடு'], - ['M Mo MM MMMM MMM', '2 2வது 02 பிப்ரவரி பிப்ரவரி'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14வது 14'], - ['d do dddd ddd dd', '0 0வது ஞாயிற்றுக்கிழமை ஞாயிறு ஞா'], - ['DDD DDDo DDDD', '45 45வது 045'], - ['w wo ww', '8 8வது 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', ' எற்பாடு எற்பாடு'], - ['[ஆண்டின்] DDDo [நாள்]', 'ஆண்டின் 45வது நாள்'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 பிப்ரவரி 2010'], - ['LLL', '14 பிப்ரவரி 2010, 15:25'], - ['LLLL', 'ஞாயிற்றுக்கிழமை, 14 பிப்ரவரி 2010, 15:25'], - ['l', '14/2/2010'], - ['ll', '14 பிப்ரவரி 2010'], - ['lll', '14 பிப்ரவரி 2010, 15:25'], - ['llll', 'ஞாயிறு, 14 பிப்ரவரி 2010, 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1வது', '1வது'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2வது', '2வது'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3வது', '3வது'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4வது', '4வது'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5வது', '5வது'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6வது', '6வது'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7வது', '7வது'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8வது', '8வது'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9வது', '9வது'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10வது', '10வது'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11வது', '11வது'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12வது', '12வது'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13வது', '13வது'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14வது', '14வது'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15வது', '15வது'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16வது', '16வது'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17வது', '17வது'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18வது', '18வது'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19வது', '19வது'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20வது', '20வது'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21வது', '21வது'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22வது', '22வது'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23வது', '23வது'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24வது', '24வது'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25வது', '25வது'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26வது', '26வது'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27வது', '27வது'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28வது', '28வது'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29வது', '29வது'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30வது', '30வது'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31வது', '31வது'); - }); - - test('format month', function (assert) { - var expected = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'ஞாயிற்றுக்கிழமை ஞாயிறு ஞா_திங்கட்கிழமை திங்கள் தி_செவ்வாய்கிழமை செவ்வாய் செ_புதன்கிழமை புதன் பு_வியாழக்கிழமை வியாழன் வி_வெள்ளிக்கிழமை வெள்ளி வெ_சனிக்கிழமை சனி ச'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ஒரு சில விநாடிகள்', '44 விநாடிகள் = ஒரு சில விநாடிகள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ஒரு நிமிடம்', '45 விநாடிகள் = ஒரு நிமிடம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ஒரு நிமிடம்', '89 விநாடிகள் = ஒரு நிமிடம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 நிமிடங்கள்', '90 விநாடிகள் = 2 நிமிடங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 நிமிடங்கள்', '44 நிமிடங்கள் = 44 நிமிடங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ஒரு மணி நேரம்', '45 நிமிடங்கள் = ஒரு மணி நேரம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ஒரு மணி நேரம்', '89 நிமிடங்கள் = ஒரு மணி நேரம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 மணி நேரம்', '90 நிமிடங்கள் = 2 மணி நேரம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 மணி நேரம்', '5 மணி நேரம் = 5 மணி நேரம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 மணி நேரம்', '21 மணி நேரம் = 21 மணி நேரம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ஒரு நாள்', '22 மணி நேரம் = ஒரு நாள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ஒரு நாள்', '35 மணி நேரம் = ஒரு நாள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 நாட்கள்', '36 மணி நேரம் = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ஒரு நாள்', '1 நாள் = ஒரு நாள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 நாட்கள்', '5 நாட்கள் = 5 நாட்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 நாட்கள்', '25 நாட்கள் = 25 நாட்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ஒரு மாதம்', '26 நாட்கள் = ஒரு மாதம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ஒரு மாதம்', '30 நாட்கள் = ஒரு மாதம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ஒரு மாதம்', '45 நாட்கள் = ஒரு மாதம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 மாதங்கள்', '46 நாட்கள் = 2 மாதங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 மாதங்கள்', '75 நாட்கள் = 2 மாதங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 மாதங்கள்', '76 நாட்கள் = 3 மாதங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ஒரு மாதம்', '1 மாதம் = ஒரு மாதம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 மாதங்கள்', '5 மாதங்கள் = 5 மாதங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ஒரு வருடம்', '345 நாட்கள் = ஒரு வருடம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ஆண்டுகள்', '548 நாட்கள் = 2 ஆண்டுகள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ஒரு வருடம்', '1 வருடம் = ஒரு வருடம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ஆண்டுகள்', '5 ஆண்டுகள் = 5 ஆண்டுகள்'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'ஒரு சில விநாடிகள் இல்', 'prefix'); - assert.equal(moment(0).from(30000), 'ஒரு சில விநாடிகள் முன்', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'ஒரு சில விநாடிகள் முன்', 'இப்போது இருந்து கடந்த காலத்தில் காட்ட வேண்டும்'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'ஒரு சில விநாடிகள் இல்', 'ஒரு சில விநாடிகள் இல்'); - assert.equal(moment().add({d: 5}).fromNow(), '5 நாட்கள் இல்', '5 நாட்கள் இல்'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'இன்று 02:00', 'இன்று 02:00'); - assert.equal(moment(a).add({m: 25}).calendar(), 'இன்று 02:25', 'இன்று 02:25'); - assert.equal(moment(a).add({h: 1}).calendar(), 'இன்று 03:00', 'இன்று 03:00'); - assert.equal(moment(a).add({d: 1}).calendar(), 'நாளை 02:00', 'நாளை 02:00'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'இன்று 01:00', 'இன்று 01:00'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'நேற்று 02:00', 'நேற்று 02:00'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd, LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd, LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd, LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 30]).format('a'), ' யாமம்', '(after) midnight'); - assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), ' வைகறை', 'before dawn'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), ' காலை', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), ' எற்பாடு', 'during day'); - assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), ' எற்பாடு', 'evening'); - assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), ' மாலை', 'late evening'); - assert.equal(moment([2011, 2, 23, 23, 30]).format('a'), ' யாமம்', '(before) midnight'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('meridiem invariant', function (assert) { - var h, m, t1, t2; - for (h = 0; h < 24; ++h) { - for (m = 0; m < 60; m += 15) { - t1 = moment.utc([2000, 0, 1, h, m]); - t2 = moment(t1.format('A h:mm'), 'A h:mm'); - assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), - 'meridiem at ' + t1.format('HH:mm')); - } - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('th'); - - test('parse', function (assert) { - var tests = 'มกราคม มกรา_กุมภาพันธ์ กุมภา_มีนาคม มีนา_เมษายน เมษา_พฤษภาคม พฤษภา_มิถุนายน มิถุนา_กรกฎาคม กรกฎา_สิงหาคม สิงหา_กันยายน กันยา_ตุลาคม ตุลา_พฤศจิกายน พฤศจิกา_ธันวาคม ธันวา'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'อาทิตย์, 14 กุมภาพันธ์ 2010, 3:25:50 หลังเที่ยง'], - ['ddd, h A', 'อาทิตย์, 3 หลังเที่ยง'], - ['M Mo MM MMMM MMM', '2 2 02 กุมภาพันธ์ กุมภา'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 อาทิตย์ อาทิตย์ อา.'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'หลังเที่ยง หลังเที่ยง'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15 นาฬิกา 25 นาที 50 วินาที'], - ['L', '2010/02/14'], - ['LL', '14 กุมภาพันธ์ 2010'], - ['LLL', '14 กุมภาพันธ์ 2010 เวลา 15 นาฬิกา 25 นาที'], - ['LLLL', 'วันอาทิตย์ที่ 14 กุมภาพันธ์ 2010 เวลา 15 นาฬิกา 25 นาที'], - ['l', '2010/2/14'], - ['ll', '14 กุมภา 2010'], - ['lll', '14 กุมภา 2010 เวลา 15 นาฬิกา 25 นาที'], - ['llll', 'วันอาทิตย์ที่ 14 กุมภา 2010 เวลา 15 นาฬิกา 25 นาที'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format month', function (assert) { - var expected = 'มกราคม มกรา_กุมภาพันธ์ กุมภา_มีนาคม มีนา_เมษายน เมษา_พฤษภาคม พฤษภา_มิถุนายน มิถุนา_กรกฎาคม กรกฎา_สิงหาคม สิงหา_กันยายน กันยา_ตุลาคม ตุลา_พฤศจิกายน พฤศจิกา_ธันวาคม ธันวา'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'อาทิตย์ อาทิตย์ อา._จันทร์ จันทร์ จ._อังคาร อังคาร อ._พุธ พุธ พ._พฤหัสบดี พฤหัส พฤ._ศุกร์ ศุกร์ ศ._เสาร์ เสาร์ ส.'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ไม่กี่วินาที', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 นาที', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 นาที', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 นาที', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 นาที', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1 ชั่วโมง', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 ชั่วโมง', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ชั่วโมง', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ชั่วโมง', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ชั่วโมง', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 วัน', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 วัน', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 วัน', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 วัน', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 วัน', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 วัน', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1 เดือน', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 เดือน', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 เดือน', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 เดือน', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 เดือน', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 เดือน', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1 เดือน', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 เดือน', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1 ปี', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ปี', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1 ปี', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ปี', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'อีก ไม่กี่วินาที', 'prefix'); - assert.equal(moment(0).from(30000), 'ไม่กี่วินาทีที่แล้ว', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'ไม่กี่วินาทีที่แล้ว', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'อีก ไม่กี่วินาที', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'อีก 5 วัน', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'วันนี้ เวลา 2 นาฬิกา 0 นาที', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'วันนี้ เวลา 2 นาฬิกา 25 นาที', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'วันนี้ เวลา 3 นาฬิกา 0 นาที', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'พรุ่งนี้ เวลา 2 นาฬิกา 0 นาที', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'วันนี้ เวลา 1 นาฬิกา 0 นาที', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'เมื่อวานนี้ เวลา 2 นาฬิกา 0 นาที', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('tl-ph'); - - test('parse', function (assert) { - var tests = 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split('_'), - i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Linggo, Pebrero 14 2010, 3:25:50 pm'], - ['ddd, hA', 'Lin, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 Pebrero Peb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Linggo Lin Li'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '6 6 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15:25:50'], - ['L', '02/14/2010'], - ['LL', 'Pebrero 14, 2010'], - ['LLL', 'Pebrero 14, 2010 15:25'], - ['LLLL', 'Linggo, Pebrero 14, 2010 15:25'], - ['l', '2/14/2010'], - ['ll', 'Peb 14, 2010'], - ['lll', 'Peb 14, 2010 15:25'], - ['llll', 'Lin, Peb 14, 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var expected = 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Linggo Lin Li_Lunes Lun Lu_Martes Mar Ma_Miyerkules Miy Mi_Huwebes Huw Hu_Biyernes Biy Bi_Sabado Sab Sab'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ilang segundo', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'isang minuto', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'isang minuto', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuto', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuto', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'isang oras', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'isang oras', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 oras', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 oras', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 oras', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'isang araw', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'isang araw', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 araw', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'isang araw', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 araw', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 araw', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'isang buwan', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'isang buwan', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'isang buwan', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 buwan', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 buwan', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 buwan', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'isang buwan', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 buwan', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'isang taon', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 taon', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'isang taon', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 taon', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'sa loob ng ilang segundo', 'prefix'); - assert.equal(moment(0).from(30000), 'ilang segundo ang nakalipas', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'sa loob ng ilang segundo', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'sa loob ng 5 araw', 'in 5 days'); - }); - - test('same day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Ngayon sa 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Ngayon sa 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Ngayon sa 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Bukas sa 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Ngayon sa 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kahapon sa 02:00', 'yesterday at the same time'); - }); - - test('same next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [sa] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [sa] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [sa] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('same last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [huling linggo] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [huling linggo] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [huling linggo] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('same all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('tr'); - - test('parse', function (assert) { - var tests = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Pazar, Şubat 14\'üncü 2010, 3:25:50 pm'], - ['ddd, hA', 'Paz, 3PM'], - ['M Mo MM MMMM MMM', '2 2\'nci 02 Şubat Şub'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14\'üncü 14'], - ['d do dddd ddd dd', '0 0\'ıncı Pazar Paz Pz'], - ['DDD DDDo DDDD', '45 45\'inci 045'], - ['w wo ww', '7 7\'nci 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[yılın] DDDo [günü]', 'yılın 45\'inci günü'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 Şubat 2010'], - ['LLL', '14 Şubat 2010 15:25'], - ['LLLL', 'Pazar, 14 Şubat 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 Şub 2010'], - ['lll', '14 Şub 2010 15:25'], - ['llll', 'Paz, 14 Şub 2010 15:25'] - ], - DDDo = [ - [359, '360\'ıncı'], - [199, '200\'üncü'], - [149, '150\'nci'] - ], - dt = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - DDDoDt, - i; - - for (i = 0; i < a.length; i++) { - assert.equal(dt.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - for (i = 0; i < DDDo.length; i++) { - DDDoDt = moment([2010]); - assert.equal(DDDoDt.add(DDDo[i][0], 'days').format('DDDo'), DDDo[i][1], DDDo[i][0] + ' ---> ' + DDDo[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1\'inci', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2\'nci', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3\'üncü', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4\'üncü', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5\'inci', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6\'ncı', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7\'nci', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8\'inci', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9\'uncu', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10\'uncu', '10th'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11\'inci', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12\'nci', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13\'üncü', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14\'üncü', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15\'inci', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16\'ncı', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17\'nci', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18\'inci', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19\'uncu', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20\'nci', '20th'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21\'inci', '21th'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22\'nci', '22th'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23\'üncü', '23th'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24\'üncü', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25\'inci', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26\'ncı', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27\'nci', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28\'inci', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29\'uncu', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30\'uncu', '30th'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31\'inci', '31st'); - }); - - test('format month', function (assert) { - var expected = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Pazar Paz Pz_Pazartesi Pts Pt_Salı Sal Sa_Çarşamba Çar Ça_Perşembe Per Pe_Cuma Cum Cu_Cumartesi Cts Ct'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'birkaç saniye', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'bir dakika', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'bir dakika', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 dakika', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 dakika', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'bir saat', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'bir saat', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 saat', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 saat', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 saat', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'bir gün', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'bir gün', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 gün', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'bir gün', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 gün', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 gün', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'bir ay', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'bir ay', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'bir ay', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ay', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ay', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ay', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'bir ay', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ay', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'bir yıl', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 yıl', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'bir yıl', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 yıl', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'birkaç saniye sonra', 'prefix'); - assert.equal(moment(0).from(30000), 'birkaç saniye önce', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'birkaç saniye önce', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'birkaç saniye sonra', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 gün sonra', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'bugün saat 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'bugün saat 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'bugün saat 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'yarın saat 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'bugün saat 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'dün 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1\'inci', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1\'inci', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2\'nci', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2\'nci', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3\'üncü', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('tzl'); - - test('parse', function (assert) { - var tests = 'Januar Jan_Fevraglh Fev_Març Mar_Avrïu Avr_Mai Mai_Gün Gün_Julia Jul_Guscht Gus_Setemvar Set_Listopäts Lis_Noemvar Noe_Zecemvar Zec'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h.mm.ss a', 'Súladi, Fevraglh 14. 2010, 3.25.50 d\'o'], - ['ddd, hA', 'Súl, 3D\'O'], - ['M Mo MM MMMM MMM', '2 2. 02 Fevraglh Fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. Súladi Súl Sú'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'd\'o D\'O'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15.25.50'], - ['L', '14.02.2010'], - ['LL', '14. Fevraglh dallas 2010'], - ['LLL', '14. Fevraglh dallas 2010 15.25'], - ['LLLL', 'Súladi, li 14. Fevraglh dallas 2010 15.25'], - ['l', '14.2.2010'], - ['ll', '14. Fev dallas 2010'], - ['lll', '14. Fev dallas 2010 15.25'], - ['llll', 'Súl, li 14. Fev dallas 2010 15.25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - }); - - test('format month', function (assert) { - var expected = 'Januar Jan_Fevraglh Fev_Març Mar_Avrïu Avr_Mai Mai_Gün Gün_Julia Jul_Guscht Gus_Setemvar Set_Listopäts Lis_Noemvar Noe_Zecemvar Zec'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Súladi Súl Sú_Lúneçi Lún Lú_Maitzi Mai Ma_Márcuri Már Má_Xhúadi Xhú Xh_Viénerçi Vié Vi_Sáturi Sát Sá'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'viensas secunds', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '\'n míut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '\'n míut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 míuts', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 míuts', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '\'n þora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '\'n þora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 þoras', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 þoras', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 þoras', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '\'n ziua', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '\'n ziua', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ziuas', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '\'n ziua', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ziuas', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ziuas', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '\'n mes', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '\'n mes', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '\'n mes', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesen', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesen', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesen', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '\'n mes', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesen', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '\'n ar', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ars', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '\'n ar', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ars', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'osprei viensas secunds', 'prefix'); - assert.equal(moment(0).from(30000), 'ja\'iensas secunds', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'ja\'iensas secunds', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'osprei viensas secunds', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'osprei 5 ziuas', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'oxhi à 02.00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'oxhi à 02.25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'oxhi à 03.00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'demà à 02.00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'oxhi à 01.00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ieiri à 02.00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('tzm-latn'); - - test('parse', function (assert) { - var tests = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'asamas, brˤayrˤ 14 2010, 3:25:50 pm'], - ['ddd, hA', 'asamas, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 brˤayrˤ brˤayrˤ'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 asamas asamas asamas'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 brˤayrˤ 2010'], - ['LLL', '14 brˤayrˤ 2010 15:25'], - ['LLLL', 'asamas 14 brˤayrˤ 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 brˤayrˤ 2010'], - ['lll', '14 brˤayrˤ 2010 15:25'], - ['llll', 'asamas 14 brˤayrˤ 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var expected = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'asamas asamas asamas_aynas aynas aynas_asinas asinas asinas_akras akras akras_akwas akwas akwas_asimwas asimwas asimwas_asiḍyas asiḍyas asiḍyas'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'imik', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuḍ', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuḍ', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuḍ', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuḍ', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'saɛa', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'saɛa', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tassaɛin', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tassaɛin', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tassaɛin', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ass', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ass', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ossan', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ass', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ossan', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ossan', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ayowr', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ayowr', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ayowr', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 iyyirn', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 iyyirn', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 iyyirn', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ayowr', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 iyyirn', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'asgas', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 isgasn', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'asgas', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 isgasn', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dadkh s yan imik', 'prefix'); - assert.equal(moment(0).from(30000), 'yan imik', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'yan imik', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dadkh s yan imik', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'dadkh s yan 5 ossan', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'asdkh g 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'asdkh g 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'asdkh g 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'aska g 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'asdkh g 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'assant g 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); - assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); - assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); - assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); - assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); - assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); - assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); - assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('tzm'); - - test('parse', function (assert) { - var tests = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'ⴰⵙⴰⵎⴰⵙ, ⴱⵕⴰⵢⵕ 14 2010, 3:25:50 pm'], - ['ddd, hA', 'ⴰⵙⴰⵎⴰⵙ, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 ⴱⵕⴰⵢⵕ 2010'], - ['LLL', '14 ⴱⵕⴰⵢⵕ 2010 15:25'], - ['LLLL', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 ⴱⵕⴰⵢⵕ 2010'], - ['lll', '14 ⴱⵕⴰⵢⵕ 2010 15:25'], - ['llll', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var expected = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ⵉⵎⵉⴽ', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ⵎⵉⵏⵓⴺ', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ⵎⵉⵏⵓⴺ', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 ⵎⵉⵏⵓⴺ', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 ⵎⵉⵏⵓⴺ', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ⵙⴰⵄⴰ', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ⵙⴰⵄⴰ', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ⵜⴰⵙⵙⴰⵄⵉⵏ', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ⵜⴰⵙⵙⴰⵄⵉⵏ', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ⵜⴰⵙⵙⴰⵄⵉⵏ', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ⴰⵙⵙ', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ⴰⵙⵙ', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 oⵙⵙⴰⵏ', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ⴰⵙⵙ', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 oⵙⵙⴰⵏ', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 oⵙⵙⴰⵏ', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ⴰⵢoⵓⵔ', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ⴰⵢoⵓⵔ', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ⴰⵢoⵓⵔ', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ⵉⵢⵢⵉⵔⵏ', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ⵉⵢⵢⵉⵔⵏ', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ⵉⵢⵢⵉⵔⵏ', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ⴰⵢoⵓⵔ', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ⵉⵢⵢⵉⵔⵏ', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ⴰⵙⴳⴰⵙ', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ⵉⵙⴳⴰⵙⵏ', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ⴰⵙⴳⴰⵙ', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ⵉⵙⴳⴰⵙⵏ', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ', 'prefix'); - assert.equal(moment(0).from(30000), 'ⵢⴰⵏ ⵉⵎⵉⴽ', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'ⵢⴰⵏ ⵉⵎⵉⴽ', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ 5 oⵙⵙⴰⵏ', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'ⴰⵙⴷⵅ ⴴ 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'ⴰⵙⴷⵅ ⴴ 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'ⴰⵙⴷⵅ ⴴ 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'ⴰⵙⴽⴰ ⴴ 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'ⴰⵙⴷⵅ ⴴ 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ⴰⵚⴰⵏⵜ ⴴ 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); - assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); - assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); - assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); - assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); - assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); - assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); - assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('uk'); - - test('parse', function (assert) { - var tests = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень вер_жовтень жовт_листопад лист_грудень груд'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do MMMM YYYY, HH:mm:ss', 'неділя, 14-го лютого 2010, 15:25:50'], - ['ddd, h A', 'нд, 3 дня'], - ['M Mo MM MMMM MMM', '2 2-й 02 лютий лют'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-го 14'], - ['d do dddd ddd dd', '0 0-й неділя нд нд'], - ['DDD DDDo DDDD', '45 45-й 045'], - ['w wo ww', '7 7-й 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'дня дня'], - ['DDDo [день року]', '45-й день року'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 лютого 2010 р.'], - ['LLL', '14 лютого 2010 р., 15:25'], - ['LLLL', 'неділя, 14 лютого 2010 р., 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format meridiem', function (assert) { - assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ночі', 'night'); - assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'ночі', 'night'); - assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'ранку', 'morning'); - assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'ранку', 'morning'); - assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'дня', 'afternoon'); - assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'дня', 'afternoon'); - assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'вечора', 'evening'); - assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'вечора', 'evening'); - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й'); - }); - - test('format month', function (assert) { - var expected = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень вер_жовтень жовт_листопад лист_грудень груд'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format month case', function (assert) { - var months = { - 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), - 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); - assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); - } - }); - - test('format week', function (assert) { - var expected = 'неділя нд нд_понеділок пн пн_вівторок вт вт_середа ср ср_четвер чт чт_п’ятниця пт пт_субота сб сб'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'декілька секунд', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'хвилина', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'хвилина', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 хвилини', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 хвилини', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'годину', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'годину', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 години', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 годин', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 година', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'день', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'день', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дні', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'день', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 днів', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 днів', '11 days = 11 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 день', '21 days = 21 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 днів', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'місяць', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'місяць', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'місяць', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 місяці', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 місяці', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 місяці', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'місяць', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 місяців', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'рік', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 роки', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'рік', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 років', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'за декілька секунд', 'prefix'); - assert.equal(moment(0).from(30000), 'декілька секунд тому', 'suffix'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'за декілька секунд', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'за 5 днів', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Сьогодні о 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Сьогодні о 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Сьогодні о 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Завтра о 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Сьогодні о 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчора о 02:00', 'yesterday at the same time'); - // A special case for Ukrainian since 11 hours have different preposition - assert.equal(moment(a).add({h: 9}).calendar(), 'Сьогодні об 11:00', 'same day at 11 o\'clock'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[У] dddd [о' + (m.hours() === 11 ? 'б' : '') + '] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[У] dddd [о] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[У] dddd [о] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - case 3: - case 5: - case 6: - return '[Минулої] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT'; - case 1: - case 2: - case 4: - return '[Минулого] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-й', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-й', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-й', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-й', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-й', 'Jan 9 2012 should be week 3'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('uz'); - - test('parse', function (assert) { - var tests = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, Do-MMMM YYYY, h:mm:ss', 'Якшанба, 14-февраль 2010, 3:25:50'], - ['ddd, h:mm', 'Якш, 3:25'], - ['M Mo MM MMMM MMM', '2 2 02 февраль фев'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Якшанба Якш Як'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '7 7 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[йилнинг] DDDo-[куни]', 'йилнинг 45-куни'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 февраль 2010'], - ['LLL', '14 февраль 2010 15:25'], - ['LLLL', '14 февраль 2010, Якшанба 15:25'], - ['l', '14/2/2010'], - ['ll', '14 фев 2010'], - ['lll', '14 фев 2010 15:25'], - ['llll', '14 фев 2010, Якш 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var expected = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июн_июль июл_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = 'Якшанба Якш Як_Душанба Душ Ду_Сешанба Сеш Се_Чоршанба Чор Чо_Пайшанба Пай Па_Жума Жум Жу_Шанба Шан Ша'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'фурсат', '44 секунд = фурсат'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'бир дакика', '45 секунд = бир дакика'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'бир дакика', '89 секунд = бир дакика'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 дакика', '90 секунд = 2 дакика'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 дакика', '44 дакика = 44 дакика'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'бир соат', '45 минут = бир соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'бир соат', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 соат', '90 минут = 2 соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 соат', '5 соат = 5 соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 соат', '21 соат = 21 соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'бир кун', '22 соат = бир кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'бир кун', '35 соат = бир кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 кун', '36 соат = 2 кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'бир кун', '1 кун = 1 кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 кун', '5 кун = 5 кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 кун', '25 кун = 25 кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'бир ой', '26 кун = бир ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'бир ой', '30 кун = бир ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'бир ой', '45 кун = бир ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ой', '46 кун = 2 ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ой', '75 кун = 2 ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ой', '76 кун = 3 ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'бир ой', 'бир ой = бир ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ой', '5 ой = 5 ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'бир йил', '345 кун = бир йил'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 йил', '548 кун = 2 йил'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'бир йил', '1 йил = бир йил'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 йил', '5 йил = 5 йил'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'Якин фурсат ичида', 'prefix'); - assert.equal(moment(0).from(30000), 'Бир неча фурсат олдин', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'Бир неча фурсат олдин', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'Якин фурсат ичида', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'Якин 5 кун ичида', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Бугун соат 02:00 да', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Бугун соат 02:25 да', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Бугун соат 03:00 да', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Эртага 02:00 да', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Бугун соат 01:00 да', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Кеча соат 02:00 да', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('vi'); - - test('parse', function (assert) { - var i, - tests = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split('_'); - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + i); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(','); - equalTest(tests[i][0], '[tháng] M', i); - equalTest(tests[i][1], '[Th]M', i); - equalTest(tests[i][0], '[tháng] MM', i); - equalTest(tests[i][1], '[Th]MM', i); - equalTest(tests[i][0].toLocaleLowerCase(), '[THÁNG] M', i); - equalTest(tests[i][1].toLocaleLowerCase(), '[TH]M', i); - equalTest(tests[i][0].toLocaleUpperCase(), '[THÁNG] MM', i); - equalTest(tests[i][1].toLocaleUpperCase(), '[TH]MM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'chủ nhật, tháng 2 14 2010, 3:25:50 pm'], - ['ddd, hA', 'CN, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 tháng 2 Th02'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 chủ nhật CN CN'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '6 6 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[ngày thứ] DDDo [của năm]', 'ngày thứ 45 của năm'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 tháng 2 năm 2010'], - ['LLL', '14 tháng 2 năm 2010 15:25'], - ['LLLL', 'chủ nhật, 14 tháng 2 năm 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Th02 2010'], - ['lll', '14 Th02 2010 15:25'], - ['llll', 'CN, 14 Th02 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - }); - - test('format month', function (assert) { - var i, - expected = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM,MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var i, - expected = 'chủ nhật CN CN_thứ hai T2 T2_thứ ba T3 T3_thứ tư T4 T4_thứ năm T5 T5_thứ sáu T6 T6_thứ bảy T7 T7'.split('_'); - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'vài giây', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'một phút', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'một phút', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 phút', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 phút', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'một giờ', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'một giờ', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 giờ', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 giờ', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 giờ', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'một ngày', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'một ngày', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ngày', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'một ngày', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ngày', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ngày', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'một tháng', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'một tháng', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'một tháng', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 tháng', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 tháng', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 tháng', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'một tháng', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 tháng', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'một năm', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 năm', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'một năm', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 năm', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'vài giây tới', 'prefix'); - assert.equal(moment(0).from(30000), 'vài giây trước', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'vài giây trước', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'vài giây tới', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 ngày tới', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Hôm nay lúc 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hôm nay lúc 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hôm nay lúc 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Ngày mai lúc 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hôm nay lúc 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hôm qua lúc 02:00', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('zh-cn'); - - test('parse', function (assert) { - var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; - - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'], - ['ddd, Ah', '周日, 下午3'], - ['M Mo MM MMMM MMM', '2 2月 02 二月 2月'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14日 14'], - ['d do dddd ddd dd', '0 0日 星期日 周日 日'], - ['DDD DDDo DDDD', '45 45日 045'], - ['w wo ww', '6 6周 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', '下午 下午'], - ['[这年的第] DDDo', '这年的第 45日'], - ['LTS', '下午3点25分50秒'], - ['L', '2010-02-14'], - ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日下午3点25分'], - ['LLLL', '2010年2月14日星期日下午3点25分'], - ['l', '2010-02-14'], - ['ll', '2010年2月14日'], - ['lll', '2010年2月14日下午3点25分'], - ['llll', '2010年2月14日星期日下午3点25分'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format month', function (assert) { - var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = '星期日 周日 日_星期一 周一 一_星期二 周二 二_星期三 周三 三_星期四 周四 四_星期五 周五 五_星期六 周六 六'.split('_'), i; - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '几秒', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 分钟', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 分钟', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 分钟', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 分钟', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1 小时', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 小时', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 小时', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 小时', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 小时', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 天', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 天', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 天', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 天', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 天', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 天', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1 个月', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 个月', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 个月', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 个月', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 个月', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 个月', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1 个月', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 个月', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1 年', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 年', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1 年', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 年', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), '几秒内', 'prefix'); - assert.equal(moment(0).from(30000), '几秒前', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), '几秒前', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), '几秒内', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 天内', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), '今天凌晨2点整', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), '今天凌晨2点25分', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), '今天凌晨3点整', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), '明天凌晨2点整', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), '今天凌晨1点整', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), '昨天凌晨2点整', 'yesterday at the same time'); - }); - - test('calendar current week', function (assert) { - var i, m, - today = moment().startOf('day'); - - for (i = 0; i < 7; i++) { - m = moment().startOf('week').add({d: i}); - if (Math.abs(m.diff(today, 'days')) <= 1) { - continue; // skip today, yesterday, tomorrow - } - assert.equal(m.calendar(), m.format('[本]ddd凌晨12点整'), 'Monday + ' + i + ' days current time'); - } - }); - - test('calendar next week', function (assert) { - var i, m, - today = moment().startOf('day'); - - for (i = 7; i < 14; i++) { - m = moment().startOf('week').add({d: i}); - if (Math.abs(m.diff(today, 'days')) >= 7) { - continue; - } - if (Math.abs(m.diff(today, 'days')) <= 1) { - continue; // skip today, yesterday, tomorrow - } - assert.equal(m.calendar(), m.format('[下]ddd凌晨12点整'), 'Today + ' + i + ' days beginning of day'); - } - assert.equal(42, 42, 'at least one assert'); - }); - - test('calendar last week', function (assert) { - var i, m, - today = moment().startOf('day'); - - for (i = 1; i < 8; i++) { - m = moment().startOf('week').subtract({d: i}); - if ((Math.abs(m.diff(today, 'days')) >= 7) || (Math.abs(m.diff(today, 'days')) <= 1)) { - continue; - } - assert.equal(m.calendar(), m.format('[上]ddd凌晨12点整'), 'Monday - ' + i + ' days next week'); - } - assert.equal(42, 42, 'at least one assert'); - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('LL'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('LL'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('LL'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('LL'), 'in 2 weeks'); - }); - - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), '凌晨', 'before dawn'); - assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning'); - assert.equal(moment([2011, 2, 23, 9, 0]).format('A'), '上午', 'before noon'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon'); - assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon'); - assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 52'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 52, 'Dec 31 2006 should be week 52'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 52, 'Dec 29 2002 should be week 52'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2010, 0, 2]).week(), 53, 'Jan 2 2010 should be week 53'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 8]).week(), 1, 'Jan 8 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52周', 'Jan 1 2012 应该是第52周'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1周', 'Jan 7 2012 应该是第 1周'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2周', 'Jan 14 2012 应该是第 2周'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('meridiem invariant', function (assert) { - var h, m, t1, t2; - for (h = 0; h < 24; ++h) { - for (m = 0; m < 60; m += 15) { - t1 = moment.utc([2000, 0, 1, h, m]); - t2 = moment(t1.format('A h:mm'), 'A h:mm'); - assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), - 'meridiem at ' + t1.format('HH:mm')); - } - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - localeModule('zh-tw'); - - test('parse', function (assert) { - var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('format', function (assert) { - var a = [ - ['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'], - ['ddd, Ah', '週日, 下午3'], - ['M Mo MM MMMM MMM', '2 2月 02 二月 2月'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14日 14'], - ['d do dddd ddd dd', '0 0日 星期日 週日 日'], - ['DDD DDDo DDDD', '45 45日 045'], - ['w wo ww', '8 8週 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', '下午 下午'], - ['[這年的第] DDDo', '這年的第 45日'], - ['LTS', '下午3點25分50秒'], - ['L', '2010年2月14日'], - ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日下午3點25分'], - ['LLLL', '2010年2月14日星期日下午3點25分'], - ['l', '2010年2月14日'], - ['ll', '2010年2月14日'], - ['lll', '2010年2月14日下午3點25分'], - ['llll', '2010年2月14日星期日下午3點25分'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('format month', function (assert) { - var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - test('format week', function (assert) { - var expected = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.split('_'), i; - - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - }); - - test('from', function (assert) { - var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '幾秒', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '一分鐘', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '一分鐘', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2分鐘', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44分鐘', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '一小時', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '一小時', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2小時', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5小時', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21小時', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '一天', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '一天', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2天', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '一天', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5天', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25天', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '一個月', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '一個月', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '一個月', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2個月', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2個月', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3個月', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '一個月', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5個月', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '一年', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2年', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '一年', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5年', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), '幾秒內', 'prefix'); - assert.equal(moment(0).from(30000), '幾秒前', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), '幾秒前', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), '幾秒內', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5天內', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), '今天早上2點00分', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), '今天早上2點25分', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), '今天早上3點00分', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), '明天早上2點00分', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), '今天早上1點00分', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), '昨天早上2點00分', 'yesterday at the same time'); - }); - - test('calendar next week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - var i, m; - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days end of day'); - } - }); - - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); - - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 0]).format('a'), '早上', 'morning'); - assert.equal(moment([2011, 2, 23, 9, 0]).format('a'), '上午', 'before noon'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), '中午', 'noon'); - assert.equal(moment([2011, 2, 23, 13, 0]).format('a'), '下午', 'after noon'); - assert.equal(moment([2011, 2, 23, 18, 0]).format('a'), '晚上', 'night'); - - assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), '早上', 'morning'); - assert.equal(moment([2011, 2, 23, 9, 0]).format('A'), '上午', 'before noon'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon'); - assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon'); - assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night'); - }); - - test('weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); - - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); - - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); - - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - }); - - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1週', 'Jan 1 2012 應該是第 1週'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1週', 'Jan 7 2012 應該是第 1週'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2週', 'Jan 8 2012 應該是第 2週'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2週', 'Jan 14 2012 應該是第 2週'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3週', 'Jan 15 2012 應該是第 3週'); - }); - - test('lenient ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing ' + i + ' date check'); - } - }); - - test('lenient ordinal parsing of number', function (assert) { - var i, testMoment; - for (i = 1; i <= 31; ++i) { - testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); - assert.equal(testMoment.year(), 2014, - 'lenient ordinal parsing of number ' + i + ' year check'); - assert.equal(testMoment.month(), 0, - 'lenient ordinal parsing of number ' + i + ' month check'); - assert.equal(testMoment.date(), i, - 'lenient ordinal parsing of number ' + i + ' date check'); - } - }); - - test('meridiem invariant', function (assert) { - var h, m, t1, t2; - for (h = 0; h < 24; ++h) { - for (m = 0; m < 60; m += 15) { - t1 = moment.utc([2000, 0, 1, h, m]); - t2 = moment(t1.format('A h:mm'), 'A h:mm'); - assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), - 'meridiem at ' + t1.format('HH:mm')); - } - } - }); - - test('strict ordinal parsing', function (assert) { - var i, ordinalStr, testMoment; - for (i = 1; i <= 31; ++i) { - ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); - testMoment = moment(ordinalStr, 'YYYY MM Do', true); - assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('add and subtract'); - - test('add short reverse args', function (assert) { - var a = moment(), b, c, d; - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add({ms: 50}).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add({s: 1}).seconds(), 9, 'Add seconds'); - assert.equal(a.add({m: 1}).minutes(), 8, 'Add minutes'); - assert.equal(a.add({h: 1}).hours(), 7, 'Add hours'); - assert.equal(a.add({d: 1}).date(), 13, 'Add date'); - assert.equal(a.add({w: 1}).date(), 20, 'Add week'); - assert.equal(a.add({M: 1}).month(), 10, 'Add month'); - assert.equal(a.add({y: 1}).year(), 2012, 'Add year'); - assert.equal(a.add({Q: 1}).month(), 1, 'Add quarter'); - - b = moment([2010, 0, 31]).add({M: 1}); - c = moment([2010, 1, 28]).subtract({M: 1}); - d = moment([2010, 1, 28]).subtract({Q: 1}); - - assert.equal(b.month(), 1, 'add month, jan 31st to feb 28th'); - assert.equal(b.date(), 28, 'add month, jan 31st to feb 28th'); - assert.equal(c.month(), 0, 'subtract month, feb 28th to jan 28th'); - assert.equal(c.date(), 28, 'subtract month, feb 28th to jan 28th'); - assert.equal(d.month(), 10, 'subtract quarter, feb 28th 2010 to nov 28th 2009'); - assert.equal(d.date(), 28, 'subtract quarter, feb 28th 2010 to nov 28th 2009'); - assert.equal(d.year(), 2009, 'subtract quarter, feb 28th 2010 to nov 28th 2009'); - }); - - test('add long reverse args', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add({milliseconds: 50}).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add({seconds: 1}).seconds(), 9, 'Add seconds'); - assert.equal(a.add({minutes: 1}).minutes(), 8, 'Add minutes'); - assert.equal(a.add({hours: 1}).hours(), 7, 'Add hours'); - assert.equal(a.add({days: 1}).date(), 13, 'Add date'); - assert.equal(a.add({weeks: 1}).date(), 20, 'Add week'); - assert.equal(a.add({months: 1}).month(), 10, 'Add month'); - assert.equal(a.add({years: 1}).year(), 2012, 'Add year'); - assert.equal(a.add({quarters: 1}).month(), 1, 'Add quarter'); - }); - - test('add long singular reverse args', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add({millisecond: 50}).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add({second: 1}).seconds(), 9, 'Add seconds'); - assert.equal(a.add({minute: 1}).minutes(), 8, 'Add minutes'); - assert.equal(a.add({hour: 1}).hours(), 7, 'Add hours'); - assert.equal(a.add({day: 1}).date(), 13, 'Add date'); - assert.equal(a.add({week: 1}).date(), 20, 'Add week'); - assert.equal(a.add({month: 1}).month(), 10, 'Add month'); - assert.equal(a.add({year: 1}).year(), 2012, 'Add year'); - assert.equal(a.add({quarter: 1}).month(), 1, 'Add quarter'); - }); - - test('add string long reverse args', function (assert) { - var a = moment(), b; - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - b = a.clone(); - - assert.equal(a.add('millisecond', 50).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add('second', 1).seconds(), 9, 'Add seconds'); - assert.equal(a.add('minute', 1).minutes(), 8, 'Add minutes'); - assert.equal(a.add('hour', 1).hours(), 7, 'Add hours'); - assert.equal(a.add('day', 1).date(), 13, 'Add date'); - assert.equal(a.add('week', 1).date(), 20, 'Add week'); - assert.equal(a.add('month', 1).month(), 10, 'Add month'); - assert.equal(a.add('year', 1).year(), 2012, 'Add year'); - assert.equal(b.add('day', '01').date(), 13, 'Add date'); - assert.equal(a.add('quarter', 1).month(), 1, 'Add quarter'); - }); - - test('add string long singular reverse args', function (assert) { - var a = moment(), b; - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - b = a.clone(); - - assert.equal(a.add('milliseconds', 50).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add('seconds', 1).seconds(), 9, 'Add seconds'); - assert.equal(a.add('minutes', 1).minutes(), 8, 'Add minutes'); - assert.equal(a.add('hours', 1).hours(), 7, 'Add hours'); - assert.equal(a.add('days', 1).date(), 13, 'Add date'); - assert.equal(a.add('weeks', 1).date(), 20, 'Add week'); - assert.equal(a.add('months', 1).month(), 10, 'Add month'); - assert.equal(a.add('years', 1).year(), 2012, 'Add year'); - assert.equal(b.add('days', '01').date(), 13, 'Add date'); - assert.equal(a.add('quarters', 1).month(), 1, 'Add quarter'); - }); - - test('add string short reverse args', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add('ms', 50).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add('s', 1).seconds(), 9, 'Add seconds'); - assert.equal(a.add('m', 1).minutes(), 8, 'Add minutes'); - assert.equal(a.add('h', 1).hours(), 7, 'Add hours'); - assert.equal(a.add('d', 1).date(), 13, 'Add date'); - assert.equal(a.add('w', 1).date(), 20, 'Add week'); - assert.equal(a.add('M', 1).month(), 10, 'Add month'); - assert.equal(a.add('y', 1).year(), 2012, 'Add year'); - assert.equal(a.add('Q', 1).month(), 1, 'Add quarter'); - }); - - test('add string long', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add(50, 'millisecond').milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add(1, 'second').seconds(), 9, 'Add seconds'); - assert.equal(a.add(1, 'minute').minutes(), 8, 'Add minutes'); - assert.equal(a.add(1, 'hour').hours(), 7, 'Add hours'); - assert.equal(a.add(1, 'day').date(), 13, 'Add date'); - assert.equal(a.add(1, 'week').date(), 20, 'Add week'); - assert.equal(a.add(1, 'month').month(), 10, 'Add month'); - assert.equal(a.add(1, 'year').year(), 2012, 'Add year'); - assert.equal(a.add(1, 'quarter').month(), 1, 'Add quarter'); - }); - - test('add string long singular', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add(50, 'milliseconds').milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add(1, 'seconds').seconds(), 9, 'Add seconds'); - assert.equal(a.add(1, 'minutes').minutes(), 8, 'Add minutes'); - assert.equal(a.add(1, 'hours').hours(), 7, 'Add hours'); - assert.equal(a.add(1, 'days').date(), 13, 'Add date'); - assert.equal(a.add(1, 'weeks').date(), 20, 'Add week'); - assert.equal(a.add(1, 'months').month(), 10, 'Add month'); - assert.equal(a.add(1, 'years').year(), 2012, 'Add year'); - assert.equal(a.add(1, 'quarters').month(), 1, 'Add quarter'); - }); - - test('add string short', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add(50, 'ms').milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add(1, 's').seconds(), 9, 'Add seconds'); - assert.equal(a.add(1, 'm').minutes(), 8, 'Add minutes'); - assert.equal(a.add(1, 'h').hours(), 7, 'Add hours'); - assert.equal(a.add(1, 'd').date(), 13, 'Add date'); - assert.equal(a.add(1, 'w').date(), 20, 'Add week'); - assert.equal(a.add(1, 'M').month(), 10, 'Add month'); - assert.equal(a.add(1, 'y').year(), 2012, 'Add year'); - assert.equal(a.add(1, 'Q').month(), 1, 'Add quarter'); - }); - - test('add strings string short args', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add('ms', '50').milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add('s', '1').seconds(), 9, 'Add seconds'); - assert.equal(a.add('m', '1').minutes(), 8, 'Add minutes'); - assert.equal(a.add('h', '1').hours(), 7, 'Add hours'); - assert.equal(a.add('d', '1').date(), 13, 'Add date'); - assert.equal(a.add('w', '1').date(), 20, 'Add week'); - assert.equal(a.add('M', '1').month(), 10, 'Add month'); - assert.equal(a.add('y', '1').year(), 2012, 'Add year'); - assert.equal(a.add('Q', '1').month(), 1, 'Add quarter'); - }); - - test('subtract strings string short args', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.subtract('ms', '50').milliseconds(), 450, 'Subtract milliseconds'); - assert.equal(a.subtract('s', '1').seconds(), 7, 'Subtract seconds'); - assert.equal(a.subtract('m', '1').minutes(), 6, 'Subtract minutes'); - assert.equal(a.subtract('h', '1').hours(), 5, 'Subtract hours'); - assert.equal(a.subtract('d', '1').date(), 11, 'Subtract date'); - assert.equal(a.subtract('w', '1').date(), 4, 'Subtract week'); - assert.equal(a.subtract('M', '1').month(), 8, 'Subtract month'); - assert.equal(a.subtract('y', '1').year(), 2010, 'Subtract year'); - assert.equal(a.subtract('Q', '1').month(), 5, 'Subtract quarter'); - }); - - test('add strings string short', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add('50', 'ms').milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add('1', 's').seconds(), 9, 'Add seconds'); - assert.equal(a.add('1', 'm').minutes(), 8, 'Add minutes'); - assert.equal(a.add('1', 'h').hours(), 7, 'Add hours'); - assert.equal(a.add('1', 'd').date(), 13, 'Add date'); - assert.equal(a.add('1', 'w').date(), 20, 'Add week'); - assert.equal(a.add('1', 'M').month(), 10, 'Add month'); - assert.equal(a.add('1', 'y').year(), 2012, 'Add year'); - assert.equal(a.add('1', 'Q').month(), 1, 'Add quarter'); - }); - - test('subtract strings string short', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.subtract('50', 'ms').milliseconds(), 450, 'Subtract milliseconds'); - assert.equal(a.subtract('1', 's').seconds(), 7, 'Subtract seconds'); - assert.equal(a.subtract('1', 'm').minutes(), 6, 'Subtract minutes'); - assert.equal(a.subtract('1', 'h').hours(), 5, 'Subtract hours'); - assert.equal(a.subtract('1', 'd').date(), 11, 'Subtract date'); - assert.equal(a.subtract('1', 'w').date(), 4, 'Subtract week'); - assert.equal(a.subtract('1', 'M').month(), 8, 'Subtract month'); - assert.equal(a.subtract('1', 'y').year(), 2010, 'Subtract year'); - assert.equal(a.subtract('1', 'Q').month(), 5, 'Subtract quarter'); - }); - - test('add across DST', function (assert) { - // Detect Safari bug and bail. Hours on 13th March 2011 are shifted - // with 1 ahead. - if (new Date(2011, 2, 13, 5, 0, 0).getHours() !== 5) { - assert.expect(0); - return; - } - - var a = moment(new Date(2011, 2, 12, 5, 0, 0)), - b = moment(new Date(2011, 2, 12, 5, 0, 0)), - c = moment(new Date(2011, 2, 12, 5, 0, 0)), - d = moment(new Date(2011, 2, 12, 5, 0, 0)), - e = moment(new Date(2011, 2, 12, 5, 0, 0)); - a.add(1, 'days'); - b.add(24, 'hours'); - c.add(1, 'months'); - e.add(1, 'quarter'); - - assert.equal(a.hours(), 5, 'adding days over DST difference should result in the same hour'); - if (b.isDST() && !d.isDST()) { - assert.equal(b.hours(), 6, 'adding hours over DST difference should result in a different hour'); - } else if (!b.isDST() && d.isDST()) { - assert.equal(b.hours(), 4, 'adding hours over DST difference should result in a different hour'); - } else { - assert.equal(b.hours(), 5, 'adding hours over DST difference should result in a same hour if the timezone does not have daylight savings time'); - } - assert.equal(c.hours(), 5, 'adding months over DST difference should result in the same hour'); - assert.equal(e.hours(), 5, 'adding quarters over DST difference should result in the same hour'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('create'); - - test('array', function (assert) { - assert.ok(moment([2010]).toDate() instanceof Date, '[2010]'); - assert.ok(moment([2010, 1]).toDate() instanceof Date, '[2010, 1]'); - assert.ok(moment([2010, 1, 12]).toDate() instanceof Date, '[2010, 1, 12]'); - assert.ok(moment([2010, 1, 12, 1]).toDate() instanceof Date, '[2010, 1, 12, 1]'); - assert.ok(moment([2010, 1, 12, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1]'); - assert.ok(moment([2010, 1, 12, 1, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1, 1]'); - assert.ok(moment([2010, 1, 12, 1, 1, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1, 1, 1]'); - assert.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment([2010, 1, 14, 15, 25, 50, 125]), 'constructing with array === constructing with new Date()'); - }); - - test('array copying', function (assert) { - var importantArray = [2009, 11]; - moment(importantArray); - assert.deepEqual(importantArray, [2009, 11], 'initializer should not mutate the original array'); - }); - - test('object', function (assert) { - var fmt = 'YYYY-MM-DD HH:mm:ss.SSS', - tests = [ - [{year: 2010}, '2010-01-01 00:00:00.000'], - [{year: 2010, month: 1}, '2010-02-01 00:00:00.000'], - [{year: 2010, month: 1, day: 12}, '2010-02-12 00:00:00.000'], - [{year: 2010, month: 1, date: 12}, '2010-02-12 00:00:00.000'], - [{year: 2010, month: 1, day: 12, hours: 1}, '2010-02-12 01:00:00.000'], - [{year: 2010, month: 1, date: 12, hours: 1}, '2010-02-12 01:00:00.000'], - [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1}, '2010-02-12 01:01:00.000'], - [{year: 2010, month: 1, date: 12, hours: 1, minutes: 1}, '2010-02-12 01:01:00.000'], - [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1}, '2010-02-12 01:01:01.000'], - [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1, milliseconds: 1}, '2010-02-12 01:01:01.001'], - [{years: 2010, months: 1, days: 14, hours: 15, minutes: 25, seconds: 50, milliseconds: 125}, '2010-02-14 15:25:50.125'], - [{year: 2010, month: 1, day: 14, hour: 15, minute: 25, second: 50, millisecond: 125}, '2010-02-14 15:25:50.125'], - [{y: 2010, M: 1, d: 14, h: 15, m: 25, s: 50, ms: 125}, '2010-02-14 15:25:50.125'] - ], i; - for (i = 0; i < tests.length; ++i) { - assert.equal(moment(tests[i][0]).format(fmt), tests[i][1]); - } - }); - - test('multi format array copying', function (assert) { - var importantArray = ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY']; - moment('1999-02-13', importantArray); - assert.deepEqual(importantArray, ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY'], 'initializer should not mutate the original array'); - }); - - test('number', function (assert) { - assert.ok(moment(1000).toDate() instanceof Date, '1000'); - assert.equal(moment(1000).valueOf(), 1000, 'asserting valueOf'); - assert.equal(moment.utc(1000).valueOf(), 1000, 'asserting valueOf'); - }); - - test('unix', function (assert) { - assert.equal(moment.unix(1).valueOf(), 1000, '1 unix timestamp == 1000 Date.valueOf'); - assert.equal(moment(1000).unix(), 1, '1000 Date.valueOf == 1 unix timestamp'); - assert.equal(moment.unix(1000).valueOf(), 1000000, '1000 unix timestamp == 1000000 Date.valueOf'); - assert.equal(moment(1500).unix(), 1, '1500 Date.valueOf == 1 unix timestamp'); - assert.equal(moment(1900).unix(), 1, '1900 Date.valueOf == 1 unix timestamp'); - assert.equal(moment(2100).unix(), 2, '2100 Date.valueOf == 2 unix timestamp'); - assert.equal(moment(1333129333524).unix(), 1333129333, '1333129333524 Date.valueOf == 1333129333 unix timestamp'); - assert.equal(moment(1333129333524000).unix(), 1333129333524, '1333129333524000 Date.valueOf == 1333129333524 unix timestamp'); - }); - - test('date', function (assert) { - assert.ok(moment(new Date()).toDate() instanceof Date, 'new Date()'); - }); - - test('date mutation', function (assert) { - var a = new Date(); - assert.ok(moment(a).toDate() !== a, 'the date moment uses should not be the date passed in'); - }); - - test('moment', function (assert) { - assert.ok(moment(moment()).toDate() instanceof Date, 'moment(moment())'); - assert.ok(moment(moment(moment())).toDate() instanceof Date, 'moment(moment(moment()))'); - }); - - test('cloning moment should only copy own properties', function (assert) { - assert.ok(!moment().clone().hasOwnProperty('month'), 'Should not clone prototype methods'); - }); - - test('cloning moment works with weird clones', function (assert) { - var extend = function (a, b) { - var i; - for (i in b) { - a[i] = b[i]; - } - return a; - }, - now = moment(), - nowu = moment.utc(); - - assert.equal(+extend({}, now).clone(), +now, 'cloning extend-ed now is now'); - assert.equal(+extend({}, nowu).clone(), +nowu, 'cloning extend-ed utc now is utc now'); - }); - - test('cloning respects moment.momentProperties', function (assert) { - var m = moment(); - - assert.equal(m.clone()._special, undefined, 'cloning ignores extra properties'); - m._special = 'bacon'; - moment.momentProperties.push('_special'); - assert.equal(m.clone()._special, 'bacon', 'cloning respects momentProperties'); - moment.momentProperties.pop(); - }); - - test('undefined', function (assert) { - assert.ok(moment().toDate() instanceof Date, 'undefined'); - }); - - test('iso with bad input', function (assert) { - assert.ok(!moment('a', moment.ISO_8601).isValid(), 'iso parsing with invalid string'); - assert.ok(!moment('a', moment.ISO_8601, true).isValid(), 'iso parsing with invalid string, strict'); - }); - - test('iso format 24hrs', function (assert) { - assert.equal(moment('2014-01-01T24:00:00.000').format('YYYY-MM-DD[T]HH:mm:ss.SSS'), - '2014-01-02T00:00:00.000', 'iso format with 24:00 localtime'); - assert.equal(moment.utc('2014-01-01T24:00:00.000').format('YYYY-MM-DD[T]HH:mm:ss.SSS'), - '2014-01-02T00:00:00.000', 'iso format with 24:00 utc'); - }); - - test('string without format - json', function (assert) { - assert.equal(moment('Date(1325132654000)').valueOf(), 1325132654000, 'Date(1325132654000)'); - assert.equal(moment('Date(-1325132654000)').valueOf(), -1325132654000, 'Date(-1325132654000)'); - assert.equal(moment('/Date(1325132654000)/').valueOf(), 1325132654000, '/Date(1325132654000)/'); - assert.equal(moment('/Date(1325132654000+0700)/').valueOf(), 1325132654000, '/Date(1325132654000+0700)/'); - assert.equal(moment('/Date(1325132654000-0700)/').valueOf(), 1325132654000, '/Date(1325132654000-0700)/'); - }); - - test('string with format dropped am/pm bug', function (assert) { - moment.locale('en'); - - assert.equal(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); - assert.equal(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); - assert.equal(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); - - assert.ok(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').isValid()); - assert.ok(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').isValid()); - assert.ok(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').isValid()); - }); - - test('empty string with formats', function (assert) { - assert.equal(moment('', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); - assert.equal(moment(' ', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); - assert.equal(moment(' ', 'DD').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); - assert.equal(moment(' ', ['MM', 'DD']).format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); - - assert.ok(!moment('', 'MM').isValid()); - assert.ok(!moment(' ', 'MM').isValid()); - assert.ok(!moment(' ', 'DD').isValid()); - assert.ok(!moment(' ', ['MM', 'DD']).isValid()); - }); - - test('defaulting to current date', function (assert) { - var now = moment(); - assert.equal(moment('12:13:14', 'hh:mm:ss').format('YYYY-MM-DD hh:mm:ss'), - now.clone().hour(12).minute(13).second(14).format('YYYY-MM-DD hh:mm:ss'), - 'given only time default to current date'); - assert.equal(moment('05', 'DD').format('YYYY-MM-DD'), - now.clone().date(5).format('YYYY-MM-DD'), - 'given day of month default to current month, year'); - assert.equal(moment('05', 'MM').format('YYYY-MM-DD'), - now.clone().month(4).date(1).format('YYYY-MM-DD'), - 'given month default to current year'); - assert.equal(moment('1996', 'YYYY').format('YYYY-MM-DD'), - now.clone().year(1996).month(0).date(1).format('YYYY-MM-DD'), - 'given year do not default'); - }); - - test('matching am/pm', function (assert) { - assert.equal(moment('2012-09-03T03:00PM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for PM'); - assert.equal(moment('2012-09-03T03:00P.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P.M.'); - assert.equal(moment('2012-09-03T03:00P', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P'); - assert.equal(moment('2012-09-03T03:00pm', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for pm'); - assert.equal(moment('2012-09-03T03:00p.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p.m.'); - assert.equal(moment('2012-09-03T03:00p', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p'); - - assert.equal(moment('2012-09-03T03:00AM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for AM'); - assert.equal(moment('2012-09-03T03:00A.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A.M.'); - assert.equal(moment('2012-09-03T03:00A', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A'); - assert.equal(moment('2012-09-03T03:00am', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for am'); - assert.equal(moment('2012-09-03T03:00a.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a.m.'); - assert.equal(moment('2012-09-03T03:00a', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a'); - - assert.equal(moment('5:00p.m.March 4 2012', 'h:mmAMMMM D YYYY').format('YYYY-MM-DDThh:mmA'), '2012-03-04T05:00PM', 'am/pm should parse correctly before month names'); - }); - - test('string with format', function (assert) { - moment.locale('en'); - var a = [ - ['YYYY-Q', '2014-4'], - ['MM-DD-YYYY', '12-02-1999'], - ['DD-MM-YYYY', '12-02-1999'], - ['DD/MM/YYYY', '12/02/1999'], - ['DD_MM_YYYY', '12_02_1999'], - ['DD:MM:YYYY', '12:02:1999'], - ['D-M-YY', '2-2-99'], - ['YY', '99'], - ['DDD-YYYY', '300-1999'], - ['DD-MM-YYYY h:m:s', '12-02-1999 2:45:10'], - ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 am'], - ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 pm'], - ['h:mm a', '12:00 pm'], - ['h:mm a', '12:30 pm'], - ['h:mm a', '12:00 am'], - ['h:mm a', '12:30 am'], - ['HH:mm', '12:00'], - ['YYYY-MM-DDTHH:mm:ss', '2011-11-11T11:11:11'], - ['MM-DD-YYYY [M]', '12-02-1999 M'], - ['ddd MMM DD HH:mm:ss YYYY', 'Tue Apr 07 22:52:51 2009'], - ['HH:mm:ss', '12:00:00'], - ['HH:mm:ss', '12:30:00'], - ['HH:mm:ss', '00:00:00'], - ['HH:mm:ss S', '00:30:00 1'], - ['HH:mm:ss SS', '00:30:00 12'], - ['HH:mm:ss SSS', '00:30:00 123'], - ['HH:mm:ss S', '00:30:00 7'], - ['HH:mm:ss SS', '00:30:00 78'], - ['HH:mm:ss SSS', '00:30:00 789'], - ['X', '1234567890'], - ['x', '1234567890123'], - ['LT', '12:30 AM'], - ['LTS', '12:30:29 AM'], - ['L', '09/02/1999'], - ['l', '9/2/1999'], - ['LL', 'September 2, 1999'], - ['ll', 'Sep 2, 1999'], - ['LLL', 'September 2, 1999 12:30 AM'], - ['lll', 'Sep 2, 1999 12:30 AM'], - ['LLLL', 'Thursday, September 2, 1999 12:30 AM'], - ['llll', 'Thu, Sep 2, 1999 12:30 AM'] - ], - m, - i; - - for (i = 0; i < a.length; i++) { - m = moment(a[i][1], a[i][0]); - assert.ok(m.isValid()); - assert.equal(m.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('2 digit year with YYYY format', function (assert) { - assert.equal(moment('9/2/99', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1999', 'D/M/YYYY ---> 9/2/99'); - assert.equal(moment('9/2/1999', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1999', 'D/M/YYYY ---> 9/2/1999'); - assert.equal(moment('9/2/68', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/2068', 'D/M/YYYY ---> 9/2/68'); - assert.equal(moment('9/2/69', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1969', 'D/M/YYYY ---> 9/2/69'); - }); - - test('unix timestamp format', function (assert) { - var formats = ['X', 'X.S', 'X.SS', 'X.SSS'], i, format; - - for (i = 0; i < formats.length; i++) { - format = formats[i]; - assert.equal(moment('1234567890', format).valueOf(), 1234567890 * 1000, format + ' matches timestamp without milliseconds'); - assert.equal(moment('1234567890.1', format).valueOf(), 1234567890 * 1000 + 100, format + ' matches timestamp with deciseconds'); - assert.equal(moment('1234567890.12', format).valueOf(), 1234567890 * 1000 + 120, format + ' matches timestamp with centiseconds'); - assert.equal(moment('1234567890.123', format).valueOf(), 1234567890 * 1000 + 123, format + ' matches timestamp with milliseconds'); - } - }); - - test('unix offset milliseconds', function (assert) { - assert.equal(moment('1234567890123', 'x').valueOf(), 1234567890123, 'x matches unix offset in milliseconds'); - }); - - test('milliseconds format', function (assert) { - assert.equal(moment('1', 'S').get('ms'), 100, 'deciseconds'); - // assert.equal(moment('10', 'S', true).isValid(), false, 'deciseconds with two digits'); - // assert.equal(moment('1', 'SS', true).isValid(), false, 'centiseconds with one digits'); - assert.equal(moment('12', 'SS').get('ms'), 120, 'centiseconds'); - // assert.equal(moment('123', 'SS', true).isValid(), false, 'centiseconds with three digits'); - assert.equal(moment('123', 'SSS').get('ms'), 123, 'milliseconds'); - assert.equal(moment('1234', 'SSSS').get('ms'), 123, 'milliseconds with SSSS'); - assert.equal(moment('123456789101112', 'SSSS').get('ms'), 123, 'milliseconds with SSSS'); - }); - - test('string with format no separators', function (assert) { - moment.locale('en'); - var a = [ - ['MMDDYYYY', '12021999'], - ['DDMMYYYY', '12021999'], - ['YYYYMMDD', '19991202'], - ['DDMMMYYYY', '10Sep2001'] - ], i; - - for (i = 0; i < a.length; i++) { - assert.equal(moment(a[i][1], a[i][0]).format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - }); - - test('string with format (timezone)', function (assert) { - assert.equal(moment('5 -0700', 'H ZZ').toDate().getUTCHours(), 12, 'parse hours \'5 -0700\' ---> \'H ZZ\''); - assert.equal(moment('5 -07:00', 'H Z').toDate().getUTCHours(), 12, 'parse hours \'5 -07:00\' ---> \'H Z\''); - assert.equal(moment('5 -0730', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours \'5 -0730\' ---> \'H ZZ\''); - assert.equal(moment('5 -07:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours \'5 -07:0\' ---> \'H Z\''); - assert.equal(moment('5 +0100', 'H ZZ').toDate().getUTCHours(), 4, 'parse hours \'5 +0100\' ---> \'H ZZ\''); - assert.equal(moment('5 +01:00', 'H Z').toDate().getUTCHours(), 4, 'parse hours \'5 +01:00\' ---> \'H Z\''); - assert.equal(moment('5 +0130', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours \'5 +0130\' ---> \'H ZZ\''); - assert.equal(moment('5 +01:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours \'5 +01:30\' ---> \'H Z\''); - }); - - test('string with format (timezone offset)', function (assert) { - var a, b, c, d, e, f; - a = new Date(Date.UTC(2011, 0, 1, 1)); - b = moment('2011 1 1 0 -01:00', 'YYYY MM DD HH Z'); - assert.equal(a.getHours(), b.hours(), 'date created with utc == parsed string with timezone offset'); - assert.equal(+a, +b, 'date created with utc == parsed string with timezone offset'); - c = moment('2011 2 1 10 -05:00', 'YYYY MM DD HH Z'); - d = moment('2011 2 1 8 -07:00', 'YYYY MM DD HH Z'); - assert.equal(c.hours(), d.hours(), '10 am central time == 8 am pacific time'); - e = moment.utc('Fri, 20 Jul 2012 17:15:00', 'ddd, DD MMM YYYY HH:mm:ss'); - f = moment.utc('Fri, 20 Jul 2012 10:15:00 -0700', 'ddd, DD MMM YYYY HH:mm:ss ZZ'); - assert.equal(e.hours(), f.hours(), 'parse timezone offset in utc'); - }); - - test('string with timezone around start of year', function (assert) { - assert.equal(moment('2000-01-01T00:00:00.000+01:00').toISOString(), '1999-12-31T23:00:00.000Z', '+1:00 around 2000'); - assert.equal(moment('2000-01-01T00:00:00.000-01:00').toISOString(), '2000-01-01T01:00:00.000Z', '-1:00 around 2000'); - assert.equal(moment('1970-01-01T00:00:00.000+01:00').toISOString(), '1969-12-31T23:00:00.000Z', '+1:00 around 1970'); - assert.equal(moment('1970-01-01T00:00:00.000-01:00').toISOString(), '1970-01-01T01:00:00.000Z', '-1:00 around 1970'); - assert.equal(moment('1200-01-01T00:00:00.000+01:00').toISOString(), '1199-12-31T23:00:00.000Z', '+1:00 around 1200'); - assert.equal(moment('1200-01-01T00:00:00.000-01:00').toISOString(), '1200-01-01T01:00:00.000Z', '-1:00 around 1200'); - }); - - test('string with array of formats', function (assert) { - assert.equal(moment('11-02-1999', ['MM-DD-YYYY', 'DD-MM-YYYY']).format('MM DD YYYY'), '11 02 1999', 'switching month and day'); - assert.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last'); - assert.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first'); - - assert.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year last'); - assert.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year first'); - assert.equal(moment('02-11-1999', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last'); - assert.equal(moment('1999-02-11', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first'); - - assert.equal(moment('13-11-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'second must be month'); - assert.equal(moment('11-13-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'first must be month'); - assert.equal(moment('01-02-2000', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, month first format'); - assert.equal(moment('02-01-2000', ['DD/MM/YYYY', 'MM/DD/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, day first format'); - - assert.equal(moment('11-02-10', ['MM/DD/YY', 'YY MM DD', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'all unparsed substrings have influence on format penalty'); - assert.equal(moment('11-02-10', ['MM-DD-YY HH:mm', 'YY MM DD']).format('MM DD YYYY'), '02 10 2011', 'prefer formats without extra tokens'); - assert.equal(moment('11-02-10 junk', ['MM-DD-YY', 'YY.MM.DD junk']).format('MM DD YYYY'), '02 10 2011', 'prefer formats that dont result in extra characters'); - assert.equal(moment('11-22-10', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), '10 22 2011', 'prefer valid results'); - - assert.equal(moment('gibberish', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), 'Invalid date', 'doest throw for invalid strings'); - assert.equal(moment('gibberish', []).format('MM DD YYYY'), 'Invalid date', 'doest throw for an empty array'); - - //https://github.com/moment/moment/issues/1143 - assert.equal(moment( - 'System Administrator and Database Assistant (7/1/2011), System Administrator and Database Assistant (7/1/2011), Database Coordinator (7/1/2011), Vice President (7/1/2011), System Administrator and Database Assistant (5/31/2012), Database Coordinator (7/1/2012), System Administrator and Database Assistant (7/1/2013)', - ['MM/DD/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm:ssZ']) - .format('YYYY-MM-DD'), '2011-07-01', 'Works for long strings'); - - assert.equal(moment('11-02-10', ['MM.DD.YY', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'escape RegExp special characters on comparing'); - - assert.equal(moment('13-10-98', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YY', 'use two digit year'); - assert.equal(moment('13-10-1998', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YYYY', 'use four digit year'); - - assert.equal(moment('01', ['MM', 'DD'])._f, 'MM', 'Should use first valid format'); - }); - - test('string with array of formats + ISO', function (assert) { - assert.equal(moment('1994', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).year(), 1994, 'iso: assert parse YYYY'); - assert.equal(moment('17:15', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).hour(), 17, 'iso: assert parse HH:mm (1)'); - assert.equal(moment('17:15', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).minutes(), 15, 'iso: assert parse HH:mm (2)'); - assert.equal(moment('06', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).month(), 6 - 1, 'iso: assert parse MM'); - assert.equal(moment('2012-06-01', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).parsingFlags().iso, true, 'iso: assert parse iso'); - assert.equal(moment('2014-05-05', [moment.ISO_8601, 'YYYY-MM-DD']).parsingFlags().iso, true, 'iso: edge case array precedence iso'); - assert.equal(moment('2014-05-05', ['YYYY-MM-DD', moment.ISO_8601]).parsingFlags().iso, false, 'iso: edge case array precedence not iso'); - }); - - test('string with format - years', function (assert) { - assert.equal(moment('67', 'YY').format('YYYY'), '2067', '67 > 2067'); - assert.equal(moment('68', 'YY').format('YYYY'), '2068', '68 > 2068'); - assert.equal(moment('69', 'YY').format('YYYY'), '1969', '69 > 1969'); - assert.equal(moment('70', 'YY').format('YYYY'), '1970', '70 > 1970'); - }); - - test('implicit cloning', function (assert) { - var momentA = moment([2011, 10, 10]), - momentB = moment(momentA); - momentA.month(5); - assert.equal(momentB.month(), 10, 'Calling moment() on a moment will create a clone'); - assert.equal(momentA.month(), 5, 'Calling moment() on a moment will create a clone'); - }); - - test('explicit cloning', function (assert) { - var momentA = moment([2011, 10, 10]), - momentB = momentA.clone(); - momentA.month(5); - assert.equal(momentB.month(), 10, 'Calling moment() on a moment will create a clone'); - assert.equal(momentA.month(), 5, 'Calling moment() on a moment will create a clone'); - }); - - test('cloning carrying over utc mode', function (assert) { - assert.equal(moment().local().clone()._isUTC, false, 'An explicit cloned local moment should have _isUTC == false'); - assert.equal(moment().utc().clone()._isUTC, true, 'An cloned utc moment should have _isUTC == true'); - assert.equal(moment().clone()._isUTC, false, 'An explicit cloned local moment should have _isUTC == false'); - assert.equal(moment.utc().clone()._isUTC, true, 'An explicit cloned utc moment should have _isUTC == true'); - assert.equal(moment(moment().local())._isUTC, false, 'An implicit cloned local moment should have _isUTC == false'); - assert.equal(moment(moment().utc())._isUTC, true, 'An implicit cloned utc moment should have _isUTC == true'); - assert.equal(moment(moment())._isUTC, false, 'An implicit cloned local moment should have _isUTC == false'); - assert.equal(moment(moment.utc())._isUTC, true, 'An implicit cloned utc moment should have _isUTC == true'); - }); - - test('parsing iso', function (assert) { - var offset = moment([2011, 9, 8]).utcOffset(), - pad = function (input) { - if (input < 10) { - return '0' + input; - } - return '' + input; - }, - hourOffset = (offset > 0 ? Math.floor(offset / 60) : Math.ceil(offset / 60)), - minOffset = offset - (hourOffset * 60), - tz = (offset >= 0) ? - '+' + pad(hourOffset) + ':' + pad(minOffset) : - '-' + pad(-hourOffset) + ':' + pad(-minOffset), - tz2 = tz.replace(':', ''), - tz3 = tz2.slice(0, 3), - formats = [ - ['2011-10-08', '2011-10-08T00:00:00.000' + tz], - ['2011-10-08T18', '2011-10-08T18:00:00.000' + tz], - ['2011-10-08T18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-10-08T18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08T18:04' + tz3, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-10-08T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-10-08T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011-10-08 18', '2011-10-08T18:00:00.000' + tz], - ['2011-10-08 18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-10-08 18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-10-08 18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08 18:04' + tz3, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-10-08 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-10-08 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011-W40', '2011-10-03T00:00:00.000' + tz], - ['2011-W40-6', '2011-10-08T00:00:00.000' + tz], - ['2011-W40-6T18', '2011-10-08T18:00:00.000' + tz], - ['2011-W40-6T18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6T18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6T18:04' + tz3, '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-W40-6T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-W40-6T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011-W40-6 18', '2011-10-08T18:00:00.000' + tz], - ['2011-W40-6 18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6 18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6 18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6 18:04' + tz3, '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-W40-6 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-W40-6 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011-281', '2011-10-08T00:00:00.000' + tz], - ['2011-281T18', '2011-10-08T18:00:00.000' + tz], - ['2011-281T18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-281T18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-281T18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-281T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-281T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-281T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-281T18:04' + tz3, '2011-10-08T18:04:00.000' + tz], - ['2011-281T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], - ['2011-281T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-281T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-281T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011-281 18', '2011-10-08T18:00:00.000' + tz], - ['2011-281 18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-281 18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-281 18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-281 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-281 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-281 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-281 18:04' + tz3, '2011-10-08T18:04:00.000' + tz], - ['2011-281 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], - ['2011-281 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-281 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-281 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz] - ], i; - for (i = 0; i < formats.length; i++) { - assert.equal(moment(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), formats[i][1], 'moment should be able to parse ISO ' + formats[i][0]); - } - }); - - test('parsing iso week year/week/weekday', function (assert) { - assert.equal(moment.utc('2007-W01').format(), '2007-01-01T00:00:00+00:00', '2008 week 1 (1st Jan Mon)'); - assert.equal(moment.utc('2008-W01').format(), '2007-12-31T00:00:00+00:00', '2008 week 1 (1st Jan Tue)'); - assert.equal(moment.utc('2003-W01').format(), '2002-12-30T00:00:00+00:00', '2008 week 1 (1st Jan Wed)'); - assert.equal(moment.utc('2009-W01').format(), '2008-12-29T00:00:00+00:00', '2009 week 1 (1st Jan Thu)'); - assert.equal(moment.utc('2010-W01').format(), '2010-01-04T00:00:00+00:00', '2010 week 1 (1st Jan Fri)'); - assert.equal(moment.utc('2011-W01').format(), '2011-01-03T00:00:00+00:00', '2011 week 1 (1st Jan Sat)'); - assert.equal(moment.utc('2012-W01').format(), '2012-01-02T00:00:00+00:00', '2012 week 1 (1st Jan Sun)'); - }); - - test('parsing week year/week/weekday (dow 1, doy 4)', function (assert) { - moment.locale('dow:1,doy:4', {week: {dow: 1, doy: 4}}); - - assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2007-01-01T00:00:00+00:00', '2007 week 1 (1st Jan Mon)'); - assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-31T00:00:00+00:00', '2008 week 1 (1st Jan Tue)'); - assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-30T00:00:00+00:00', '2003 week 1 (1st Jan Wed)'); - assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-29T00:00:00+00:00', '2009 week 1 (1st Jan Thu)'); - assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2010-01-04T00:00:00+00:00', '2010 week 1 (1st Jan Fri)'); - assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2011-01-03T00:00:00+00:00', '2011 week 1 (1st Jan Sat)'); - assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2012-01-02T00:00:00+00:00', '2012 week 1 (1st Jan Sun)'); - - moment.defineLocale('dow:1,doy:4', null); - }); - - test('parsing week year/week/weekday (dow 1, doy 7)', function (assert) { - moment.locale('dow:1,doy:7', {week: {dow: 1, doy: 7}}); - - assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2007-01-01T00:00:00+00:00', '2007 week 1 (1st Jan Mon)'); - assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-31T00:00:00+00:00', '2008 week 1 (1st Jan Tue)'); - assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-30T00:00:00+00:00', '2003 week 1 (1st Jan Wed)'); - assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-29T00:00:00+00:00', '2009 week 1 (1st Jan Thu)'); - assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-28T00:00:00+00:00', '2010 week 1 (1st Jan Fri)'); - assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2010-12-27T00:00:00+00:00', '2011 week 1 (1st Jan Sat)'); - assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2011-12-26T00:00:00+00:00', '2012 week 1 (1st Jan Sun)'); - moment.defineLocale('dow:1,doy:7', null); - }); - - test('parsing week year/week/weekday (dow 0, doy 6)', function (assert) { - moment.locale('dow:0,doy:6', {week: {dow: 0, doy: 6}}); - - assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2006-12-31T00:00:00+00:00', '2007 week 1 (1st Jan Mon)'); - assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-30T00:00:00+00:00', '2008 week 1 (1st Jan Tue)'); - assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-29T00:00:00+00:00', '2003 week 1 (1st Jan Wed)'); - assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-28T00:00:00+00:00', '2009 week 1 (1st Jan Thu)'); - assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-27T00:00:00+00:00', '2010 week 1 (1st Jan Fri)'); - assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2010-12-26T00:00:00+00:00', '2011 week 1 (1st Jan Sat)'); - assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2012-01-01T00:00:00+00:00', '2012 week 1 (1st Jan Sun)'); - moment.defineLocale('dow:0,doy:6', null); - }); - - test('parsing week year/week/weekday (dow 6, doy 12)', function (assert) { - moment.locale('dow:6,doy:12', {week: {dow: 6, doy: 12}}); - - assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2006-12-30T00:00:00+00:00', '2007 week 1 (1st Jan Mon)'); - assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-29T00:00:00+00:00', '2008 week 1 (1st Jan Tue)'); - assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-28T00:00:00+00:00', '2003 week 1 (1st Jan Wed)'); - assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-27T00:00:00+00:00', '2009 week 1 (1st Jan Thu)'); - assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-26T00:00:00+00:00', '2010 week 1 (1st Jan Fri)'); - assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2011-01-01T00:00:00+00:00', '2011 week 1 (1st Jan Sat)'); - assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2011-12-31T00:00:00+00:00', '2012 week 1 (1st Jan Sun)'); - }); - - test('parsing ISO with Z', function (assert) { - var i, mom, formats = [ - ['2011-10-08T18:04', '2011-10-08T18:04:00.000'], - ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000'], - ['2011-10-08T18:04:20.1', '2011-10-08T18:04:20.100'], - ['2011-10-08T18:04:20.11', '2011-10-08T18:04:20.110'], - ['2011-10-08T18:04:20.111', '2011-10-08T18:04:20.111'], - ['2011-W40-6T18', '2011-10-08T18:00:00.000'], - ['2011-W40-6T18:04', '2011-10-08T18:04:00.000'], - ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000'], - ['2011-W40-6T18:04:20.1', '2011-10-08T18:04:20.100'], - ['2011-W40-6T18:04:20.11', '2011-10-08T18:04:20.110'], - ['2011-W40-6T18:04:20.111', '2011-10-08T18:04:20.111'], - ['2011-281T18', '2011-10-08T18:00:00.000'], - ['2011-281T18:04', '2011-10-08T18:04:00.000'], - ['2011-281T18:04:20', '2011-10-08T18:04:20.000'], - ['2011-281T18:04:20', '2011-10-08T18:04:20.000'], - ['2011-281T18:04:20.1', '2011-10-08T18:04:20.100'], - ['2011-281T18:04:20.11', '2011-10-08T18:04:20.110'], - ['2011-281T18:04:20.111', '2011-10-08T18:04:20.111'] - ]; - - for (i = 0; i < formats.length; i++) { - mom = moment(formats[i][0] + 'Z').utc(); - assert.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], 'moment should be able to parse ISO in UTC ' + formats[i][0] + 'Z'); - - mom = moment(formats[i][0] + ' Z').utc(); - assert.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], 'moment should be able to parse ISO in UTC ' + formats[i][0] + ' Z'); - } - }); - - test('parsing iso with T', function (assert) { - assert.equal(moment('2011-10-08T18')._f, 'YYYY-MM-DDTHH', 'should include \'T\' in the format'); - assert.equal(moment('2011-10-08T18:20')._f, 'YYYY-MM-DDTHH:mm', 'should include \'T\' in the format'); - assert.equal(moment('2011-10-08T18:20:13')._f, 'YYYY-MM-DDTHH:mm:ss', 'should include \'T\' in the format'); - assert.equal(moment('2011-10-08T18:20:13.321')._f, 'YYYY-MM-DDTHH:mm:ss.SSSS', 'should include \'T\' in the format'); - - assert.equal(moment('2011-10-08 18')._f, 'YYYY-MM-DD HH', 'should not include \'T\' in the format'); - assert.equal(moment('2011-10-08 18:20')._f, 'YYYY-MM-DD HH:mm', 'should not include \'T\' in the format'); - assert.equal(moment('2011-10-08 18:20:13')._f, 'YYYY-MM-DD HH:mm:ss', 'should not include \'T\' in the format'); - assert.equal(moment('2011-10-08 18:20:13.321')._f, 'YYYY-MM-DD HH:mm:ss.SSSS', 'should not include \'T\' in the format'); - }); - - test('parsing iso Z timezone', function (assert) { - var i, - formats = [ - ['2011-10-08T18:04Z', '2011-10-08T18:04:00.000+00:00'], - ['2011-10-08T18:04:20Z', '2011-10-08T18:04:20.000+00:00'], - ['2011-10-08T18:04:20.111Z', '2011-10-08T18:04:20.111+00:00'] - ]; - for (i = 0; i < formats.length; i++) { - assert.equal(moment.utc(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), formats[i][1], 'moment should be able to parse ISO ' + formats[i][0]); - } - }); - - test('parsing iso Z timezone into local', function (assert) { - var m = moment('2011-10-08T18:04:20.111Z'); - - assert.equal(m.utc().format('YYYY-MM-DDTHH:mm:ss.SSS'), '2011-10-08T18:04:20.111', 'moment should be able to parse ISO 2011-10-08T18:04:20.111Z'); - }); - - test('parsing iso with more subsecond precision digits', function (assert) { - assert.equal(moment.utc('2013-07-31T22:00:00.0000000Z').format(), '2013-07-31T22:00:00+00:00', 'more than 3 subsecond digits'); - }); - - test('null or empty', function (assert) { - assert.equal(moment('').isValid(), false, 'moment(\'\') is not valid'); - assert.equal(moment(null).isValid(), false, 'moment(null) is not valid'); - assert.equal(moment(null, 'YYYY-MM-DD').isValid(), false, 'moment(\'\', \'format\') is not valid'); - assert.equal(moment('', 'YYYY-MM-DD').isValid(), false, 'moment(\'\', \'format\') is not valid'); - assert.equal(moment.utc('').isValid(), false, 'moment.utc(\'\') is not valid'); - assert.equal(moment.utc(null).isValid(), false, 'moment.utc(null) is not valid'); - assert.equal(moment.utc(null, 'YYYY-MM-DD').isValid(), false, 'moment.utc(null) is not valid'); - assert.equal(moment.utc('', 'YYYY-MM-DD').isValid(), false, 'moment.utc(\'\', \'YYYY-MM-DD\') is not valid'); - }); - - test('first century', function (assert) { - assert.equal(moment([0, 0, 1]).format('YYYY-MM-DD'), '0000-01-01', 'Year AD 0'); - assert.equal(moment([99, 0, 1]).format('YYYY-MM-DD'), '0099-01-01', 'Year AD 99'); - assert.equal(moment([999, 0, 1]).format('YYYY-MM-DD'), '0999-01-01', 'Year AD 999'); - assert.equal(moment('0 1 1', 'YYYY MM DD').format('YYYY-MM-DD'), '0000-01-01', 'Year AD 0'); - assert.equal(moment('999 1 1', 'YYYY MM DD').format('YYYY-MM-DD'), '0999-01-01', 'Year AD 999'); - assert.equal(moment('0 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00000-01-01', 'Year AD 0'); - assert.equal(moment('99 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00099-01-01', 'Year AD 99'); - assert.equal(moment('999 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00999-01-01', 'Year AD 999'); - }); - - test('six digit years', function (assert) { - assert.equal(moment([-270000, 0, 1]).format('YYYYY-MM-DD'), '-270000-01-01', 'format BC 270,001'); - assert.equal(moment([270000, 0, 1]).format('YYYYY-MM-DD'), '270000-01-01', 'format AD 270,000'); - assert.equal(moment('-270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), -270000, 'parse BC 270,001'); - assert.equal(moment('270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), 270000, 'parse AD 270,000'); - assert.equal(moment('+270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), 270000, 'parse AD +270,000'); - assert.equal(moment.utc('-270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), -270000, 'parse utc BC 270,001'); - assert.equal(moment.utc('270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), 270000, 'parse utc AD 270,000'); - assert.equal(moment.utc('+270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), 270000, 'parse utc AD +270,000'); - }); - - test('negative four digit years', function (assert) { - assert.equal(moment('-1000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), -1000, 'parse BC 1,001'); - assert.equal(moment.utc('-1000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), -1000, 'parse utc BC 1,001'); - }); - - test('strict parsing', function (assert) { - assert.equal(moment('2014-', 'YYYY-Q', true).isValid(), false, 'fail missing quarter'); - - assert.equal(moment('2012-05', 'YYYY-MM', true).format('YYYY-MM'), '2012-05', 'parse correct string'); - assert.equal(moment(' 2012-05', 'YYYY-MM', true).isValid(), false, 'fail on extra whitespace'); - assert.equal(moment('foo 2012-05', '[foo] YYYY-MM', true).format('YYYY-MM'), '2012-05', 'handle fixed text'); - assert.equal(moment('2012 05', 'YYYY-MM', true).isValid(), false, 'fail on different separator'); - assert.equal(moment('2012 05', 'YYYY MM DD', true).isValid(), false, 'fail on too many tokens'); - - assert.equal(moment('05 30 2010', ['DD MM YYYY', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with bad date'); - assert.equal(moment('05 30 2010', ['', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with invalid format'); - assert.equal(moment('05 30 2010', [' DD MM YYYY', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with non-matching format'); - - assert.equal(moment('2010.*...', 'YYYY.*', true).isValid(), false, 'invalid format with regex chars'); - assert.equal(moment('2010.*', 'YYYY.*', true).year(), 2010, 'valid format with regex chars'); - assert.equal(moment('.*2010.*', '.*YYYY.*', true).year(), 2010, 'valid format with regex chars on both sides'); - - //strict tokens - assert.equal(moment('-5-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid negative year'); - assert.equal(moment('2-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit year'); - assert.equal(moment('20-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid two-digit year'); - assert.equal(moment('201-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid three-digit year'); - assert.equal(moment('2010-05-25', 'YYYY-MM-DD', true).isValid(), true, 'valid four-digit year'); - assert.equal(moment('22010-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid five-digit year'); - - assert.equal(moment('12-05-25', 'YY-MM-DD', true).isValid(), true, 'valid two-digit year'); - assert.equal(moment('2012-05-25', 'YY-MM-DD', true).isValid(), false, 'invalid four-digit year'); - - assert.equal(moment('-5-05-25', 'Y-MM-DD', true).isValid(), true, 'valid negative year'); - assert.equal(moment('2-05-25', 'Y-MM-DD', true).isValid(), true, 'valid one-digit year'); - assert.equal(moment('20-05-25', 'Y-MM-DD', true).isValid(), true, 'valid two-digit year'); - assert.equal(moment('201-05-25', 'Y-MM-DD', true).isValid(), true, 'valid three-digit year'); - - assert.equal(moment('2012-5-25', 'YYYY-M-DD', true).isValid(), true, 'valid one-digit month'); - assert.equal(moment('2012-5-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit month'); - assert.equal(moment('2012-05-25', 'YYYY-M-DD', true).isValid(), true, 'valid one-digit month'); - assert.equal(moment('2012-05-25', 'YYYY-MM-DD', true).isValid(), true, 'valid one-digit month'); - - assert.equal(moment('2012-05-2', 'YYYY-MM-D', true).isValid(), true, 'valid one-digit day'); - assert.equal(moment('2012-05-2', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit day'); - assert.equal(moment('2012-05-02', 'YYYY-MM-D', true).isValid(), true, 'valid two-digit day'); - assert.equal(moment('2012-05-02', 'YYYY-MM-DD', true).isValid(), true, 'valid two-digit day'); - - assert.equal(moment('+002012-05-25', 'YYYYY-MM-DD', true).isValid(), true, 'valid six-digit year'); - assert.equal(moment('+2012-05-25', 'YYYYY-MM-DD', true).isValid(), false, 'invalid four-digit year'); - - //thse are kinda pointless, but they should work as expected - assert.equal(moment('1', 'S', true).isValid(), true, 'valid one-digit milisecond'); - assert.equal(moment('12', 'S', true).isValid(), false, 'invalid two-digit milisecond'); - assert.equal(moment('123', 'S', true).isValid(), false, 'invalid three-digit milisecond'); - - assert.equal(moment('1', 'SS', true).isValid(), false, 'invalid one-digit milisecond'); - assert.equal(moment('12', 'SS', true).isValid(), true, 'valid two-digit milisecond'); - assert.equal(moment('123', 'SS', true).isValid(), false, 'invalid three-digit milisecond'); - - assert.equal(moment('1', 'SSS', true).isValid(), false, 'invalid one-digit milisecond'); - assert.equal(moment('12', 'SSS', true).isValid(), false, 'invalid two-digit milisecond'); - assert.equal(moment('123', 'SSS', true).isValid(), true, 'valid three-digit milisecond'); - - // strict parsing respects month length - assert.ok(moment('1 January 2000', 'D MMMM YYYY', true).isValid(), 'capital long-month + MMMM'); - assert.ok(!moment('1 January 2000', 'D MMM YYYY', true).isValid(), 'capital long-month + MMM'); - assert.ok(!moment('1 Jan 2000', 'D MMMM YYYY', true).isValid(), 'capital short-month + MMMM'); - assert.ok(moment('1 Jan 2000', 'D MMM YYYY', true).isValid(), 'capital short-month + MMM'); - assert.ok(moment('1 january 2000', 'D MMMM YYYY', true).isValid(), 'lower long-month + MMMM'); - assert.ok(!moment('1 january 2000', 'D MMM YYYY', true).isValid(), 'lower long-month + MMM'); - assert.ok(!moment('1 jan 2000', 'D MMMM YYYY', true).isValid(), 'lower short-month + MMMM'); - assert.ok(moment('1 jan 2000', 'D MMM YYYY', true).isValid(), 'lower short-month + MMM'); - }); - - test('parsing into a locale', function (assert) { - moment.defineLocale('parselocale', { - months : 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'), - monthsShort : 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_') - }); - - moment.locale('en'); - - assert.equal(moment('2012 seven', 'YYYY MMM', 'parselocale').month(), 6, 'should be able to parse in a specific locale'); - - moment.locale('parselocale'); - - assert.equal(moment('2012 july', 'YYYY MMM', 'en').month(), 6, 'should be able to parse in a specific locale'); - - moment.defineLocale('parselocale', null); - }); - - function getVerifier(test) { - return function (input, format, expected, description, asymetrical) { - var m = moment(input, format); - test.equal(m.format('YYYY MM DD'), expected, 'compare: ' + description); - - //test round trip - if (!asymetrical) { - test.equal(m.format(format), input, 'round trip: ' + description); - } - }; - } - - test('parsing week and weekday information', function (assert) { - var ver = getVerifier(assert); - - // year - ver('12', 'gg', '2012 01 01', 'week-year two digits'); - ver('2012', 'gggg', '2012 01 01', 'week-year four digits'); - - ver('99', 'gg', '1998 12 27', 'week-year two digits previous year'); - ver('1999', 'gggg', '1998 12 27', 'week-year four digits previous year'); - - ver('99', 'GG', '1999 01 04', 'iso week-year two digits'); - ver('1999', 'GGGG', '1999 01 04', 'iso week-year four digits'); - - ver('13', 'GG', '2012 12 31', 'iso week-year two digits previous year'); - ver('2013', 'GGGG', '2012 12 31', 'iso week-year four digits previous year'); - - // year + week - ver('1999 37', 'gggg w', '1999 09 05', 'week'); - ver('1999 37', 'gggg ww', '1999 09 05', 'week double'); - ver('1999 37', 'GGGG W', '1999 09 13', 'iso week'); - ver('1999 37', 'GGGG WW', '1999 09 13', 'iso week double'); - - ver('1999 37 4', 'GGGG WW E', '1999 09 16', 'iso day'); - ver('1999 37 04', 'GGGG WW E', '1999 09 16', 'iso day wide', true); - - ver('1999 37 4', 'gggg ww e', '1999 09 09', 'day'); - ver('1999 37 04', 'gggg ww e', '1999 09 09', 'day wide', true); - - // year + week + day - ver('1999 37 4', 'gggg ww d', '1999 09 09', 'd'); - ver('1999 37 Th', 'gggg ww dd', '1999 09 09', 'dd'); - ver('1999 37 Thu', 'gggg ww ddd', '1999 09 09', 'ddd'); - ver('1999 37 Thursday', 'gggg ww dddd', '1999 09 09', 'dddd'); - - // lower-order only - assert.equal(moment('22', 'ww').week(), 22, 'week sets the week by itself'); - assert.equal(moment('22', 'ww').weekYear(), moment().weekYear(), 'week keeps this year'); - assert.equal(moment('2012 22', 'YYYY ww').weekYear(), 2012, 'week keeps parsed year'); - - assert.equal(moment('22', 'WW').isoWeek(), 22, 'iso week sets the week by itself'); - assert.equal(moment('2012 22', 'YYYY WW').weekYear(), 2012, 'iso week keeps parsed year'); - assert.equal(moment('22', 'WW').isoWeekYear(), moment().isoWeekYear(), 'iso week keeps this year'); - - // order - ver('6 2013 2', 'e gggg w', '2013 01 12', 'order doesn\'t matter'); - ver('6 2013 2', 'E GGGG W', '2013 01 12', 'iso order doesn\'t matter'); - - //can parse other stuff too - assert.equal(moment('1999-W37-4 3:30', 'GGGG-[W]WW-E HH:mm').format('YYYY MM DD HH:mm'), '1999 09 16 03:30', 'parsing weeks and hours'); - - // In safari, all years before 1300 are shifted back with one day. - // http://stackoverflow.com/questions/20768975/safari-subtracts-1-day-from-dates-before-1300 - if (new Date('1300-01-01').getUTCFullYear() === 1300) { - // Years less than 100 - ver('0098-06', 'GGGG-WW', '0098 02 03', 'small years work', true); - } - }); - - test('parsing localized weekdays', function (assert) { - var ver = getVerifier(assert); - try { - moment.locale('dow:1,doy:4', { - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - week: {dow: 1, doy: 4} - }); - ver('1999 37 4', 'GGGG WW E', '1999 09 16', 'iso ignores locale'); - ver('1999 37 7', 'GGGG WW E', '1999 09 19', 'iso ignores locale'); - - ver('1999 37 0', 'gggg ww e', '1999 09 13', 'localized e uses local doy and dow: 0 = monday'); - ver('1999 37 4', 'gggg ww e', '1999 09 17', 'localized e uses local doy and dow: 4 = friday'); - - ver('1999 37 1', 'gggg ww d', '1999 09 13', 'localized d uses 0-indexed days: 1 = monday'); - ver('1999 37 Lu', 'gggg ww dd', '1999 09 13', 'localized d uses 0-indexed days: Mo'); - ver('1999 37 lun.', 'gggg ww ddd', '1999 09 13', 'localized d uses 0-indexed days: Mon'); - ver('1999 37 lundi', 'gggg ww dddd', '1999 09 13', 'localized d uses 0-indexed days: Monday'); - ver('1999 37 4', 'gggg ww d', '1999 09 16', 'localized d uses 0-indexed days: 4'); - - //sunday goes at the end of the week - ver('1999 37 0', 'gggg ww d', '1999 09 19', 'localized d uses 0-indexed days: 0 = sund'); - ver('1999 37 Di', 'gggg ww dd', '1999 09 19', 'localized d uses 0-indexed days: 0 = sund'); - } - finally { - moment.locale('en'); - } - }); - - test('parsing with customized two-digit year', function (assert) { - var original = moment.parseTwoDigitYear; - try { - assert.equal(moment('68', 'YY').year(), 2068); - assert.equal(moment('69', 'YY').year(), 1969); - moment.parseTwoDigitYear = function (input) { - return +input + (+input > 30 ? 1900 : 2000); - }; - assert.equal(moment('68', 'YY').year(), 1968); - assert.equal(moment('67', 'YY').year(), 1967); - assert.equal(moment('31', 'YY').year(), 1931); - assert.equal(moment('30', 'YY').year(), 2030); - } - finally { - moment.parseTwoDigitYear = original; - } - }); - - test('array with strings', function (assert) { - assert.equal(moment(['2014', '7', '31']).isValid(), true, 'string array + isValid'); - }); - - test('utc with array of formats', function (assert) { - assert.equal(moment.utc('2014-01-01', ['YYYY-MM-DD', 'YYYY-MM']).format(), '2014-01-01T00:00:00+00:00', 'moment.utc works with array of formats'); - }); - - test('parsing invalid string weekdays', function (assert) { - assert.equal(false, moment('a', 'dd').isValid(), - 'dd with invalid weekday, non-strict'); - assert.equal(false, moment('a', 'dd', true).isValid(), - 'dd with invalid weekday, strict'); - assert.equal(false, moment('a', 'ddd').isValid(), - 'ddd with invalid weekday, non-strict'); - assert.equal(false, moment('a', 'ddd', true).isValid(), - 'ddd with invalid weekday, strict'); - assert.equal(false, moment('a', 'dddd').isValid(), - 'dddd with invalid weekday, non-strict'); - assert.equal(false, moment('a', 'dddd', true).isValid(), - 'dddd with invalid weekday, strict'); - }); - - test('milliseconds', function (assert) { - assert.equal(moment('1', 'S').millisecond(), 100); - assert.equal(moment('12', 'SS').millisecond(), 120); - assert.equal(moment('123', 'SSS').millisecond(), 123); - assert.equal(moment('1234', 'SSSS').millisecond(), 123); - assert.equal(moment('12345', 'SSSSS').millisecond(), 123); - assert.equal(moment('123456', 'SSSSSS').millisecond(), 123); - assert.equal(moment('1234567', 'SSSSSSS').millisecond(), 123); - assert.equal(moment('12345678', 'SSSSSSSS').millisecond(), 123); - assert.equal(moment('123456789', 'SSSSSSSSS').millisecond(), 123); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function each(array, callback) { - var i; - for (i = 0; i < array.length; i++) { - callback(array[i], i, array); - } - } - - module('days in month'); - - test('days in month', function (assert) { - each([31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], function (days, i) { - var firstDay = moment([2012, i]), - lastDay = moment([2012, i, days]); - assert.equal(firstDay.daysInMonth(), days, firstDay.format('L') + ' should have ' + days + ' days.'); - assert.equal(lastDay.daysInMonth(), days, lastDay.format('L') + ' should have ' + days + ' days.'); - }); - }); - - test('days in month leap years', function (assert) { - assert.equal(moment([2010, 1]).daysInMonth(), 28, 'Feb 2010 should have 28 days'); - assert.equal(moment([2100, 1]).daysInMonth(), 28, 'Feb 2100 should have 28 days'); - assert.equal(moment([2008, 1]).daysInMonth(), 29, 'Feb 2008 should have 29 days'); - assert.equal(moment([2000, 1]).daysInMonth(), 29, 'Feb 2000 should have 29 days'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function equal(assert, a, b, message) { - assert.ok(Math.abs(a - b) < 0.00000001, '(' + a + ' === ' + b + ') ' + message); - } - - function dstForYear(year) { - var start = moment([year]), - end = moment([year + 1]), - current = start.clone(), - last; - - while (current < end) { - last = current.clone(); - current.add(24, 'hour'); - if (last.utcOffset() !== current.utcOffset()) { - end = current.clone(); - current = last.clone(); - break; - } - } - - while (current < end) { - last = current.clone(); - current.add(1, 'hour'); - if (last.utcOffset() !== current.utcOffset()) { - return { - moment : last, - diff : -(current.utcOffset() - last.utcOffset()) / 60 - }; - } - } - } - - module('diff'); - - test('diff', function (assert) { - assert.equal(moment(1000).diff(0), 1000, '1 second - 0 = 1000'); - assert.equal(moment(1000).diff(500), 500, '1 second - 0.5 seconds = 500'); - assert.equal(moment(0).diff(1000), -1000, '0 - 1 second = -1000'); - assert.equal(moment(new Date(1000)).diff(1000), 0, '1 second - 1 second = 0'); - var oneHourDate = new Date(), - nowDate = new Date(+oneHourDate); - oneHourDate.setHours(oneHourDate.getHours() + 1); - assert.equal(moment(oneHourDate).diff(nowDate), 60 * 60 * 1000, '1 hour from now = 3600000'); - }); - - test('diff key after', function (assert) { - assert.equal(moment([2010]).diff([2011], 'years'), -1, 'year diff'); - assert.equal(moment([2010]).diff([2010, 2], 'months'), -2, 'month diff'); - assert.equal(moment([2010]).diff([2010, 0, 7], 'weeks'), 0, 'week diff'); - assert.equal(moment([2010]).diff([2010, 0, 8], 'weeks'), -1, 'week diff'); - assert.equal(moment([2010]).diff([2010, 0, 21], 'weeks'), -2, 'week diff'); - assert.equal(moment([2010]).diff([2010, 0, 22], 'weeks'), -3, 'week diff'); - assert.equal(moment([2010]).diff([2010, 0, 4], 'days'), -3, 'day diff'); - assert.equal(moment([2010]).diff([2010, 0, 1, 4], 'hours'), -4, 'hour diff'); - assert.equal(moment([2010]).diff([2010, 0, 1, 0, 5], 'minutes'), -5, 'minute diff'); - assert.equal(moment([2010]).diff([2010, 0, 1, 0, 0, 6], 'seconds'), -6, 'second diff'); - }); - - test('diff key before', function (assert) { - assert.equal(moment([2011]).diff([2010], 'years'), 1, 'year diff'); - assert.equal(moment([2010, 2]).diff([2010], 'months'), 2, 'month diff'); - assert.equal(moment([2010, 0, 4]).diff([2010], 'days'), 3, 'day diff'); - assert.equal(moment([2010, 0, 7]).diff([2010], 'weeks'), 0, 'week diff'); - assert.equal(moment([2010, 0, 8]).diff([2010], 'weeks'), 1, 'week diff'); - assert.equal(moment([2010, 0, 21]).diff([2010], 'weeks'), 2, 'week diff'); - assert.equal(moment([2010, 0, 22]).diff([2010], 'weeks'), 3, 'week diff'); - assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'hours'), 4, 'hour diff'); - assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minutes'), 5, 'minute diff'); - assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'seconds'), 6, 'second diff'); - }); - - test('diff key before singular', function (assert) { - assert.equal(moment([2011]).diff([2010], 'year'), 1, 'year diff singular'); - assert.equal(moment([2010, 2]).diff([2010], 'month'), 2, 'month diff singular'); - assert.equal(moment([2010, 0, 4]).diff([2010], 'day'), 3, 'day diff singular'); - assert.equal(moment([2010, 0, 7]).diff([2010], 'week'), 0, 'week diff singular'); - assert.equal(moment([2010, 0, 8]).diff([2010], 'week'), 1, 'week diff singular'); - assert.equal(moment([2010, 0, 21]).diff([2010], 'week'), 2, 'week diff singular'); - assert.equal(moment([2010, 0, 22]).diff([2010], 'week'), 3, 'week diff singular'); - assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'hour'), 4, 'hour diff singular'); - assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minute'), 5, 'minute diff singular'); - assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'second'), 6, 'second diff singular'); - }); - - test('diff key before abbreviated', function (assert) { - assert.equal(moment([2011]).diff([2010], 'y'), 1, 'year diff abbreviated'); - assert.equal(moment([2010, 2]).diff([2010], 'M'), 2, 'month diff abbreviated'); - assert.equal(moment([2010, 0, 4]).diff([2010], 'd'), 3, 'day diff abbreviated'); - assert.equal(moment([2010, 0, 7]).diff([2010], 'w'), 0, 'week diff abbreviated'); - assert.equal(moment([2010, 0, 8]).diff([2010], 'w'), 1, 'week diff abbreviated'); - assert.equal(moment([2010, 0, 21]).diff([2010], 'w'), 2, 'week diff abbreviated'); - assert.equal(moment([2010, 0, 22]).diff([2010], 'w'), 3, 'week diff abbreviated'); - assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'h'), 4, 'hour diff abbreviated'); - assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'm'), 5, 'minute diff abbreviated'); - assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 's'), 6, 'second diff abbreviated'); - }); - - test('diff month', function (assert) { - assert.equal(moment([2011, 0, 31]).diff([2011, 2, 1], 'months'), -1, 'month diff'); - }); - - test('diff across DST', function (assert) { - var dst = dstForYear(2012), a, b, daysInMonth; - if (!dst) { - assert.equal(42, 42, 'at least one assertion'); - return; - } - - a = dst.moment; - b = a.clone().utc().add(12, 'hours').local(); - daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; - assert.equal(b.diff(a, 'milliseconds', true), 12 * 60 * 60 * 1000, - 'ms diff across DST'); - assert.equal(b.diff(a, 'seconds', true), 12 * 60 * 60, - 'second diff across DST'); - assert.equal(b.diff(a, 'minutes', true), 12 * 60, - 'minute diff across DST'); - assert.equal(b.diff(a, 'hours', true), 12, - 'hour diff across DST'); - assert.equal(b.diff(a, 'days', true), (12 - dst.diff) / 24, - 'day diff across DST'); - equal(assert, b.diff(a, 'weeks', true), (12 - dst.diff) / 24 / 7, - 'week diff across DST'); - assert.ok(0.95 / (2 * 31) < b.diff(a, 'months', true), - 'month diff across DST, lower bound'); - assert.ok(b.diff(a, 'month', true) < 1.05 / (2 * 28), - 'month diff across DST, upper bound'); - assert.ok(0.95 / (2 * 31 * 12) < b.diff(a, 'years', true), - 'year diff across DST, lower bound'); - assert.ok(b.diff(a, 'year', true) < 1.05 / (2 * 28 * 12), - 'year diff across DST, upper bound'); - - a = dst.moment; - b = a.clone().utc().add(12 + dst.diff, 'hours').local(); - daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; - - assert.equal(b.diff(a, 'milliseconds', true), - (12 + dst.diff) * 60 * 60 * 1000, - 'ms diff across DST'); - assert.equal(b.diff(a, 'seconds', true), (12 + dst.diff) * 60 * 60, - 'second diff across DST'); - assert.equal(b.diff(a, 'minutes', true), (12 + dst.diff) * 60, - 'minute diff across DST'); - assert.equal(b.diff(a, 'hours', true), (12 + dst.diff), - 'hour diff across DST'); - assert.equal(b.diff(a, 'days', true), 12 / 24, 'day diff across DST'); - equal(assert, b.diff(a, 'weeks', true), 12 / 24 / 7, - 'week diff across DST'); - assert.ok(0.95 / (2 * 31) < b.diff(a, 'months', true), - 'month diff across DST, lower bound'); - assert.ok(b.diff(a, 'month', true) < 1.05 / (2 * 28), - 'month diff across DST, upper bound'); - assert.ok(0.95 / (2 * 31 * 12) < b.diff(a, 'years', true), - 'year diff across DST, lower bound'); - assert.ok(b.diff(a, 'year', true) < 1.05 / (2 * 28 * 12), - 'year diff across DST, upper bound'); - }); - - test('diff overflow', function (assert) { - assert.equal(moment([2011]).diff([2010], 'months'), 12, 'month diff'); - assert.equal(moment([2010, 0, 2]).diff([2010], 'hours'), 24, 'hour diff'); - assert.equal(moment([2010, 0, 1, 2]).diff([2010], 'minutes'), 120, 'minute diff'); - assert.equal(moment([2010, 0, 1, 0, 4]).diff([2010], 'seconds'), 240, 'second diff'); - }); - - test('diff between utc and local', function (assert) { - if (moment([2012]).utcOffset() === moment([2011]).utcOffset()) { - // Russia's utc offset on 1st of Jan 2012 vs 2011 is different - assert.equal(moment([2012]).utc().diff([2011], 'years'), 1, 'year diff'); - } - assert.equal(moment([2010, 2, 2]).utc().diff([2010, 0, 2], 'months'), 2, 'month diff'); - assert.equal(moment([2010, 0, 4]).utc().diff([2010], 'days'), 3, 'day diff'); - assert.equal(moment([2010, 0, 22]).utc().diff([2010], 'weeks'), 3, 'week diff'); - assert.equal(moment([2010, 0, 1, 4]).utc().diff([2010], 'hours'), 4, 'hour diff'); - assert.equal(moment([2010, 0, 1, 0, 5]).utc().diff([2010], 'minutes'), 5, 'minute diff'); - assert.equal(moment([2010, 0, 1, 0, 0, 6]).utc().diff([2010], 'seconds'), 6, 'second diff'); - }); - - test('diff floored', function (assert) { - assert.equal(moment([2010, 0, 1, 23]).diff([2010], 'day'), 0, '23 hours = 0 days'); - assert.equal(moment([2010, 0, 1, 23, 59]).diff([2010], 'day'), 0, '23:59 hours = 0 days'); - assert.equal(moment([2010, 0, 1, 24]).diff([2010], 'day'), 1, '24 hours = 1 day'); - assert.equal(moment([2010, 0, 2]).diff([2011, 0, 1], 'year'), 0, 'year rounded down'); - assert.equal(moment([2011, 0, 1]).diff([2010, 0, 2], 'year'), 0, 'year rounded down'); - assert.equal(moment([2010, 0, 2]).diff([2011, 0, 2], 'year'), -1, 'year rounded down'); - assert.equal(moment([2011, 0, 2]).diff([2010, 0, 2], 'year'), 1, 'year rounded down'); - }); - - test('year diffs include dates', function (assert) { - assert.ok(moment([2012, 1, 19]).diff(moment([2002, 1, 20]), 'years', true) < 10, 'year diff should include date of month'); - }); - - test('month diffs', function (assert) { - // due to floating point math errors, these tests just need to be accurate within 0.00000001 - assert.equal(moment([2012, 0, 1]).diff([2012, 1, 1], 'months', true), -1, 'Jan 1 to Feb 1 should be 1 month'); - equal(assert, moment([2012, 0, 1]).diff([2012, 0, 1, 12], 'months', true), -0.5 / 31, 'Jan 1 to Jan 1 noon should be 0.5 / 31 months'); - assert.equal(moment([2012, 0, 15]).diff([2012, 1, 15], 'months', true), -1, 'Jan 15 to Feb 15 should be 1 month'); - assert.equal(moment([2012, 0, 28]).diff([2012, 1, 28], 'months', true), -1, 'Jan 28 to Feb 28 should be 1 month'); - assert.ok(moment([2012, 0, 31]).diff([2012, 1, 29], 'months', true), -1, 'Jan 31 to Feb 29 should be 1 month'); - assert.ok(-1 > moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), 'Jan 31 to Mar 1 should be more than 1 month'); - assert.ok(-30 / 28 < moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), 'Jan 31 to Mar 1 should be less than 1 month and 1 day'); - equal(assert, moment([2012, 0, 1]).diff([2012, 0, 31], 'months', true), -(30 / 31), 'Jan 1 to Jan 31 should be 30 / 31 months'); - assert.ok(0 < moment('2014-02-01').diff(moment('2014-01-31'), 'months', true), 'jan-31 to feb-1 diff is positive'); - }); - - test('exact month diffs', function (assert) { - // generate all pairs of months and compute month diff, with fixed day - // of month = 15. - - var m1, m2; - for (m1 = 0; m1 < 12; ++m1) { - for (m2 = m1; m2 < 12; ++m2) { - assert.equal(moment([2013, m2, 15]).diff(moment([2013, m1, 15]), 'months', true), m2 - m1, - 'month diff from 2013-' + m1 + '-15 to 2013-' + m2 + '-15'); - } - } - }); - - test('year diffs', function (assert) { - // due to floating point math errors, these tests just need to be accurate within 0.00000001 - equal(assert, moment([2012, 0, 1]).diff([2013, 0, 1], 'years', true), -1, 'Jan 1 2012 to Jan 1 2013 should be 1 year'); - equal(assert, moment([2012, 1, 28]).diff([2013, 1, 28], 'years', true), -1, 'Feb 28 2012 to Feb 28 2013 should be 1 year'); - equal(assert, moment([2012, 2, 1]).diff([2013, 2, 1], 'years', true), -1, 'Mar 1 2012 to Mar 1 2013 should be 1 year'); - equal(assert, moment([2012, 11, 1]).diff([2013, 11, 1], 'years', true), -1, 'Dec 1 2012 to Dec 1 2013 should be 1 year'); - equal(assert, moment([2012, 11, 31]).diff([2013, 11, 31], 'years', true), -1, 'Dec 31 2012 to Dec 31 2013 should be 1 year'); - equal(assert, moment([2012, 0, 1]).diff([2013, 6, 1], 'years', true), -1.5, 'Jan 1 2012 to Jul 1 2013 should be 1.5 years'); - equal(assert, moment([2012, 0, 31]).diff([2013, 6, 31], 'years', true), -1.5, 'Jan 31 2012 to Jul 31 2013 should be 1.5 years'); - equal(assert, moment([2012, 0, 1]).diff([2013, 0, 1, 12], 'years', true), -1 - (0.5 / 31) / 12, 'Jan 1 2012 to Jan 1 2013 noon should be 1+(0.5 / 31) / 12 years'); - equal(assert, moment([2012, 0, 1]).diff([2013, 6, 1, 12], 'years', true), -1.5 - (0.5 / 31) / 12, 'Jan 1 2012 to Jul 1 2013 noon should be 1.5+(0.5 / 31) / 12 years'); - equal(assert, moment([2012, 1, 29]).diff([2013, 1, 28], 'years', true), -1, 'Feb 29 2012 to Feb 28 2013 should be 1-(1 / 28.5) / 12 years'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('duration'); - - test('object instantiation', function (assert) { - var d = moment.duration({ - years: 2, - months: 3, - weeks: 2, - days: 1, - hours: 8, - minutes: 9, - seconds: 20, - milliseconds: 12 - }); - - assert.equal(d.years(), 2, 'years'); - assert.equal(d.months(), 3, 'months'); - assert.equal(d.weeks(), 2, 'weeks'); - assert.equal(d.days(), 15, 'days'); // two weeks + 1 day - assert.equal(d.hours(), 8, 'hours'); - assert.equal(d.minutes(), 9, 'minutes'); - assert.equal(d.seconds(), 20, 'seconds'); - assert.equal(d.milliseconds(), 12, 'milliseconds'); - }); - - test('object instantiation with strings', function (assert) { - var d = moment.duration({ - years: '2', - months: '3', - weeks: '2', - days: '1', - hours: '8', - minutes: '9', - seconds: '20', - milliseconds: '12' - }); - - assert.equal(d.years(), 2, 'years'); - assert.equal(d.months(), 3, 'months'); - assert.equal(d.weeks(), 2, 'weeks'); - assert.equal(d.days(), 15, 'days'); // two weeks + 1 day - assert.equal(d.hours(), 8, 'hours'); - assert.equal(d.minutes(), 9, 'minutes'); - assert.equal(d.seconds(), 20, 'seconds'); - assert.equal(d.milliseconds(), 12, 'milliseconds'); - }); - - test('milliseconds instantiation', function (assert) { - assert.equal(moment.duration(72).milliseconds(), 72, 'milliseconds'); - }); - - test('undefined instantiation', function (assert) { - assert.equal(moment.duration(undefined).milliseconds(), 0, 'milliseconds'); - }); - - test('null instantiation', function (assert) { - assert.equal(moment.duration(null).milliseconds(), 0, 'milliseconds'); - }); - - test('instantiation by type', function (assert) { - assert.equal(moment.duration(1, 'years').years(), 1, 'years'); - assert.equal(moment.duration(1, 'y').years(), 1, 'y'); - assert.equal(moment.duration(2, 'months').months(), 2, 'months'); - assert.equal(moment.duration(2, 'M').months(), 2, 'M'); - assert.equal(moment.duration(3, 'weeks').weeks(), 3, 'weeks'); - assert.equal(moment.duration(3, 'w').weeks(), 3, 'weeks'); - assert.equal(moment.duration(4, 'days').days(), 4, 'days'); - assert.equal(moment.duration(4, 'd').days(), 4, 'd'); - assert.equal(moment.duration(5, 'hours').hours(), 5, 'hours'); - assert.equal(moment.duration(5, 'h').hours(), 5, 'h'); - assert.equal(moment.duration(6, 'minutes').minutes(), 6, 'minutes'); - assert.equal(moment.duration(6, 'm').minutes(), 6, 'm'); - assert.equal(moment.duration(7, 'seconds').seconds(), 7, 'seconds'); - assert.equal(moment.duration(7, 's').seconds(), 7, 's'); - assert.equal(moment.duration(8, 'milliseconds').milliseconds(), 8, 'milliseconds'); - assert.equal(moment.duration(8, 'ms').milliseconds(), 8, 'ms'); - }); - - test('shortcuts', function (assert) { - assert.equal(moment.duration({y: 1}).years(), 1, 'years = y'); - assert.equal(moment.duration({M: 2}).months(), 2, 'months = M'); - assert.equal(moment.duration({w: 3}).weeks(), 3, 'weeks = w'); - assert.equal(moment.duration({d: 4}).days(), 4, 'days = d'); - assert.equal(moment.duration({h: 5}).hours(), 5, 'hours = h'); - assert.equal(moment.duration({m: 6}).minutes(), 6, 'minutes = m'); - assert.equal(moment.duration({s: 7}).seconds(), 7, 'seconds = s'); - assert.equal(moment.duration({ms: 8}).milliseconds(), 8, 'milliseconds = ms'); - }); - - test('generic getter', function (assert) { - assert.equal(moment.duration(1, 'years').get('years'), 1, 'years'); - assert.equal(moment.duration(1, 'years').get('year'), 1, 'years = year'); - assert.equal(moment.duration(1, 'years').get('y'), 1, 'years = y'); - assert.equal(moment.duration(2, 'months').get('months'), 2, 'months'); - assert.equal(moment.duration(2, 'months').get('month'), 2, 'months = month'); - assert.equal(moment.duration(2, 'months').get('M'), 2, 'months = M'); - assert.equal(moment.duration(3, 'weeks').get('weeks'), 3, 'weeks'); - assert.equal(moment.duration(3, 'weeks').get('week'), 3, 'weeks = week'); - assert.equal(moment.duration(3, 'weeks').get('w'), 3, 'weeks = w'); - assert.equal(moment.duration(4, 'days').get('days'), 4, 'days'); - assert.equal(moment.duration(4, 'days').get('day'), 4, 'days = day'); - assert.equal(moment.duration(4, 'days').get('d'), 4, 'days = d'); - assert.equal(moment.duration(5, 'hours').get('hours'), 5, 'hours'); - assert.equal(moment.duration(5, 'hours').get('hour'), 5, 'hours = hour'); - assert.equal(moment.duration(5, 'hours').get('h'), 5, 'hours = h'); - assert.equal(moment.duration(6, 'minutes').get('minutes'), 6, 'minutes'); - assert.equal(moment.duration(6, 'minutes').get('minute'), 6, 'minutes = minute'); - assert.equal(moment.duration(6, 'minutes').get('m'), 6, 'minutes = m'); - assert.equal(moment.duration(7, 'seconds').get('seconds'), 7, 'seconds'); - assert.equal(moment.duration(7, 'seconds').get('second'), 7, 'seconds = second'); - assert.equal(moment.duration(7, 'seconds').get('s'), 7, 'seconds = s'); - assert.equal(moment.duration(8, 'milliseconds').get('milliseconds'), 8, 'milliseconds'); - assert.equal(moment.duration(8, 'milliseconds').get('millisecond'), 8, 'milliseconds = millisecond'); - assert.equal(moment.duration(8, 'milliseconds').get('ms'), 8, 'milliseconds = ms'); - }); - - test('instantiation from another duration', function (assert) { - var simple = moment.duration(1234), - lengthy = moment.duration(60 * 60 * 24 * 360 * 1e3), - complicated = moment.duration({ - years: 2, - months: 3, - weeks: 4, - days: 1, - hours: 8, - minutes: 9, - seconds: 20, - milliseconds: 12 - }), - modified = moment.duration(1, 'day').add(moment.duration(1, 'day')); - - assert.deepEqual(moment.duration(simple), simple, 'simple clones are equal'); - assert.deepEqual(moment.duration(lengthy), lengthy, 'lengthy clones are equal'); - assert.deepEqual(moment.duration(complicated), complicated, 'complicated clones are equal'); - assert.deepEqual(moment.duration(modified), modified, 'cloning modified duration works'); - }); - - test('instantiation from 24-hour time zero', function (assert) { - assert.equal(moment.duration('00:00').years(), 0, '0 years'); - assert.equal(moment.duration('00:00').days(), 0, '0 days'); - assert.equal(moment.duration('00:00').hours(), 0, '0 hours'); - assert.equal(moment.duration('00:00').minutes(), 0, '0 minutes'); - assert.equal(moment.duration('00:00').seconds(), 0, '0 seconds'); - assert.equal(moment.duration('00:00').milliseconds(), 0, '0 milliseconds'); - }); - - test('instantiation from 24-hour time <24 hours', function (assert) { - assert.equal(moment.duration('06:45').years(), 0, '0 years'); - assert.equal(moment.duration('06:45').days(), 0, '0 days'); - assert.equal(moment.duration('06:45').hours(), 6, '6 hours'); - assert.equal(moment.duration('06:45').minutes(), 45, '45 minutes'); - assert.equal(moment.duration('06:45').seconds(), 0, '0 seconds'); - assert.equal(moment.duration('06:45').milliseconds(), 0, '0 milliseconds'); - }); - - test('instantiation from 24-hour time >24 hours', function (assert) { - assert.equal(moment.duration('26:45').years(), 0, '0 years'); - assert.equal(moment.duration('26:45').days(), 1, '0 days'); - assert.equal(moment.duration('26:45').hours(), 2, '2 hours'); - assert.equal(moment.duration('26:45').minutes(), 45, '45 minutes'); - assert.equal(moment.duration('26:45').seconds(), 0, '0 seconds'); - assert.equal(moment.duration('26:45').milliseconds(), 0, '0 milliseconds'); - }); - - test('instatiation from serialized C# TimeSpan zero', function (assert) { - assert.equal(moment.duration('00:00:00').years(), 0, '0 years'); - assert.equal(moment.duration('00:00:00').days(), 0, '0 days'); - assert.equal(moment.duration('00:00:00').hours(), 0, '0 hours'); - assert.equal(moment.duration('00:00:00').minutes(), 0, '0 minutes'); - assert.equal(moment.duration('00:00:00').seconds(), 0, '0 seconds'); - assert.equal(moment.duration('00:00:00').milliseconds(), 0, '0 milliseconds'); - }); - - test('instatiation from serialized C# TimeSpan with days', function (assert) { - assert.equal(moment.duration('1.02:03:04.9999999').years(), 0, '0 years'); - assert.equal(moment.duration('1.02:03:04.9999999').days(), 1, '1 day'); - assert.equal(moment.duration('1.02:03:04.9999999').hours(), 2, '2 hours'); - assert.equal(moment.duration('1.02:03:04.9999999').minutes(), 3, '3 minutes'); - assert.equal(moment.duration('1.02:03:04.9999999').seconds(), 4, '4 seconds'); - assert.equal(moment.duration('1.02:03:04.9999999').milliseconds(), 999, '999 milliseconds'); - }); - - test('instatiation from serialized C# TimeSpan without days', function (assert) { - assert.equal(moment.duration('01:02:03.9999999').years(), 0, '0 years'); - assert.equal(moment.duration('01:02:03.9999999').days(), 0, '0 days'); - assert.equal(moment.duration('01:02:03.9999999').hours(), 1, '1 hour'); - assert.equal(moment.duration('01:02:03.9999999').minutes(), 2, '2 minutes'); - assert.equal(moment.duration('01:02:03.9999999').seconds(), 3, '3 seconds'); - assert.equal(moment.duration('01:02:03.9999999').milliseconds(), 999, '999 milliseconds'); - - assert.equal(moment.duration('23:59:59.9999999').days(), 0, '0 days'); - assert.equal(moment.duration('23:59:59.9999999').hours(), 23, '23 hours'); - - assert.equal(moment.duration('500:59:59.9999999').days(), 20, '500 hours overflows to 20 days'); - assert.equal(moment.duration('500:59:59.9999999').hours(), 20, '500 hours overflows to 20 hours'); - }); - - test('instatiation from serialized C# TimeSpan without days or milliseconds', function (assert) { - assert.equal(moment.duration('01:02:03').years(), 0, '0 years'); - assert.equal(moment.duration('01:02:03').days(), 0, '0 days'); - assert.equal(moment.duration('01:02:03').hours(), 1, '1 hour'); - assert.equal(moment.duration('01:02:03').minutes(), 2, '2 minutes'); - assert.equal(moment.duration('01:02:03').seconds(), 3, '3 seconds'); - assert.equal(moment.duration('01:02:03').milliseconds(), 0, '0 milliseconds'); - }); - - test('instatiation from serialized C# TimeSpan without milliseconds', function (assert) { - assert.equal(moment.duration('1.02:03:04').years(), 0, '0 years'); - assert.equal(moment.duration('1.02:03:04').days(), 1, '1 day'); - assert.equal(moment.duration('1.02:03:04').hours(), 2, '2 hours'); - assert.equal(moment.duration('1.02:03:04').minutes(), 3, '3 minutes'); - assert.equal(moment.duration('1.02:03:04').seconds(), 4, '4 seconds'); - assert.equal(moment.duration('1.02:03:04').milliseconds(), 0, '0 milliseconds'); - }); - - test('instatiation from serialized C# TimeSpan maxValue', function (assert) { - var d = moment.duration('10675199.02:48:05.4775807'); - - assert.equal(d.years(), 29227, '29227 years'); - assert.equal(d.months(), 8, '8 months'); - assert.equal(d.days(), 12, '12 day'); // if you have to change this value -- just do it - - assert.equal(d.hours(), 2, '2 hours'); - assert.equal(d.minutes(), 48, '48 minutes'); - assert.equal(d.seconds(), 5, '5 seconds'); - assert.equal(d.milliseconds(), 477, '477 milliseconds'); - }); - - test('instatiation from serialized C# TimeSpan minValue', function (assert) { - var d = moment.duration('-10675199.02:48:05.4775808'); - - assert.equal(d.years(), -29227, '29653 years'); - assert.equal(d.months(), -8, '8 day'); - assert.equal(d.days(), -12, '12 day'); // if you have to change this value -- just do it - - assert.equal(d.hours(), -2, '2 hours'); - assert.equal(d.minutes(), -48, '48 minutes'); - assert.equal(d.seconds(), -5, '5 seconds'); - assert.equal(d.milliseconds(), -477, '477 milliseconds'); - }); - - test('instantiation from ISO 8601 duration', function (assert) { - assert.equal(moment.duration('P1Y2M3DT4H5M6S').asSeconds(), moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).asSeconds(), 'all fields'); - assert.equal(moment.duration('P1M').asSeconds(), moment.duration({M: 1}).asSeconds(), 'single month field'); - assert.equal(moment.duration('PT1M').asSeconds(), moment.duration({m: 1}).asSeconds(), 'single minute field'); - assert.equal(moment.duration('P1MT2H').asSeconds(), moment.duration({M: 1, h: 2}).asSeconds(), 'random fields missing'); - assert.equal(moment.duration('-P60D').asSeconds(), moment.duration({d: -60}).asSeconds(), 'negative days'); - assert.equal(moment.duration('PT0.5S').asSeconds(), moment.duration({s: 0.5}).asSeconds(), 'fractional seconds'); - assert.equal(moment.duration('PT0,5S').asSeconds(), moment.duration({s: 0.5}).asSeconds(), 'fractional seconds (comma)'); - }); - - test('serialization to ISO 8601 duration strings', function (assert) { - assert.equal(moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).toISOString(), 'P1Y2M3DT4H5M6S', 'all fields'); - assert.equal(moment.duration({M: -1}).toISOString(), '-P1M', 'one month ago'); - assert.equal(moment.duration({m: -1}).toISOString(), '-PT1M', 'one minute ago'); - assert.equal(moment.duration({s: -0.5}).toISOString(), '-PT0.5S', 'one half second ago'); - assert.equal(moment.duration({y: -0.5, M: 1}).toISOString(), '-P5M', 'a month after half a year ago'); - assert.equal(moment.duration({}).toISOString(), 'P0D', 'zero duration'); - assert.equal(moment.duration({M: 16, d:40, s: 86465}).toISOString(), 'P1Y4M40DT24H1M5S', 'all fields'); - }); - - test('toString acts as toISOString', function (assert) { - assert.equal(moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).toString(), 'P1Y2M3DT4H5M6S', 'all fields'); - assert.equal(moment.duration({M: -1}).toString(), '-P1M', 'one month ago'); - assert.equal(moment.duration({m: -1}).toString(), '-PT1M', 'one minute ago'); - assert.equal(moment.duration({s: -0.5}).toString(), '-PT0.5S', 'one half second ago'); - assert.equal(moment.duration({y: -0.5, M: 1}).toString(), '-P5M', 'a month after half a year ago'); - assert.equal(moment.duration({}).toString(), 'P0D', 'zero duration'); - assert.equal(moment.duration({M: 16, d:40, s: 86465}).toString(), 'P1Y4M40DT24H1M5S', 'all fields'); - }); - - test('toIsoString deprecation', function (assert) { - assert.equal(moment.duration({}).toIsoString(), moment.duration({}).toISOString(), 'toIsoString delegates to toISOString'); - }); - - test('`isodate` (python) test cases', function (assert) { - assert.equal(moment.duration('P18Y9M4DT11H9M8S').asSeconds(), moment.duration({y: 18, M: 9, d: 4, h: 11, m: 9, s: 8}).asSeconds(), 'python isodate 1'); - assert.equal(moment.duration('P2W').asSeconds(), moment.duration({w: 2}).asSeconds(), 'python isodate 2'); - assert.equal(moment.duration('P3Y6M4DT12H30M5S').asSeconds(), moment.duration({y: 3, M: 6, d: 4, h: 12, m: 30, s: 5}).asSeconds(), 'python isodate 3'); - assert.equal(moment.duration('P23DT23H').asSeconds(), moment.duration({d: 23, h: 23}).asSeconds(), 'python isodate 4'); - assert.equal(moment.duration('P4Y').asSeconds(), moment.duration({y: 4}).asSeconds(), 'python isodate 5'); - assert.equal(moment.duration('P1M').asSeconds(), moment.duration({M: 1}).asSeconds(), 'python isodate 6'); - assert.equal(moment.duration('PT1M').asSeconds(), moment.duration({m: 1}).asSeconds(), 'python isodate 7'); - assert.equal(moment.duration('P0.5Y').asSeconds(), moment.duration({y: 0.5}).asSeconds(), 'python isodate 8'); - assert.equal(moment.duration('PT36H').asSeconds(), moment.duration({h: 36}).asSeconds(), 'python isodate 9'); - assert.equal(moment.duration('P1DT12H').asSeconds(), moment.duration({d: 1, h: 12}).asSeconds(), 'python isodate 10'); - assert.equal(moment.duration('-P2W').asSeconds(), moment.duration({w: -2}).asSeconds(), 'python isodate 11'); - assert.equal(moment.duration('-P2.2W').asSeconds(), moment.duration({w: -2.2}).asSeconds(), 'python isodate 12'); - assert.equal(moment.duration('P1DT2H3M4S').asSeconds(), moment.duration({d: 1, h: 2, m: 3, s: 4}).asSeconds(), 'python isodate 13'); - assert.equal(moment.duration('P1DT2H3M').asSeconds(), moment.duration({d: 1, h: 2, m: 3}).asSeconds(), 'python isodate 14'); - assert.equal(moment.duration('P1DT2H').asSeconds(), moment.duration({d: 1, h: 2}).asSeconds(), 'python isodate 15'); - assert.equal(moment.duration('PT2H').asSeconds(), moment.duration({h: 2}).asSeconds(), 'python isodate 16'); - assert.equal(moment.duration('PT2.3H').asSeconds(), moment.duration({h: 2.3}).asSeconds(), 'python isodate 17'); - assert.equal(moment.duration('PT2H3M4S').asSeconds(), moment.duration({h: 2, m: 3, s: 4}).asSeconds(), 'python isodate 18'); - assert.equal(moment.duration('PT3M4S').asSeconds(), moment.duration({m: 3, s: 4}).asSeconds(), 'python isodate 19'); - assert.equal(moment.duration('PT22S').asSeconds(), moment.duration({s: 22}).asSeconds(), 'python isodate 20'); - assert.equal(moment.duration('PT22.22S').asSeconds(), moment.duration({s: 22.22}).asSeconds(), 'python isodate 21'); - assert.equal(moment.duration('-P2Y').asSeconds(), moment.duration({y: -2}).asSeconds(), 'python isodate 22'); - assert.equal(moment.duration('-P3Y6M4DT12H30M5S').asSeconds(), moment.duration({y: -3, M: -6, d: -4, h: -12, m: -30, s: -5}).asSeconds(), 'python isodate 23'); - assert.equal(moment.duration('-P1DT2H3M4S').asSeconds(), moment.duration({d: -1, h: -2, m: -3, s: -4}).asSeconds(), 'python isodate 24'); - }); - - test('ISO 8601 misuse cases', function (assert) { - assert.equal(moment.duration('P').asSeconds(), 0, 'lonely P'); - assert.equal(moment.duration('PT').asSeconds(), 0, 'just P and T'); - assert.equal(moment.duration('P1H').asSeconds(), 0, 'missing T'); - assert.equal(moment.duration('P1D1Y').asSeconds(), 0, 'out of order'); - assert.equal(moment.duration('PT.5S').asSeconds(), 0.5, 'accept no leading zero for decimal'); - assert.equal(moment.duration('PT1,S').asSeconds(), 1, 'accept trailing decimal separator'); - assert.equal(moment.duration('PT1M0,,5S').asSeconds(), 60, 'extra decimal separators are ignored as 0'); - assert.equal(moment.duration('P-1DS').asSeconds(), 0, 'wrong position of negative'); - }); - - test('humanize', function (assert) { - moment.locale('en'); - assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', '44 seconds = a few seconds'); - assert.equal(moment.duration({seconds: 45}).humanize(), 'a minute', '45 seconds = a minute'); - assert.equal(moment.duration({seconds: 89}).humanize(), 'a minute', '89 seconds = a minute'); - assert.equal(moment.duration({seconds: 90}).humanize(), '2 minutes', '90 seconds = 2 minutes'); - assert.equal(moment.duration({minutes: 44}).humanize(), '44 minutes', '44 minutes = 44 minutes'); - assert.equal(moment.duration({minutes: 45}).humanize(), 'an hour', '45 minutes = an hour'); - assert.equal(moment.duration({minutes: 89}).humanize(), 'an hour', '89 minutes = an hour'); - assert.equal(moment.duration({minutes: 90}).humanize(), '2 hours', '90 minutes = 2 hours'); - assert.equal(moment.duration({hours: 5}).humanize(), '5 hours', '5 hours = 5 hours'); - assert.equal(moment.duration({hours: 21}).humanize(), '21 hours', '21 hours = 21 hours'); - assert.equal(moment.duration({hours: 22}).humanize(), 'a day', '22 hours = a day'); - assert.equal(moment.duration({hours: 35}).humanize(), 'a day', '35 hours = a day'); - assert.equal(moment.duration({hours: 36}).humanize(), '2 days', '36 hours = 2 days'); - assert.equal(moment.duration({days: 1}).humanize(), 'a day', '1 day = a day'); - assert.equal(moment.duration({days: 5}).humanize(), '5 days', '5 days = 5 days'); - assert.equal(moment.duration({weeks: 1}).humanize(), '7 days', '1 week = 7 days'); - assert.equal(moment.duration({days: 25}).humanize(), '25 days', '25 days = 25 days'); - assert.equal(moment.duration({days: 26}).humanize(), 'a month', '26 days = a month'); - assert.equal(moment.duration({days: 30}).humanize(), 'a month', '30 days = a month'); - assert.equal(moment.duration({days: 45}).humanize(), 'a month', '45 days = a month'); - assert.equal(moment.duration({days: 46}).humanize(), '2 months', '46 days = 2 months'); - assert.equal(moment.duration({days: 74}).humanize(), '2 months', '74 days = 2 months'); - assert.equal(moment.duration({days: 77}).humanize(), '3 months', '77 days = 3 months'); - assert.equal(moment.duration({months: 1}).humanize(), 'a month', '1 month = a month'); - assert.equal(moment.duration({months: 5}).humanize(), '5 months', '5 months = 5 months'); - assert.equal(moment.duration({days: 344}).humanize(), 'a year', '344 days = a year'); - assert.equal(moment.duration({days: 345}).humanize(), 'a year', '345 days = a year'); - assert.equal(moment.duration({days: 547}).humanize(), 'a year', '547 days = a year'); - assert.equal(moment.duration({days: 548}).humanize(), '2 years', '548 days = 2 years'); - assert.equal(moment.duration({years: 1}).humanize(), 'a year', '1 year = a year'); - assert.equal(moment.duration({years: 5}).humanize(), '5 years', '5 years = 5 years'); - assert.equal(moment.duration(7200000).humanize(), '2 hours', '7200000 = 2 minutes'); - }); - - test('humanize duration with suffix', function (assert) { - moment.locale('en'); - assert.equal(moment.duration({seconds: 44}).humanize(true), 'in a few seconds', '44 seconds = a few seconds'); - assert.equal(moment.duration({seconds: -44}).humanize(true), 'a few seconds ago', '44 seconds = a few seconds'); - }); - - test('bubble value up', function (assert) { - assert.equal(moment.duration({milliseconds: 61001}).milliseconds(), 1, '61001 milliseconds has 1 millisecond left over'); - assert.equal(moment.duration({milliseconds: 61001}).seconds(), 1, '61001 milliseconds has 1 second left over'); - assert.equal(moment.duration({milliseconds: 61001}).minutes(), 1, '61001 milliseconds has 1 minute left over'); - - assert.equal(moment.duration({minutes: 350}).minutes(), 50, '350 minutes has 50 minutes left over'); - assert.equal(moment.duration({minutes: 350}).hours(), 5, '350 minutes has 5 hours left over'); - }); - - test('clipping', function (assert) { - assert.equal(moment.duration({months: 11}).months(), 11, '11 months is 11 months'); - assert.equal(moment.duration({months: 11}).years(), 0, '11 months makes no year'); - assert.equal(moment.duration({months: 12}).months(), 0, '12 months is 0 months left over'); - assert.equal(moment.duration({months: 12}).years(), 1, '12 months makes 1 year'); - assert.equal(moment.duration({months: 13}).months(), 1, '13 months is 1 month left over'); - assert.equal(moment.duration({months: 13}).years(), 1, '13 months makes 1 year'); - - assert.equal(moment.duration({days: 30}).days(), 30, '30 days is 30 days'); - assert.equal(moment.duration({days: 30}).months(), 0, '30 days makes no month'); - assert.equal(moment.duration({days: 31}).days(), 0, '31 days is 0 days left over'); - assert.equal(moment.duration({days: 31}).months(), 1, '31 days is a month'); - assert.equal(moment.duration({days: 32}).days(), 1, '32 days is 1 day left over'); - assert.equal(moment.duration({days: 32}).months(), 1, '32 days is a month'); - - assert.equal(moment.duration({hours: 23}).hours(), 23, '23 hours is 23 hours'); - assert.equal(moment.duration({hours: 23}).days(), 0, '23 hours makes no day'); - assert.equal(moment.duration({hours: 24}).hours(), 0, '24 hours is 0 hours left over'); - assert.equal(moment.duration({hours: 24}).days(), 1, '24 hours makes 1 day'); - assert.equal(moment.duration({hours: 25}).hours(), 1, '25 hours is 1 hour left over'); - assert.equal(moment.duration({hours: 25}).days(), 1, '25 hours makes 1 day'); - }); - - test('bubbling consistency', function (assert) { - var days = 0, months = 0, newDays, newMonths, totalDays, d; - for (totalDays = 1; totalDays <= 500; ++totalDays) { - d = moment.duration(totalDays, 'days'); - newDays = d.days(); - newMonths = d.months() + d.years() * 12; - assert.ok( - (months === newMonths && days + 1 === newDays) || - (months + 1 === newMonths && newDays === 0), - 'consistent total days ' + totalDays + - ' was ' + months + ' ' + days + - ' now ' + newMonths + ' ' + newDays); - days = newDays; - months = newMonths; - } - }); - - test('effective equivalency', function (assert) { - assert.deepEqual(moment.duration({seconds: 1})._data, moment.duration({milliseconds: 1000})._data, '1 second is the same as 1000 milliseconds'); - assert.deepEqual(moment.duration({seconds: 60})._data, moment.duration({minutes: 1})._data, '1 minute is the same as 60 seconds'); - assert.deepEqual(moment.duration({minutes: 60})._data, moment.duration({hours: 1})._data, '1 hour is the same as 60 minutes'); - assert.deepEqual(moment.duration({hours: 24})._data, moment.duration({days: 1})._data, '1 day is the same as 24 hours'); - assert.deepEqual(moment.duration({days: 7})._data, moment.duration({weeks: 1})._data, '1 week is the same as 7 days'); - assert.deepEqual(moment.duration({days: 31})._data, moment.duration({months: 1})._data, '1 month is the same as 30 days'); - assert.deepEqual(moment.duration({months: 12})._data, moment.duration({years: 1})._data, '1 years is the same as 12 months'); - }); - - test('asGetters', function (assert) { - // 400 years have exactly 146097 days - - // years - assert.equal(moment.duration(1, 'year').asYears(), 1, '1 year as years'); - assert.equal(moment.duration(1, 'year').asMonths(), 12, '1 year as months'); - assert.equal(moment.duration(400, 'year').asMonths(), 4800, '400 years as months'); - assert.equal(moment.duration(1, 'year').asWeeks().toFixed(3), 52.143, '1 year as weeks'); - assert.equal(moment.duration(1, 'year').asDays(), 365, '1 year as days'); - assert.equal(moment.duration(2, 'year').asDays(), 730, '2 years as days'); - assert.equal(moment.duration(3, 'year').asDays(), 1096, '3 years as days'); - assert.equal(moment.duration(4, 'year').asDays(), 1461, '4 years as days'); - assert.equal(moment.duration(400, 'year').asDays(), 146097, '400 years as days'); - assert.equal(moment.duration(1, 'year').asHours(), 8760, '1 year as hours'); - assert.equal(moment.duration(1, 'year').asMinutes(), 525600, '1 year as minutes'); - assert.equal(moment.duration(1, 'year').asSeconds(), 31536000, '1 year as seconds'); - assert.equal(moment.duration(1, 'year').asMilliseconds(), 31536000000, '1 year as milliseconds'); - - // months - assert.equal(moment.duration(1, 'month').asYears().toFixed(4), 0.0833, '1 month as years'); - assert.equal(moment.duration(1, 'month').asMonths(), 1, '1 month as months'); - assert.equal(moment.duration(1, 'month').asWeeks().toFixed(3), 4.286, '1 month as weeks'); - assert.equal(moment.duration(1, 'month').asDays(), 30, '1 month as days'); - assert.equal(moment.duration(2, 'month').asDays(), 61, '2 months as days'); - assert.equal(moment.duration(3, 'month').asDays(), 91, '3 months as days'); - assert.equal(moment.duration(4, 'month').asDays(), 122, '4 months as days'); - assert.equal(moment.duration(5, 'month').asDays(), 152, '5 months as days'); - assert.equal(moment.duration(6, 'month').asDays(), 183, '6 months as days'); - assert.equal(moment.duration(7, 'month').asDays(), 213, '7 months as days'); - assert.equal(moment.duration(8, 'month').asDays(), 243, '8 months as days'); - assert.equal(moment.duration(9, 'month').asDays(), 274, '9 months as days'); - assert.equal(moment.duration(10, 'month').asDays(), 304, '10 months as days'); - assert.equal(moment.duration(11, 'month').asDays(), 335, '11 months as days'); - assert.equal(moment.duration(12, 'month').asDays(), 365, '12 months as days'); - assert.equal(moment.duration(24, 'month').asDays(), 730, '24 months as days'); - assert.equal(moment.duration(36, 'month').asDays(), 1096, '36 months as days'); - assert.equal(moment.duration(48, 'month').asDays(), 1461, '48 months as days'); - assert.equal(moment.duration(4800, 'month').asDays(), 146097, '4800 months as days'); - assert.equal(moment.duration(1, 'month').asHours(), 720, '1 month as hours'); - assert.equal(moment.duration(1, 'month').asMinutes(), 43200, '1 month as minutes'); - assert.equal(moment.duration(1, 'month').asSeconds(), 2592000, '1 month as seconds'); - assert.equal(moment.duration(1, 'month').asMilliseconds(), 2592000000, '1 month as milliseconds'); - - // weeks - assert.equal(moment.duration(1, 'week').asYears().toFixed(4), 0.0192, '1 week as years'); - assert.equal(moment.duration(1, 'week').asMonths().toFixed(3), 0.230, '1 week as months'); - assert.equal(moment.duration(1, 'week').asWeeks(), 1, '1 week as weeks'); - assert.equal(moment.duration(1, 'week').asDays(), 7, '1 week as days'); - assert.equal(moment.duration(1, 'week').asHours(), 168, '1 week as hours'); - assert.equal(moment.duration(1, 'week').asMinutes(), 10080, '1 week as minutes'); - assert.equal(moment.duration(1, 'week').asSeconds(), 604800, '1 week as seconds'); - assert.equal(moment.duration(1, 'week').asMilliseconds(), 604800000, '1 week as milliseconds'); - - // days - assert.equal(moment.duration(1, 'day').asYears().toFixed(4), 0.0027, '1 day as years'); - assert.equal(moment.duration(1, 'day').asMonths().toFixed(3), 0.033, '1 day as months'); - assert.equal(moment.duration(1, 'day').asWeeks().toFixed(3), 0.143, '1 day as weeks'); - assert.equal(moment.duration(1, 'day').asDays(), 1, '1 day as days'); - assert.equal(moment.duration(1, 'day').asHours(), 24, '1 day as hours'); - assert.equal(moment.duration(1, 'day').asMinutes(), 1440, '1 day as minutes'); - assert.equal(moment.duration(1, 'day').asSeconds(), 86400, '1 day as seconds'); - assert.equal(moment.duration(1, 'day').asMilliseconds(), 86400000, '1 day as milliseconds'); - - // hours - assert.equal(moment.duration(1, 'hour').asYears().toFixed(6), 0.000114, '1 hour as years'); - assert.equal(moment.duration(1, 'hour').asMonths().toFixed(5), 0.00137, '1 hour as months'); - assert.equal(moment.duration(1, 'hour').asWeeks().toFixed(5), 0.00595, '1 hour as weeks'); - assert.equal(moment.duration(1, 'hour').asDays().toFixed(4), 0.0417, '1 hour as days'); - assert.equal(moment.duration(1, 'hour').asHours(), 1, '1 hour as hours'); - assert.equal(moment.duration(1, 'hour').asMinutes(), 60, '1 hour as minutes'); - assert.equal(moment.duration(1, 'hour').asSeconds(), 3600, '1 hour as seconds'); - assert.equal(moment.duration(1, 'hour').asMilliseconds(), 3600000, '1 hour as milliseconds'); - - // minutes - assert.equal(moment.duration(1, 'minute').asYears().toFixed(8), 0.00000190, '1 minute as years'); - assert.equal(moment.duration(1, 'minute').asMonths().toFixed(7), 0.0000228, '1 minute as months'); - assert.equal(moment.duration(1, 'minute').asWeeks().toFixed(7), 0.0000992, '1 minute as weeks'); - assert.equal(moment.duration(1, 'minute').asDays().toFixed(6), 0.000694, '1 minute as days'); - assert.equal(moment.duration(1, 'minute').asHours().toFixed(4), 0.0167, '1 minute as hours'); - assert.equal(moment.duration(1, 'minute').asMinutes(), 1, '1 minute as minutes'); - assert.equal(moment.duration(1, 'minute').asSeconds(), 60, '1 minute as seconds'); - assert.equal(moment.duration(1, 'minute').asMilliseconds(), 60000, '1 minute as milliseconds'); - - // seconds - assert.equal(moment.duration(1, 'second').asYears().toFixed(10), 0.0000000317, '1 second as years'); - assert.equal(moment.duration(1, 'second').asMonths().toFixed(9), 0.000000380, '1 second as months'); - assert.equal(moment.duration(1, 'second').asWeeks().toFixed(8), 0.00000165, '1 second as weeks'); - assert.equal(moment.duration(1, 'second').asDays().toFixed(7), 0.0000116, '1 second as days'); - assert.equal(moment.duration(1, 'second').asHours().toFixed(6), 0.000278, '1 second as hours'); - assert.equal(moment.duration(1, 'second').asMinutes().toFixed(4), 0.0167, '1 second as minutes'); - assert.equal(moment.duration(1, 'second').asSeconds(), 1, '1 second as seconds'); - assert.equal(moment.duration(1, 'second').asMilliseconds(), 1000, '1 second as milliseconds'); - - // milliseconds - assert.equal(moment.duration(1, 'millisecond').asYears().toFixed(13), 0.0000000000317, '1 millisecond as years'); - assert.equal(moment.duration(1, 'millisecond').asMonths().toFixed(12), 0.000000000380, '1 millisecond as months'); - assert.equal(moment.duration(1, 'millisecond').asWeeks().toFixed(11), 0.00000000165, '1 millisecond as weeks'); - assert.equal(moment.duration(1, 'millisecond').asDays().toFixed(10), 0.0000000116, '1 millisecond as days'); - assert.equal(moment.duration(1, 'millisecond').asHours().toFixed(9), 0.000000278, '1 millisecond as hours'); - assert.equal(moment.duration(1, 'millisecond').asMinutes().toFixed(7), 0.0000167, '1 millisecond as minutes'); - assert.equal(moment.duration(1, 'millisecond').asSeconds(), 0.001, '1 millisecond as seconds'); - assert.equal(moment.duration(1, 'millisecond').asMilliseconds(), 1, '1 millisecond as milliseconds'); - }); - - test('as getters for small units', function (assert) { - var dS = moment.duration(1, 'milliseconds'), - ds = moment.duration(3, 'seconds'), - dm = moment.duration(13, 'minutes'); - - // Tests for issue #1867. - // Floating point errors for small duration units were introduced in version 2.8.0. - assert.equal(dS.as('milliseconds'), 1, 'as("milliseconds")'); - assert.equal(dS.asMilliseconds(), 1, 'asMilliseconds()'); - assert.equal(ds.as('seconds'), 3, 'as("seconds")'); - assert.equal(ds.asSeconds(), 3, 'asSeconds()'); - assert.equal(dm.as('minutes'), 13, 'as("minutes")'); - assert.equal(dm.asMinutes(), 13, 'asMinutes()'); - }); - - test('isDuration', function (assert) { - assert.ok(moment.isDuration(moment.duration(12345678)), 'correctly says true'); - assert.ok(!moment.isDuration(moment()), 'moment object is not a duration'); - assert.ok(!moment.isDuration({milliseconds: 1}), 'plain object is not a duration'); - }); - - test('add', function (assert) { - var d = moment.duration({months: 4, weeks: 3, days: 2}); - // for some reason, d._data._months does not get updated; use d._months instead. - assert.equal(d.add(1, 'month')._months, 5, 'Add months'); - assert.equal(d.add(5, 'days')._days, 28, 'Add days'); - assert.equal(d.add(10000)._milliseconds, 10000, 'Add milliseconds'); - assert.equal(d.add({h: 23, m: 59})._milliseconds, 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 10000, 'Add hour:minute'); - }); - - test('add and bubble', function (assert) { - var d; - - assert.equal(moment.duration(1, 'second').add(1000, 'milliseconds').seconds(), 2, 'Adding milliseconds should bubble up to seconds'); - assert.equal(moment.duration(1, 'minute').add(60, 'second').minutes(), 2, 'Adding seconds should bubble up to minutes'); - assert.equal(moment.duration(1, 'hour').add(60, 'minutes').hours(), 2, 'Adding minutes should bubble up to hours'); - assert.equal(moment.duration(1, 'day').add(24, 'hours').days(), 2, 'Adding hours should bubble up to days'); - - d = moment.duration(-1, 'day').add(1, 'hour'); - assert.equal(d.hours(), -23, '-1 day + 1 hour == -23 hour (component)'); - assert.equal(d.asHours(), -23, '-1 day + 1 hour == -23 hours'); - - d = moment.duration(-1, 'year').add(1, 'day'); - assert.equal(d.days(), -30, '- 1 year + 1 day == -30 days (component)'); - assert.equal(d.months(), -11, '- 1 year + 1 day == -11 months (component)'); - assert.equal(d.years(), 0, '- 1 year + 1 day == 0 years (component)'); - assert.equal(d.asDays(), -364, '- 1 year + 1 day == -364 days'); - - d = moment.duration(-1, 'year').add(1, 'hour'); - assert.equal(d.hours(), -23, '- 1 year + 1 hour == -23 hours (component)'); - assert.equal(d.days(), -30, '- 1 year + 1 hour == -30 days (component)'); - assert.equal(d.months(), -11, '- 1 year + 1 hour == -11 months (component)'); - assert.equal(d.years(), 0, '- 1 year + 1 hour == 0 years (component)'); - }); - - test('subtract and bubble', function (assert) { - var d; - - assert.equal(moment.duration(2, 'second').subtract(1000, 'milliseconds').seconds(), 1, 'Subtracting milliseconds should bubble up to seconds'); - assert.equal(moment.duration(2, 'minute').subtract(60, 'second').minutes(), 1, 'Subtracting seconds should bubble up to minutes'); - assert.equal(moment.duration(2, 'hour').subtract(60, 'minutes').hours(), 1, 'Subtracting minutes should bubble up to hours'); - assert.equal(moment.duration(2, 'day').subtract(24, 'hours').days(), 1, 'Subtracting hours should bubble up to days'); - - d = moment.duration(1, 'day').subtract(1, 'hour'); - assert.equal(d.hours(), 23, '1 day - 1 hour == 23 hour (component)'); - assert.equal(d.asHours(), 23, '1 day - 1 hour == 23 hours'); - - d = moment.duration(1, 'year').subtract(1, 'day'); - assert.equal(d.days(), 30, '1 year - 1 day == 30 days (component)'); - assert.equal(d.months(), 11, '1 year - 1 day == 11 months (component)'); - assert.equal(d.years(), 0, '1 year - 1 day == 0 years (component)'); - assert.equal(d.asDays(), 364, '1 year - 1 day == 364 days'); - - d = moment.duration(1, 'year').subtract(1, 'hour'); - assert.equal(d.hours(), 23, '1 year - 1 hour == 23 hours (component)'); - assert.equal(d.days(), 30, '1 year - 1 hour == 30 days (component)'); - assert.equal(d.months(), 11, '1 year - 1 hour == 11 months (component)'); - assert.equal(d.years(), 0, '1 year - 1 hour == 0 years (component)'); - }); - - test('subtract', function (assert) { - var d = moment.duration({months: 2, weeks: 2, days: 0, hours: 5}); - // for some reason, d._data._months does not get updated; use d._months instead. - assert.equal(d.subtract(1, 'months')._months, 1, 'Subtract months'); - assert.equal(d.subtract(14, 'days')._days, 0, 'Subtract days'); - assert.equal(d.subtract(10000)._milliseconds, 5 * 60 * 60 * 1000 - 10000, 'Subtract milliseconds'); - assert.equal(d.subtract({h: 1, m: 59})._milliseconds, 3 * 60 * 60 * 1000 + 1 * 60 * 1000 - 10000, 'Subtract hour:minute'); - }); - - test('JSON.stringify duration', function (assert) { - var d = moment.duration(1024, 'h'); - - assert.equal(JSON.stringify(d), '"' + d.toISOString() + '"', 'JSON.stringify on duration should return ISO string'); - }); - - test('duration plugins', function (assert) { - var durationObject = moment.duration(); - moment.duration.fn.foo = function (arg) { - assert.equal(this, durationObject); - assert.equal(arg, 5); - }; - durationObject.foo(5); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('duration from moments'); - - test('pure year diff', function (assert) { - var m1 = moment('2012-01-01T00:00:00.000Z'), - m2 = moment('2013-01-01T00:00:00.000Z'); - - assert.equal(moment.duration({from: m1, to: m2}).as('years'), 1, 'year moment difference'); - assert.equal(moment.duration({from: m2, to: m1}).as('years'), -1, 'negative year moment difference'); - }); - - test('month and day diff', function (assert) { - var m1 = moment('2012-01-15T00:00:00.000Z'), - m2 = moment('2012-02-17T00:00:00.000Z'), - d = moment.duration({from: m1, to: m2}); - - assert.equal(d.get('days'), 2); - assert.equal(d.get('months'), 1); - }); - - test('day diff, separate months', function (assert) { - var m1 = moment('2012-01-15T00:00:00.000Z'), - m2 = moment('2012-02-13T00:00:00.000Z'), - d = moment.duration({from: m1, to: m2}); - - assert.equal(d.as('days'), 29); - }); - - test('hour diff', function (assert) { - var m1 = moment('2012-01-15T17:00:00.000Z'), - m2 = moment('2012-01-16T03:00:00.000Z'), - d = moment.duration({from: m1, to: m2}); - - assert.equal(d.as('hours'), 10); - }); - - test('minute diff', function (assert) { - var m1 = moment('2012-01-15T17:45:00.000Z'), - m2 = moment('2012-01-16T03:15:00.000Z'), - d = moment.duration({from: m1, to: m2}); - - assert.equal(d.as('hours'), 9.5); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('format'); - - test('format YY', function (assert) { - var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); - assert.equal(b.format('YY'), '09', 'YY ---> 09'); - }); - - test('format escape brackets', function (assert) { - moment.locale('en'); - - var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); - assert.equal(b.format('[day]'), 'day', 'Single bracket'); - assert.equal(b.format('[day] YY [YY]'), 'day 09 YY', 'Double bracket'); - assert.equal(b.format('[YY'), '[09', 'Un-ended bracket'); - assert.equal(b.format('[[YY]]'), '[YY]', 'Double nested brackets'); - assert.equal(b.format('[[]'), '[', 'Escape open bracket'); - assert.equal(b.format('[Last]'), 'Last', 'localized tokens'); - assert.equal(b.format('[L] L'), 'L 02/14/2009', 'localized tokens with escaped localized tokens'); - assert.equal(b.format('[L LL LLL LLLL aLa]'), 'L LL LLL LLLL aLa', 'localized tokens with escaped localized tokens'); - assert.equal(b.format('[LLL] LLL'), 'LLL February 14, 2009 3:25 PM', 'localized tokens with escaped localized tokens (recursion)'); - assert.equal(b.format('YYYY[\n]DD[\n]'), '2009\n14\n', 'Newlines'); - }); - - test('handle negative years', function (assert) { - moment.locale('en'); - assert.equal(moment.utc().year(-1).format('YY'), '-01', 'YY with negative year'); - assert.equal(moment.utc().year(-1).format('YYYY'), '-0001', 'YYYY with negative year'); - assert.equal(moment.utc().year(-12).format('YY'), '-12', 'YY with negative year'); - assert.equal(moment.utc().year(-12).format('YYYY'), '-0012', 'YYYY with negative year'); - assert.equal(moment.utc().year(-123).format('YY'), '-23', 'YY with negative year'); - assert.equal(moment.utc().year(-123).format('YYYY'), '-0123', 'YYYY with negative year'); - assert.equal(moment.utc().year(-1234).format('YY'), '-34', 'YY with negative year'); - assert.equal(moment.utc().year(-1234).format('YYYY'), '-1234', 'YYYY with negative year'); - assert.equal(moment.utc().year(-12345).format('YY'), '-45', 'YY with negative year'); - assert.equal(moment.utc().year(-12345).format('YYYY'), '-12345', 'YYYY with negative year'); - }); - - test('format milliseconds', function (assert) { - var b = moment(new Date(2009, 1, 14, 15, 25, 50, 123)); - assert.equal(b.format('S'), '1', 'Deciseconds'); - assert.equal(b.format('SS'), '12', 'Centiseconds'); - assert.equal(b.format('SSS'), '123', 'Milliseconds'); - b.milliseconds(789); - assert.equal(b.format('S'), '7', 'Deciseconds'); - assert.equal(b.format('SS'), '78', 'Centiseconds'); - assert.equal(b.format('SSS'), '789', 'Milliseconds'); - }); - - test('format timezone', function (assert) { - var b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)); - assert.ok(b.format('Z').match(/^[\+\-]\d\d:\d\d$/), b.format('Z') + ' should be something like \'+07:30\''); - assert.ok(b.format('ZZ').match(/^[\+\-]\d{4}$/), b.format('ZZ') + ' should be something like \'+0700\''); - }); - - test('format multiple with utc offset', function (assert) { - var b = moment('2012-10-08 -1200', ['YYYY-MM-DD HH:mm ZZ', 'YYYY-MM-DD ZZ', 'YYYY-MM-DD']); - assert.equal(b.format('YYYY-MM'), '2012-10', 'Parsing multiple formats should not crash with different sized formats'); - }); - - test('isDST', function (assert) { - var janOffset = new Date(2011, 0, 1).getTimezoneOffset(), - julOffset = new Date(2011, 6, 1).getTimezoneOffset(), - janIsDst = janOffset < julOffset, - julIsDst = julOffset < janOffset, - jan1 = moment([2011]), - jul1 = moment([2011, 6]); - - if (janIsDst && julIsDst) { - assert.ok(0, 'January and July cannot both be in DST'); - assert.ok(0, 'January and July cannot both be in DST'); - } else if (janIsDst) { - assert.ok(jan1.isDST(), 'January 1 is DST'); - assert.ok(!jul1.isDST(), 'July 1 is not DST'); - } else if (julIsDst) { - assert.ok(!jan1.isDST(), 'January 1 is not DST'); - assert.ok(jul1.isDST(), 'July 1 is DST'); - } else { - assert.ok(!jan1.isDST(), 'January 1 is not DST'); - assert.ok(!jul1.isDST(), 'July 1 is not DST'); - } - }); - - test('unix timestamp', function (assert) { - var m = moment('1234567890.123', 'X'); - assert.equal(m.format('X'), '1234567890', 'unix timestamp without milliseconds'); - assert.equal(m.format('X.S'), '1234567890.1', 'unix timestamp with deciseconds'); - assert.equal(m.format('X.SS'), '1234567890.12', 'unix timestamp with centiseconds'); - assert.equal(m.format('X.SSS'), '1234567890.123', 'unix timestamp with milliseconds'); - - m = moment(1234567890.123, 'X'); - assert.equal(m.format('X'), '1234567890', 'unix timestamp as integer'); - }); - - test('unix offset milliseconds', function (assert) { - var m = moment('1234567890123', 'x'); - assert.equal(m.format('x'), '1234567890123', 'unix offset in milliseconds'); - - m = moment(1234567890123, 'x'); - assert.equal(m.format('x'), '1234567890123', 'unix offset in milliseconds as integer'); - }); - - test('utcOffset sanity checks', function (assert) { - assert.equal(moment().utcOffset() % 15, 0, - 'utc offset should be a multiple of 15 (was ' + moment().utcOffset() + ')'); - - assert.equal(moment().utcOffset(), -(new Date()).getTimezoneOffset(), - 'utcOffset should return the opposite of getTimezoneOffset'); - }); - - test('default format', function (assert) { - var isoRegex = /\d{4}.\d\d.\d\dT\d\d.\d\d.\d\d[\+\-]\d\d:\d\d/; - assert.ok(isoRegex.exec(moment().format()), 'default format (' + moment().format() + ') should match ISO'); - }); - - test('toJSON', function (assert) { - var supportsJson = typeof JSON !== 'undefined' && JSON.stringify && JSON.stringify.call, - date = moment('2012-10-09T21:30:40.678+0100'); - - assert.equal(date.toJSON(), '2012-10-09T20:30:40.678Z', 'should output ISO8601 on moment.fn.toJSON'); - - if (supportsJson) { - assert.equal(JSON.stringify({ - date : date - }), '{"date":"2012-10-09T20:30:40.678Z"}', 'should output ISO8601 on JSON.stringify'); - } - }); - - test('toISOString', function (assert) { - var date = moment.utc('2012-10-09T20:30:40.678'); - - assert.equal(date.toISOString(), '2012-10-09T20:30:40.678Z', 'should output ISO8601 on moment.fn.toISOString'); - - // big years - date = moment.utc('+020123-10-09T20:30:40.678'); - assert.equal(date.toISOString(), '+020123-10-09T20:30:40.678Z', 'ISO8601 format on big positive year'); - // negative years - date = moment.utc('-000001-10-09T20:30:40.678'); - assert.equal(date.toISOString(), '-000001-10-09T20:30:40.678Z', 'ISO8601 format on negative year'); - // big negative years - date = moment.utc('-020123-10-09T20:30:40.678'); - assert.equal(date.toISOString(), '-020123-10-09T20:30:40.678Z', 'ISO8601 format on big negative year'); - }); - - test('long years', function (assert) { - assert.equal(moment.utc().year(2).format('YYYYYY'), '+000002', 'small year with YYYYYY'); - assert.equal(moment.utc().year(2012).format('YYYYYY'), '+002012', 'regular year with YYYYYY'); - assert.equal(moment.utc().year(20123).format('YYYYYY'), '+020123', 'big year with YYYYYY'); - - assert.equal(moment.utc().year(-1).format('YYYYYY'), '-000001', 'small negative year with YYYYYY'); - assert.equal(moment.utc().year(-2012).format('YYYYYY'), '-002012', 'negative year with YYYYYY'); - assert.equal(moment.utc().year(-20123).format('YYYYYY'), '-020123', 'big negative year with YYYYYY'); - }); - - test('iso week formats', function (assert) { - // http://en.wikipedia.org/wiki/ISO_week_date - var cases = { - '2005-01-02': '2004-53', - '2005-12-31': '2005-52', - '2007-01-01': '2007-01', - '2007-12-30': '2007-52', - '2007-12-31': '2008-01', - '2008-01-01': '2008-01', - '2008-12-28': '2008-52', - '2008-12-29': '2009-01', - '2008-12-30': '2009-01', - '2008-12-31': '2009-01', - '2009-01-01': '2009-01', - '2009-12-31': '2009-53', - '2010-01-01': '2009-53', - '2010-01-02': '2009-53', - '2010-01-03': '2009-53', - '404-12-31': '0404-53', - '405-12-31': '0405-52' - }, i, isoWeek, formatted2, formatted1; - - for (i in cases) { - isoWeek = cases[i].split('-').pop(); - formatted2 = moment(i, 'YYYY-MM-DD').format('WW'); - assert.equal(isoWeek, formatted2, i + ': WW should be ' + isoWeek + ', but ' + formatted2); - isoWeek = isoWeek.replace(/^0+/, ''); - formatted1 = moment(i, 'YYYY-MM-DD').format('W'); - assert.equal(isoWeek, formatted1, i + ': W should be ' + isoWeek + ', but ' + formatted1); - } - }); - - test('iso week year formats', function (assert) { - // http://en.wikipedia.org/wiki/ISO_week_date - var cases = { - '2005-01-02': '2004-53', - '2005-12-31': '2005-52', - '2007-01-01': '2007-01', - '2007-12-30': '2007-52', - '2007-12-31': '2008-01', - '2008-01-01': '2008-01', - '2008-12-28': '2008-52', - '2008-12-29': '2009-01', - '2008-12-30': '2009-01', - '2008-12-31': '2009-01', - '2009-01-01': '2009-01', - '2009-12-31': '2009-53', - '2010-01-01': '2009-53', - '2010-01-02': '2009-53', - '2010-01-03': '2009-53', - '404-12-31': '0404-53', - '405-12-31': '0405-52' - }, i, isoWeekYear, formatted5, formatted4, formatted2; - - for (i in cases) { - isoWeekYear = cases[i].split('-')[0]; - formatted5 = moment(i, 'YYYY-MM-DD').format('GGGGG'); - assert.equal('0' + isoWeekYear, formatted5, i + ': GGGGG should be ' + isoWeekYear + ', but ' + formatted5); - formatted4 = moment(i, 'YYYY-MM-DD').format('GGGG'); - assert.equal(isoWeekYear, formatted4, i + ': GGGG should be ' + isoWeekYear + ', but ' + formatted4); - formatted2 = moment(i, 'YYYY-MM-DD').format('GG'); - assert.equal(isoWeekYear.slice(2, 4), formatted2, i + ': GG should be ' + isoWeekYear + ', but ' + formatted2); - } - }); - - test('week year formats', function (assert) { - // http://en.wikipedia.org/wiki/ISO_week_date - var cases = { - '2005-01-02': '2004-53', - '2005-12-31': '2005-52', - '2007-01-01': '2007-01', - '2007-12-30': '2007-52', - '2007-12-31': '2008-01', - '2008-01-01': '2008-01', - '2008-12-28': '2008-52', - '2008-12-29': '2009-01', - '2008-12-30': '2009-01', - '2008-12-31': '2009-01', - '2009-01-01': '2009-01', - '2009-12-31': '2009-53', - '2010-01-01': '2009-53', - '2010-01-02': '2009-53', - '2010-01-03': '2009-53', - '404-12-31': '0404-53', - '405-12-31': '0405-52' - }, i, isoWeekYear, formatted5, formatted4, formatted2; - - moment.locale('dow:1,doy:4', {week: {dow: 1, doy: 4}}); - - for (i in cases) { - isoWeekYear = cases[i].split('-')[0]; - formatted5 = moment(i, 'YYYY-MM-DD').format('ggggg'); - assert.equal('0' + isoWeekYear, formatted5, i + ': ggggg should be ' + isoWeekYear + ', but ' + formatted5); - formatted4 = moment(i, 'YYYY-MM-DD').format('gggg'); - assert.equal(isoWeekYear, formatted4, i + ': gggg should be ' + isoWeekYear + ', but ' + formatted4); - formatted2 = moment(i, 'YYYY-MM-DD').format('gg'); - assert.equal(isoWeekYear.slice(2, 4), formatted2, i + ': gg should be ' + isoWeekYear + ', but ' + formatted2); - } - }); - - test('iso weekday formats', function (assert) { - assert.equal(moment([1985, 1, 4]).format('E'), '1', 'Feb 4 1985 is Monday -- 1st day'); - assert.equal(moment([2029, 8, 18]).format('E'), '2', 'Sep 18 2029 is Tuesday -- 2nd day'); - assert.equal(moment([2013, 3, 24]).format('E'), '3', 'Apr 24 2013 is Wednesday -- 3rd day'); - assert.equal(moment([2015, 2, 5]).format('E'), '4', 'Mar 5 2015 is Thursday -- 4th day'); - assert.equal(moment([1970, 0, 2]).format('E'), '5', 'Jan 2 1970 is Friday -- 5th day'); - assert.equal(moment([2001, 4, 12]).format('E'), '6', 'May 12 2001 is Saturday -- 6th day'); - assert.equal(moment([2000, 0, 2]).format('E'), '7', 'Jan 2 2000 is Sunday -- 7th day'); - }); - - test('weekday formats', function (assert) { - moment.locale('dow: 3,doy: 5', {week: {dow: 3, doy: 5}}); - assert.equal(moment([1985, 1, 6]).format('e'), '0', 'Feb 6 1985 is Wednesday -- 0th day'); - assert.equal(moment([2029, 8, 20]).format('e'), '1', 'Sep 20 2029 is Thursday -- 1st day'); - assert.equal(moment([2013, 3, 26]).format('e'), '2', 'Apr 26 2013 is Friday -- 2nd day'); - assert.equal(moment([2015, 2, 7]).format('e'), '3', 'Mar 7 2015 is Saturday -- 3nd day'); - assert.equal(moment([1970, 0, 4]).format('e'), '4', 'Jan 4 1970 is Sunday -- 4th day'); - assert.equal(moment([2001, 4, 14]).format('e'), '5', 'May 14 2001 is Monday -- 5th day'); - assert.equal(moment([2000, 0, 4]).format('e'), '6', 'Jan 4 2000 is Tuesday -- 6th day'); - }); - - test('toString is just human readable format', function (assert) { - var b = moment(new Date(2009, 1, 5, 15, 25, 50, 125)); - assert.equal(b.toString(), b.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ')); - }); - - test('toJSON skips postformat', function (assert) { - moment.locale('postformat', { - postformat: function (s) { - s.replace(/./g, 'X'); - } - }); - assert.equal(moment.utc([2000, 0, 1]).toJSON(), '2000-01-01T00:00:00.000Z', 'toJSON doesn\'t postformat'); - moment.locale('postformat', null); - }); - - test('calendar day timezone', function (assert) { - moment.locale('en'); - var zones = [60, -60, 90, -90, 360, -360, 720, -720], - b = moment().utc().startOf('day').subtract({m : 1}), - c = moment().local().startOf('day').subtract({m : 1}), - d = moment().local().startOf('day').subtract({d : 2}), - i, z, a; - - for (i = 0; i < zones.length; ++i) { - z = zones[i]; - a = moment().utcOffset(z).startOf('day').subtract({m: 1}); - assert.equal(moment(a).utcOffset(z).calendar(), 'Yesterday at 11:59 PM', - 'Yesterday at 11:59 PM, not Today, or the wrong time, tz = ' + z); - } - - assert.equal(moment(b).utc().calendar(), 'Yesterday at 11:59 PM', 'Yesterday at 11:59 PM, not Today, or the wrong time'); - assert.equal(moment(c).local().calendar(), 'Yesterday at 11:59 PM', 'Yesterday at 11:59 PM, not Today, or the wrong time'); - assert.equal(moment(c).local().calendar(d), 'Tomorrow at 11:59 PM', 'Tomorrow at 11:59 PM, not Yesterday, or the wrong time'); - }); - - test('calendar with custom formats', function (assert) { - assert.equal(moment().calendar(null, {sameDay: '[Today]'}), 'Today', 'Today'); - assert.equal(moment().add(1, 'days').calendar(null, {nextDay: '[Tomorrow]'}), 'Tomorrow', 'Tomorrow'); - assert.equal(moment([1985, 1, 4]).calendar(null, {sameElse: 'YYYY-MM-DD'}), '1985-02-04', 'Else'); - }); - - test('invalid', function (assert) { - assert.equal(moment.invalid().format(), 'Invalid date'); - assert.equal(moment.invalid().format('YYYY-MM-DD'), 'Invalid date'); - }); - - test('quarter formats', function (assert) { - assert.equal(moment([1985, 1, 4]).format('Q'), '1', 'Feb 4 1985 is Q1'); - assert.equal(moment([2029, 8, 18]).format('Q'), '3', 'Sep 18 2029 is Q3'); - assert.equal(moment([2013, 3, 24]).format('Q'), '2', 'Apr 24 2013 is Q2'); - assert.equal(moment([2015, 2, 5]).format('Q'), '1', 'Mar 5 2015 is Q1'); - assert.equal(moment([1970, 0, 2]).format('Q'), '1', 'Jan 2 1970 is Q1'); - assert.equal(moment([2001, 11, 12]).format('Q'), '4', 'Dec 12 2001 is Q4'); - assert.equal(moment([2000, 0, 2]).format('[Q]Q-YYYY'), 'Q1-2000', 'Jan 2 2000 is Q1'); - }); - - test('full expanded format is returned from abbreviated formats', function (assert) { - var locales = ''; - - locales += 'af ar-ma ar-sa ar-tn ar az be bg bn bo br bs'; - locales += 'ca cs cv cy da de-at de el en-au en-ca en-gb'; - locales += 'en eo es et eu fa fi fo fr-ca fr fy gl he hi'; - locales += 'hr hu hy-am id is it ja jv ka km ko lb lt lv'; - locales += 'me mk ml mr ms-my my nb ne nl nn pl pt-rb pt'; - locales += 'ro ru si sk sl sq sr-cyrl sr sv ta th tl-ph'; - locales += 'tr tzm-latn tzm uk uz vi zh-cn zh-tw'; - - locales.split(' ').forEach(function (locale) { - var data, tokens; - data = moment().locale(locale).localeData()._longDateFormat; - tokens = Object.keys(data); - tokens.forEach(function (token) { - // Check each format string to make sure it does not contain any - // tokens that need to be expanded. - tokens.forEach(function (i) { - // strip escaped sequences - var format = data[i].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(token), 'locale ' + locale + ' contains ' + token + ' in ' + i); - }); - }); - }); - }); - - test('milliseconds', function (assert) { - var m = moment('123', 'SSS'); - - assert.equal(m.format('S'), '1'); - assert.equal(m.format('SS'), '12'); - assert.equal(m.format('SSS'), '123'); - assert.equal(m.format('SSSS'), '1230'); - assert.equal(m.format('SSSSS'), '12300'); - assert.equal(m.format('SSSSSS'), '123000'); - assert.equal(m.format('SSSSSSS'), '1230000'); - assert.equal(m.format('SSSSSSSS'), '12300000'); - assert.equal(m.format('SSSSSSSSS'), '123000000'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('from_to'); - - test('from', function (assert) { - var start = moment(); - moment.locale('en'); - assert.equal(start.from(start.clone().add(5, 'seconds')), 'a few seconds ago', '5 seconds = a few seconds ago'); - assert.equal(start.from(start.clone().add(1, 'minute')), 'a minute ago', '1 minute = a minute ago'); - assert.equal(start.from(start.clone().add(5, 'minutes')), '5 minutes ago', '5 minutes = 5 minutes ago'); - - assert.equal(start.from(start.clone().subtract(5, 'seconds')), 'in a few seconds', '5 seconds = in a few seconds'); - assert.equal(start.from(start.clone().subtract(1, 'minute')), 'in a minute', '1 minute = in a minute'); - assert.equal(start.from(start.clone().subtract(5, 'minutes')), 'in 5 minutes', '5 minutes = in 5 minutes'); - }); - - test('from with absolute duration', function (assert) { - var start = moment(); - moment.locale('en'); - assert.equal(start.from(start.clone().add(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); - assert.equal(start.from(start.clone().add(1, 'minute'), true), 'a minute', '1 minute = a minute'); - assert.equal(start.from(start.clone().add(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); - - assert.equal(start.from(start.clone().subtract(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); - assert.equal(start.from(start.clone().subtract(1, 'minute'), true), 'a minute', '1 minute = a minute'); - assert.equal(start.from(start.clone().subtract(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); - }); - - test('to', function (assert) { - var start = moment(); - moment.locale('en'); - assert.equal(start.to(start.clone().subtract(5, 'seconds')), 'a few seconds ago', '5 seconds = a few seconds ago'); - assert.equal(start.to(start.clone().subtract(1, 'minute')), 'a minute ago', '1 minute = a minute ago'); - assert.equal(start.to(start.clone().subtract(5, 'minutes')), '5 minutes ago', '5 minutes = 5 minutes ago'); - - assert.equal(start.to(start.clone().add(5, 'seconds')), 'in a few seconds', '5 seconds = in a few seconds'); - assert.equal(start.to(start.clone().add(1, 'minute')), 'in a minute', '1 minute = in a minute'); - assert.equal(start.to(start.clone().add(5, 'minutes')), 'in 5 minutes', '5 minutes = in 5 minutes'); - }); - - test('to with absolute duration', function (assert) { - var start = moment(); - moment.locale('en'); - assert.equal(start.to(start.clone().add(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); - assert.equal(start.to(start.clone().add(1, 'minute'), true), 'a minute', '1 minute = a minute'); - assert.equal(start.to(start.clone().add(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); - - assert.equal(start.to(start.clone().subtract(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); - assert.equal(start.to(start.clone().subtract(1, 'minute'), true), 'a minute', '1 minute = a minute'); - assert.equal(start.to(start.clone().subtract(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('getters and setters'); - - test('getters', function (assert) { - var a = moment([2011, 9, 12, 6, 7, 8, 9]); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hours(), 6, 'hour'); - assert.equal(a.minutes(), 7, 'minute'); - assert.equal(a.seconds(), 8, 'second'); - assert.equal(a.milliseconds(), 9, 'milliseconds'); - }); - - test('getters programmatic', function (assert) { - var a = moment([2011, 9, 12, 6, 7, 8, 9]); - assert.equal(a.get('year'), 2011, 'year'); - assert.equal(a.get('month'), 9, 'month'); - assert.equal(a.get('date'), 12, 'date'); - assert.equal(a.get('day'), 3, 'day'); - assert.equal(a.get('hour'), 6, 'hour'); - assert.equal(a.get('minute'), 7, 'minute'); - assert.equal(a.get('second'), 8, 'second'); - assert.equal(a.get('milliseconds'), 9, 'milliseconds'); - - //actual getters tested elsewhere - assert.equal(a.get('weekday'), a.weekday(), 'weekday'); - assert.equal(a.get('isoWeekday'), a.isoWeekday(), 'isoWeekday'); - assert.equal(a.get('week'), a.week(), 'week'); - assert.equal(a.get('isoWeek'), a.isoWeek(), 'isoWeek'); - assert.equal(a.get('dayOfYear'), a.dayOfYear(), 'dayOfYear'); - }); - - test('setters plural', function (assert) { - var a = moment(); - a.years(2011); - a.months(9); - a.dates(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(9); - assert.equal(a.years(), 2011, 'years'); - assert.equal(a.months(), 9, 'months'); - assert.equal(a.dates(), 12, 'dates'); - assert.equal(a.days(), 3, 'days'); - assert.equal(a.hours(), 6, 'hours'); - assert.equal(a.minutes(), 7, 'minutes'); - assert.equal(a.seconds(), 8, 'seconds'); - assert.equal(a.milliseconds(), 9, 'milliseconds'); - }); - - test('setters singular', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hour(6); - a.minute(7); - a.second(8); - a.millisecond(9); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hour(), 6, 'hour'); - assert.equal(a.minute(), 7, 'minute'); - assert.equal(a.second(), 8, 'second'); - assert.equal(a.millisecond(), 9, 'milliseconds'); - }); - - test('setters', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(9); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hours(), 6, 'hour'); - assert.equal(a.minutes(), 7, 'minute'); - assert.equal(a.seconds(), 8, 'second'); - assert.equal(a.milliseconds(), 9, 'milliseconds'); - - // Test month() behavior. See https://github.com/timrwood/moment/pull/822 - a = moment('20130531', 'YYYYMMDD'); - a.month(3); - assert.equal(a.month(), 3, 'month edge case'); - }); - - test('setter programmatic', function (assert) { - var a = moment(); - a.set('year', 2011); - a.set('month', 9); - a.set('date', 12); - a.set('hours', 6); - a.set('minutes', 7); - a.set('seconds', 8); - a.set('milliseconds', 9); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hours(), 6, 'hour'); - assert.equal(a.minutes(), 7, 'minute'); - assert.equal(a.seconds(), 8, 'second'); - assert.equal(a.milliseconds(), 9, 'milliseconds'); - - // Test month() behavior. See https://github.com/timrwood/moment/pull/822 - a = moment('20130531', 'YYYYMMDD'); - a.month(3); - assert.equal(a.month(), 3, 'month edge case'); - }); - - // Disable this, until we weekYear setter is fixed. - // https://github.com/moment/moment/issues/1379 - // test('setters programatic with weeks', function (assert) { - // var a = moment(); - // a.set('weekYear', 2001); - // a.set('week', 49); - // a.set('day', 4); - // assert.equals(a.weekYear(), 2001); - // assert.equals(a.week(), 49); - // assert.equals(a.day(), 4); - - // a.set('weekday', 1); - // assert.equals(a.weekday(), 1); - - // assert.done(); - //}, - - // I think this suffers from the same issue as the non-iso version. - // test('setters programatic with weeks ISO', function (assert) { - // var a = moment(); - // a.set('isoWeekYear', 2001); - // a.set('isoWeek', 49); - // a.set('isoWeekday', 4); - - // assert.equals(a.weekYear(), 2001); - // assert.equals(a.week(), 49); - // assert.equals(a.day(), 4); - - // assert.done(); - //}, - - test('setters strings', function (assert) { - var a = moment([2012]).locale('en'); - assert.equal(a.clone().day(0).day('Wednesday').day(), 3, 'day full name'); - assert.equal(a.clone().day(0).day('Wed').day(), 3, 'day short name'); - assert.equal(a.clone().day(0).day('We').day(), 3, 'day minimal name'); - assert.equal(a.clone().day(0).day('invalid').day(), 0, 'invalid day name'); - assert.equal(a.clone().month(0).month('April').month(), 3, 'month full name'); - assert.equal(a.clone().month(0).month('Apr').month(), 3, 'month short name'); - assert.equal(a.clone().month(0).month('invalid').month(), 0, 'invalid month name'); - }); - - test('setters - falsey values', function (assert) { - var a = moment(); - // ensure minutes wasn't coincidentally 0 already - a.minutes(1); - a.minutes(0); - assert.equal(a.minutes(), 0, 'falsey value'); - }); - - test('chaining setters', function (assert) { - var a = moment(); - a.year(2011) - .month(9) - .date(12) - .hours(6) - .minutes(7) - .seconds(8); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hours(), 6, 'hour'); - assert.equal(a.minutes(), 7, 'minute'); - assert.equal(a.seconds(), 8, 'second'); - }); - - test('setter with multiple unit values', function (assert) { - var a = moment(); - a.set({ - year: 2011, - month: 9, - date: 12, - hours: 6, - minutes: 7, - seconds: 8, - milliseconds: 9 - }); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hours(), 6, 'hour'); - assert.equal(a.minutes(), 7, 'minute'); - assert.equal(a.seconds(), 8, 'second'); - assert.equal(a.milliseconds(), 9, 'milliseconds'); - }); - - test('day setter', function (assert) { - var a = moment([2011, 0, 15]); - assert.equal(moment(a).day(0).date(), 9, 'set from saturday to sunday'); - assert.equal(moment(a).day(6).date(), 15, 'set from saturday to saturday'); - assert.equal(moment(a).day(3).date(), 12, 'set from saturday to wednesday'); - - a = moment([2011, 0, 9]); - assert.equal(moment(a).day(0).date(), 9, 'set from sunday to sunday'); - assert.equal(moment(a).day(6).date(), 15, 'set from sunday to saturday'); - assert.equal(moment(a).day(3).date(), 12, 'set from sunday to wednesday'); - - a = moment([2011, 0, 12]); - assert.equal(moment(a).day(0).date(), 9, 'set from wednesday to sunday'); - assert.equal(moment(a).day(6).date(), 15, 'set from wednesday to saturday'); - assert.equal(moment(a).day(3).date(), 12, 'set from wednesday to wednesday'); - - assert.equal(moment(a).day(-7).date(), 2, 'set from wednesday to last sunday'); - assert.equal(moment(a).day(-1).date(), 8, 'set from wednesday to last saturday'); - assert.equal(moment(a).day(-4).date(), 5, 'set from wednesday to last wednesday'); - - assert.equal(moment(a).day(7).date(), 16, 'set from wednesday to next sunday'); - assert.equal(moment(a).day(13).date(), 22, 'set from wednesday to next saturday'); - assert.equal(moment(a).day(10).date(), 19, 'set from wednesday to next wednesday'); - - assert.equal(moment(a).day(14).date(), 23, 'set from wednesday to second next sunday'); - assert.equal(moment(a).day(20).date(), 29, 'set from wednesday to second next saturday'); - assert.equal(moment(a).day(17).date(), 26, 'set from wednesday to second next wednesday'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('invalid'); - - test('invalid', function (assert) { - var m = moment.invalid(); - assert.equal(m.isValid(), false); - assert.equal(m.parsingFlags().userInvalidated, true); - assert.ok(isNaN(m.valueOf())); - }); - - test('invalid with existing flag', function (assert) { - var m = moment.invalid({invalidMonth : 'whatchamacallit'}); - assert.equal(m.isValid(), false); - assert.equal(m.parsingFlags().userInvalidated, false); - assert.equal(m.parsingFlags().invalidMonth, 'whatchamacallit'); - assert.ok(isNaN(m.valueOf())); - }); - - test('invalid with custom flag', function (assert) { - var m = moment.invalid({tooBusyWith : 'reiculating splines'}); - assert.equal(m.isValid(), false); - assert.equal(m.parsingFlags().userInvalidated, false); - assert.equal(m.parsingFlags().tooBusyWith, 'reiculating splines'); - assert.ok(isNaN(m.valueOf())); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('is after'); - - test('is after without units', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, 'hour is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), true, 'hour is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, 'minute is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), true, 'minute is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, 'second is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), true, 'second is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond match'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, 'millisecond is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), true, 'millisecond is earlier'); - assert.equal(m.isAfter(m), false, 'moments are not after themselves'); - assert.equal(+m, +mCopy, 'isAfter second should not change moment'); - }); - - test('is after year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match'); - assert.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, 'exact start of year'); - assert.equal(m.isAfter(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, 'exact end of year'); - assert.equal(m.isAfter(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, 'start of next year'); - assert.equal(m.isAfter(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), true, 'end of previous year'); - assert.equal(m.isAfter(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), true, 'end of year far before'); - assert.equal(m.isAfter(m, 'year'), false, 'same moments are not after the same year'); - assert.equal(+m, +mCopy, 'isAfter year should not change moment'); - }); - - test('is after month', function (assert) { - var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month match'); - assert.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, 'exact start of month'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, 'exact end of month'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, 'start of next month'); - assert.equal(m.isAfter(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), true, 'end of previous month'); - assert.equal(m.isAfter(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), true, 'later month but earlier year'); - assert.equal(m.isAfter(m, 'month'), false, 'same moments are not after the same month'); - assert.equal(+m, +mCopy, 'isAfter month should not change moment'); - }); - - test('is after day', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, 'day match'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, 'exact start of day'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, 'exact end of day'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), false, 'start of next day'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), true, 'end of previous day'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), true, 'later day but earlier year'); - assert.equal(m.isAfter(m, 'day'), false, 'same moments are not after the same day'); - assert.equal(+m, +mCopy, 'isAfter day should not change moment'); - }); - - test('is after hour', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour match'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), false, 'hour is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, 'exact start of hour'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, 'exact end of hour'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), false, 'start of next hour'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), true, 'end of previous hour'); - assert.equal(m.isAfter(m, 'hour'), false, 'same moments are not after the same hour'); - assert.equal(+m, +mCopy, 'isAfter hour should not change moment'); - }); - - test('is after minute', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), false, 'hour is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), true, 'hour is earler'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), false, 'minute is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), true, 'minute is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, 'exact start of minute'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, 'exact end of minute'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), false, 'start of next minute'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), true, 'end of previous minute'); - assert.equal(m.isAfter(m, 'minute'), false, 'same moments are not after the same minute'); - assert.equal(+m, +mCopy, 'isAfter minute should not change moment'); - }); - - test('is after second', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, 'second match'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), false, 'hour is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), true, 'hour is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), false, 'minute is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), true, 'minute is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), false, 'second is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), true, 'second is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, 'exact start of second'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, 'exact end of second'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), false, 'start of next second'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), true, 'end of previous second'); - assert.equal(m.isAfter(m, 'second'), false, 'same moments are not after the same second'); - assert.equal(+m, +mCopy, 'isAfter second should not change moment'); - }); - - test('is after millisecond', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond match'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, 'hour is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), true, 'hour is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, 'minute is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), true, 'minute is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, 'second is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), true, 'second is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, 'millisecond is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), true, 'millisecond is earlier'); - assert.equal(m.isAfter(m, 'millisecond'), false, 'same moments are not after the same millisecond'); - assert.equal(+m, +mCopy, 'isAfter millisecond should not change moment'); - }); - - test('is after invalid', function (assert) { - var m = moment(), invalid = moment.invalid(); - assert.equal(m.isAfter(invalid), false, 'valid moment is not after invalid moment'); - assert.equal(invalid.isAfter(m), false, 'invalid moment is not after valid moment'); - assert.equal(m.isAfter(invalid, 'year'), false, 'invalid moment year'); - assert.equal(m.isAfter(invalid, 'month'), false, 'invalid moment month'); - assert.equal(m.isAfter(invalid, 'day'), false, 'invalid moment day'); - assert.equal(m.isAfter(invalid, 'hour'), false, 'invalid moment hour'); - assert.equal(m.isAfter(invalid, 'minute'), false, 'invalid moment minute'); - assert.equal(m.isAfter(invalid, 'second'), false, 'invalid moment second'); - assert.equal(m.isAfter(invalid, 'milliseconds'), false, 'invalid moment milliseconds'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('is before'); - - test('is after without units', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, 'hour is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, 'hour is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, 'minute is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, 'minute is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, 'second is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, 'second is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond match'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, 'millisecond is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, 'millisecond is earlier'); - assert.equal(m.isBefore(m), false, 'moments are not before themselves'); - assert.equal(+m, +mCopy, 'isBefore second should not change moment'); - }); - - test('is before year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match'); - assert.equal(m.isBefore(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, 'exact start of year'); - assert.equal(m.isBefore(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, 'exact end of year'); - assert.equal(m.isBefore(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), true, 'start of next year'); - assert.equal(m.isBefore(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of previous year'); - assert.equal(m.isBefore(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of year far before'); - assert.equal(m.isBefore(m, 'year'), false, 'same moments are not before the same year'); - assert.equal(+m, +mCopy, 'isBefore year should not change moment'); - }); - - test('is before month', function (assert) { - var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month match'); - assert.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, 'exact start of month'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, 'exact end of month'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), true, 'start of next month'); - assert.equal(m.isBefore(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, 'end of previous month'); - assert.equal(m.isBefore(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), false, 'later month but earlier year'); - assert.equal(m.isBefore(m, 'month'), false, 'same moments are not before the same month'); - assert.equal(+m, +mCopy, 'isBefore month should not change moment'); - }); - - test('is before day', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, 'day match'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, 'exact start of day'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, 'exact end of day'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), true, 'start of next day'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), false, 'end of previous day'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), false, 'later day but earlier year'); - assert.equal(m.isBefore(m, 'day'), false, 'same moments are not before the same day'); - assert.equal(+m, +mCopy, 'isBefore day should not change moment'); - }); - - test('is before hour', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour match'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), true, 'hour is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, 'exact start of hour'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, 'exact end of hour'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), true, 'start of next hour'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), false, 'end of previous hour'); - assert.equal(m.isBefore(m, 'hour'), false, 'same moments are not before the same hour'); - assert.equal(+m, +mCopy, 'isBefore hour should not change moment'); - }); - - test('is before minute', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), true, 'hour is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), false, 'hour is earler'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), true, 'minute is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), false, 'minute is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, 'exact start of minute'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, 'exact end of minute'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), true, 'start of next minute'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), false, 'end of previous minute'); - assert.equal(m.isBefore(m, 'minute'), false, 'same moments are not before the same minute'); - assert.equal(+m, +mCopy, 'isBefore minute should not change moment'); - }); - - test('is before second', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, 'second match'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), true, 'hour is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), false, 'hour is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), true, 'minute is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), false, 'minute is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), true, 'second is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), false, 'second is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, 'exact start of second'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, 'exact end of second'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), true, 'start of next second'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), false, 'end of previous second'); - assert.equal(m.isBefore(m, 'second'), false, 'same moments are not before the same second'); - assert.equal(+m, +mCopy, 'isBefore second should not change moment'); - }); - - test('is before millisecond', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond match'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), false, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), true, 'hour is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, 'hour is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), true, 'minute is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, 'minute is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), true, 'second is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, 'second is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), true, 'millisecond is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, 'millisecond is earlier'); - assert.equal(m.isBefore(m, 'millisecond'), false, 'same moments are not before the same millisecond'); - assert.equal(+m, +mCopy, 'isBefore millisecond should not change moment'); - }); - - test('is before invalid', function (assert) { - var m = moment(), invalid = moment.invalid(); - assert.equal(m.isBefore(invalid), false, 'valid moment is not before invalid moment'); - assert.equal(invalid.isBefore(m), false, 'invalid moment is not before valid moment'); - assert.equal(m.isBefore(invalid, 'year'), false, 'invalid moment year'); - assert.equal(m.isBefore(invalid, 'month'), false, 'invalid moment month'); - assert.equal(m.isBefore(invalid, 'day'), false, 'invalid moment day'); - assert.equal(m.isBefore(invalid, 'hour'), false, 'invalid moment hour'); - assert.equal(m.isBefore(invalid, 'minute'), false, 'invalid moment minute'); - assert.equal(m.isBefore(invalid, 'second'), false, 'invalid moment second'); - assert.equal(m.isBefore(invalid, 'milliseconds'), false, 'invalid moment milliseconds'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('is between'); - - test('is between without units', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2009, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'year is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2013, 3, 2, 3, 4, 5, 10))), false, 'year is earlier'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10))), true, 'year is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'month is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 5, 2, 3, 4, 5, 10))), false, 'month is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 2, 2, 3, 4, 5, 10)), - moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, 'month is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 1, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'day is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 4, 3, 4, 5, 10))), false, 'day is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 1, 3, 4, 5, 10)), - moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, 'day is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 1, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'hour is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 5, 4, 5, 10))), false, 'hour is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 2, 4, 5, 10)), - moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, 'hour is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 6, 5, 10))), false, 'minute is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 2, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'minute is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 3, 5, 10)), - moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, 'minute is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 7, 10))), false, 'second is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 3, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'second is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 4, 10)), - moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, 'second is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 12))), false, 'millisecond is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 8)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 9)), - moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, 'millisecond is between'); - assert.equal(m.isBetween(m, m), false, 'moments are not between themselves'); - assert.equal(+m, +mCopy, 'isBetween second should not change moment'); - }); - - test('is between year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 5, 6, 7, 8, 9, 10)), - moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match'); - assert.equal(m.isBetween( - moment(new Date(2010, 5, 6, 7, 8, 9, 10)), - moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2010, 5, 6, 7, 8, 9, 10)), - moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 5, 6, 7, 8, 9, 10)), - moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is earlier'); - assert.equal(m.isBetween( - moment(new Date(2010, 5, 6, 7, 8, 9, 10)), - moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is later'); - assert.equal(m.isBetween(m, 'year'), false, 'same moments are not between the same year'); - assert.equal(+m, +mCopy, 'isBetween year should not change moment'); - }); - - test('is between month', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 6, 7, 8, 9, 10)), - moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month match'); - assert.equal(m.isBetween( - moment(new Date(2011, 0, 6, 7, 8, 9, 10)), - moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 0, 31, 23, 59, 59, 999)), - moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'month is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 6, 7, 8, 9, 10)), - moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 11, 6, 7, 8, 9, 10)), - moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month is later'); - assert.equal(m.isBetween(m, 'month'), false, 'same moments are not between the same month'); - assert.equal(+m, +mCopy, 'isBetween month should not change moment'); - }); - - test('is between day', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), false, 'day match'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 1, 7, 8, 9, 10)), - moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'days'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 1, 7, 8, 9, 10)), - moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), true, 'day is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), - moment(new Date(2011, 1, 4, 7, 8, 9, 10)), 'day'), false, 'day is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 1, 7, 8, 9, 10)), - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), false, 'day is later'); - assert.equal(m.isBetween(m, 'day'), false, 'same moments are not between the same day'); - assert.equal(+m, +mCopy, 'isBetween day should not change moment'); - }); - - test('is between hour', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 5, 9, 10)), - moment(new Date(2011, 1, 2, 3, 9, 9, 10)), 'hour'), false, 'hour match'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 1, 59, 59, 999)), - moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hours'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 2, 59, 59, 999)), - moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), true, 'hour is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'hour'), false, 'hour is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'hour'), false, 'hour is later'); - assert.equal(m.isBetween(m, 'hour'), false, 'same moments are not between the same hour'); - assert.equal(+m, +mCopy, 'isBetween hour should not change moment'); - }); - - test('is between minute', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 9, 10)), - moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 3, 9, 10)), - moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minutes'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 3, 59, 999)), - moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), true, 'minute is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 5, 0, 0)), - moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'minute'), false, 'minute is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 2, 9, 10)), - moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, 'minute is later'); - assert.equal(m.isBetween(m, 'minute'), false, 'same moments are not between the same minute'); - assert.equal(+m, +mCopy, 'isBetween minute should not change moment'); - }); - - test('is between second', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 10)), - moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), false, 'second match'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 4, 10)), - moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'seconds'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 4, 999)), - moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), true, 'second is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 6, 0)), - moment(new Date(2011, 1, 2, 3, 4, 7, 10)), 'second'), false, 'second is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 3, 10)), - moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, 'second is later'); - assert.equal(m.isBetween(m, 'second'), false, 'same moments are not between the same second'); - assert.equal(+m, +mCopy, 'isBetween second should not change moment'); - }); - - test('is between millisecond', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 6)), - moment(new Date(2011, 1, 2, 3, 4, 5, 6)), 'millisecond'), false, 'millisecond match'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 5)), - moment(new Date(2011, 1, 2, 3, 4, 5, 7)), 'milliseconds'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 5)), - moment(new Date(2011, 1, 2, 3, 4, 5, 7)), 'millisecond'), true, 'millisecond is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 7)), - moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 4)), - moment(new Date(2011, 1, 2, 3, 4, 5, 6)), 'millisecond'), false, 'millisecond is later'); - assert.equal(m.isBetween(m, 'millisecond'), false, 'same moments are not between the same millisecond'); - assert.equal(+m, +mCopy, 'isBetween millisecond should not change moment'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('is date'); - - test('isDate recognizes Date objects', function (assert) { - assert.ok(moment.isDate(new Date()), 'no args (now)'); - assert.ok(moment.isDate(new Date([2014, 2, 15])), 'array args'); - assert.ok(moment.isDate(new Date('2014-03-15')), 'string args'); - assert.ok(moment.isDate(new Date('does NOT look like a date')), 'invalid date'); - }); - - test('isDate rejects non-Date objects', function (assert) { - assert.ok(!moment.isDate(), 'nothing'); - assert.ok(!moment.isDate(undefined), 'undefined'); - assert.ok(!moment.isDate(null), 'string args'); - assert.ok(!moment.isDate(42), 'number'); - assert.ok(!moment.isDate('2014-03-15'), 'string'); - assert.ok(!moment.isDate([2014, 2, 15]), 'array'); - assert.ok(!moment.isDate({year: 2014, month: 2, day: 15}), 'object'); - assert.ok(!moment.isDate({toString: function () { - return '[object Date]'; - }}), 'lying object'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('is moment'); - - test('is moment object', function (assert) { - var MyObj = function () {}, - extend = function (a, b) { - var i; - for (i in b) { - a[i] = b[i]; - } - return a; - }; - MyObj.prototype.toDate = function () { - return new Date(); - }; - - assert.ok(moment.isMoment(moment()), 'simple moment object'); - assert.ok(moment.isMoment(moment(null)), 'invalid moment object'); - assert.ok(moment.isMoment(extend({}, moment())), 'externally cloned moments are moments'); - assert.ok(moment.isMoment(extend({}, moment.utc())), 'externally cloned utc moments are moments'); - - assert.ok(!moment.isMoment(new MyObj()), 'myObj is not moment object'); - assert.ok(!moment.isMoment(moment), 'moment function is not moment object'); - assert.ok(!moment.isMoment(new Date()), 'date object is not moment object'); - assert.ok(!moment.isMoment(Object), 'Object is not moment object'); - assert.ok(!moment.isMoment('foo'), 'string is not moment object'); - assert.ok(!moment.isMoment(1), 'number is not moment object'); - assert.ok(!moment.isMoment(NaN), 'NaN is not moment object'); - assert.ok(!moment.isMoment(null), 'null is not moment object'); - assert.ok(!moment.isMoment(undefined), 'undefined is not moment object'); - }); - - test('is moment with hacked hasOwnProperty', function (assert) { - var obj = {}; - // HACK to suppress jshint warning about bad property name - obj['hasOwnMoney'.replace('Money', 'Property')] = function () { - return true; - }; - - assert.ok(!moment.isMoment(obj), 'isMoment works even if passed object has a wrong hasOwnProperty implementation (ie8)'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('is same'); - - test('is same without units', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, 'year is later'); - assert.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, 'year is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, 'month is later'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, 'month is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, 'day is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, 'day is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, 'hour is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, 'hour is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, 'minute is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, 'minute is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, 'second is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, 'second is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), true, 'millisecond match'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, 'millisecond is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, 'millisecond is earlier'); - assert.equal(m.isSame(m), true, 'moments are the same as themselves'); - assert.equal(+m, +mCopy, 'isSame second should not change moment'); - }); - - test('is same year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year match'); - assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), true, 'exact start of year'); - assert.equal(m.isSame(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), true, 'exact end of year'); - assert.equal(m.isSame(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, 'start of next year'); - assert.equal(m.isSame(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of previous year'); - assert.equal(m.isSame(m, 'year'), true, 'same moments are in the same year'); - assert.equal(+m, +mCopy, 'isSame year should not change moment'); - }); - - test('is same month', function (assert) { - var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), true, 'month match'); - assert.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, 'month mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'exact start of month'); - assert.equal(m.isSame(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), true, 'exact end of month'); - assert.equal(m.isSame(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, 'start of next month'); - assert.equal(m.isSame(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, 'end of previous month'); - assert.equal(m.isSame(m, 'month'), true, 'same moments are in the same month'); - assert.equal(+m, +mCopy, 'isSame month should not change moment'); - }); - - test('is same day', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), true, 'day match'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, 'month mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), false, 'day mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), true, 'exact start of day'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), true, 'exact end of day'); - assert.equal(m.isSame(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), false, 'start of next day'); - assert.equal(m.isSame(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), false, 'end of previous day'); - assert.equal(m.isSame(m, 'day'), true, 'same moments are in the same day'); - assert.equal(+m, +mCopy, 'isSame day should not change moment'); - }); - - test('is same hour', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'hour match'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), false, 'month mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), false, 'day mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), false, 'hour mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), true, 'exact start of hour'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), true, 'exact end of hour'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), false, 'start of next hour'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), false, 'end of previous hour'); - assert.equal(m.isSame(m, 'hour'), true, 'same moments are in the same hour'); - assert.equal(+m, +mCopy, 'isSame hour should not change moment'); - }); - - test('is same minute', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'minute match'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, 'month mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), false, 'day mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), false, 'hour mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), false, 'minute mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), true, 'exact start of minute'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), true, 'exact end of minute'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), false, 'start of next minute'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, 'end of previous minute'); - assert.equal(m.isSame(m, 'minute'), true, 'same moments are in the same minute'); - assert.equal(+m, +mCopy, 'isSame minute should not change moment'); - }); - - test('is same second', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), true, 'second match'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, 'month mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), false, 'day mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), false, 'hour mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), false, 'minute mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), false, 'second mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), true, 'exact start of second'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), true, 'exact end of second'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), false, 'start of next second'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, 'end of previous second'); - assert.equal(m.isSame(m, 'second'), true, 'same moments are in the same second'); - assert.equal(+m, +mCopy, 'isSame second should not change moment'); - }); - - test('is same millisecond', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'millisecond match'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is later'); - assert.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is later'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, 'day is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, 'day is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, 'hour is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, 'hour is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, 'minute is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, 'minute is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, 'second is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, 'second is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, 'millisecond is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, 'millisecond is earlier'); - assert.equal(m.isSame(m, 'millisecond'), true, 'same moments are in the same millisecond'); - assert.equal(+m, +mCopy, 'isSame millisecond should not change moment'); - }); - - test('is same with utc offset moments', function (assert) { - assert.ok(moment.parseZone('2013-02-01T-05:00').isSame(moment('2013-02-01'), 'year'), 'zoned vs local moment'); - assert.ok(moment('2013-02-01').isSame(moment('2013-02-01').utcOffset('-05:00'), 'year'), 'local vs zoned moment'); - assert.ok(moment.parseZone('2013-02-01T-05:00').isSame(moment.parseZone('2013-02-01T-06:30'), 'year'), - 'zoned vs (differently) zoned moment'); - }); - - test('is same with invalid moments', function (assert) { - assert.equal(moment.invalid().isSame(moment.invalid()), false, 'invalid moments are not considered equal'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('is valid'); - - test('array bad month', function (assert) { - assert.equal(moment([2010, -1]).isValid(), false, 'month -1 invalid'); - assert.equal(moment([2100, 12]).isValid(), false, 'month 12 invalid'); - }); - - test('array good month', function (assert) { - for (var i = 0; i < 12; i++) { - assert.equal(moment([2010, i]).isValid(), true, 'month ' + i); - assert.equal(moment.utc([2010, i]).isValid(), true, 'month ' + i); - } - }); - - test('array bad date', function (assert) { - var tests = [ - moment([2010, 0, 0]), - moment([2100, 0, 32]), - moment.utc([2010, 0, 0]), - moment.utc([2100, 0, 32]) - ], - i, m; - - for (i in tests) { - m = tests[i]; - assert.equal(m.isValid(), false); - } - }); - - test('h/hh with hour > 12', function (assert) { - assert.ok(moment('06/20/2014 11:51 PM', 'MM/DD/YYYY hh:mm A', true).isValid(), '11 for hh'); - assert.ok(moment('06/20/2014 11:51 AM', 'MM/DD/YYYY hh:mm A', true).isValid(), '11 for hh'); - assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A').isValid(), 'non-strict validity 23 for hh'); - assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A').parsingFlags().bigHour, 'non-strict bigHour 23 for hh'); - assert.ok(!moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A', true).isValid(), 'validity 23 for hh'); - assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A', true).parsingFlags().bigHour, 'bigHour 23 for hh'); - }); - - test('array bad date leap year', function (assert) { - assert.equal(moment([2010, 1, 29]).isValid(), false, '2010 feb 29'); - assert.equal(moment([2100, 1, 29]).isValid(), false, '2100 feb 29'); - assert.equal(moment([2008, 1, 30]).isValid(), false, '2008 feb 30'); - assert.equal(moment([2000, 1, 30]).isValid(), false, '2000 feb 30'); - - assert.equal(moment.utc([2010, 1, 29]).isValid(), false, 'utc 2010 feb 29'); - assert.equal(moment.utc([2100, 1, 29]).isValid(), false, 'utc 2100 feb 29'); - assert.equal(moment.utc([2008, 1, 30]).isValid(), false, 'utc 2008 feb 30'); - assert.equal(moment.utc([2000, 1, 30]).isValid(), false, 'utc 2000 feb 30'); - }); - - test('string + formats bad date', function (assert) { - assert.equal(moment('2020-00-00', []).isValid(), false, 'invalid on empty array'); - assert.equal(moment('2020-00-00', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), false, 'invalid on all in array'); - assert.equal(moment('2020-00-00', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'invalid on all in array'); - assert.equal(moment('2020-01-01', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), true, 'valid on first'); - assert.equal(moment('2020-01-01', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), true, 'valid on last'); - assert.equal(moment('2020-01-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on both'); - assert.equal(moment('2020-13-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on last'); - - assert.equal(moment('12-13-2012', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'month rollover'); - assert.equal(moment('12-13-2012', ['DD-MM-YYYY', 'DD-MM-YYYY']).isValid(), false, 'month rollover'); - assert.equal(moment('38-12-2012', ['DD-MM-YYYY']).isValid(), false, 'day rollover'); - }); - - test('string nonsensical with format', function (assert) { - assert.equal(moment('fail', 'MM-DD-YYYY').isValid(), false, 'string \'fail\' with format \'MM-DD-YYYY\''); - assert.equal(moment('xx-xx-2001', 'DD-MM-YYY').isValid(), true, 'string \'xx-xx-2001\' with format \'MM-DD-YYYY\''); - }); - - test('string with bad month name', function (assert) { - assert.equal(moment('01-Nam-2012', 'DD-MMM-YYYY').isValid(), false, '\'Nam\' is an invalid month'); - assert.equal(moment('01-Aug-2012', 'DD-MMM-YYYY').isValid(), true, '\'Aug\' is a valid month'); - }); - - test('string with spaceless format', function (assert) { - assert.equal(moment('10Sep2001', 'DDMMMYYYY').isValid(), true, 'Parsing 10Sep2001 should result in a valid date'); - }); - - test('invalid string iso 8601', function (assert) { - var tests = [ - '2010-00-00', - '2010-01-00', - '2010-01-40', - '2010-01-01T24:01', // 24:00:00 is actually valid - '2010-01-01T23:60', - '2010-01-01T23:59:60' - ], i; - - for (i = 0; i < tests.length; i++) { - assert.equal(moment(tests[i]).isValid(), false, tests[i] + ' should be invalid'); - assert.equal(moment.utc(tests[i]).isValid(), false, tests[i] + ' should be invalid'); - } - }); - - test('invalid string iso 8601 + timezone', function (assert) { - var tests = [ - '2010-00-00T+00:00', - '2010-01-00T+00:00', - '2010-01-40T+00:00', - '2010-01-40T24:01+00:00', - '2010-01-40T23:60+00:00', - '2010-01-40T23:59:60+00:00', - '2010-01-40T23:59:59.9999+00:00' - ], i; - - for (i = 0; i < tests.length; i++) { - assert.equal(moment(tests[i]).isValid(), false, tests[i] + ' should be invalid'); - assert.equal(moment.utc(tests[i]).isValid(), false, tests[i] + ' should be invalid'); - } - }); - - test('valid string iso 8601 + timezone', function (assert) { - var tests = [ - '2010-01-01', - '2010-01-30', - '2010-01-30T23+00:00', - '2010-01-30T23:59+00:00', - '2010-01-30T23:59:59+00:00', - '2010-01-30T23:59:59.999+00:00', - '2010-01-30T23:59:59.999-07:00', - '2010-01-30T00:00:00.000+07:00', - '2010-01-30 00:00:00.000Z' - ], i; - - for (i = 0; i < tests.length; i++) { - assert.equal(moment(tests[i]).isValid(), true, tests[i] + ' should be valid in normal'); - assert.equal(moment.utc(tests[i]).isValid(), true, tests[i] + ' should be valid in normal'); - assert.equal(moment(tests[i], moment.ISO_8601, true).isValid(), true, tests[i] + ' should be valid in strict'); - assert.equal(moment.utc(tests[i], moment.ISO_8601, true).isValid(), true, tests[i] + ' should be valid in strict'); - } - }); - - test('invalidAt', function (assert) { - assert.equal(moment([2000, 12]).invalidAt(), 1, 'month 12 is invalid: 0-11'); - assert.equal(moment([2000, 1, 30]).invalidAt(), 2, '30 is not a valid february day'); - assert.equal(moment([2000, 1, 29, 25]).invalidAt(), 3, '25 is invalid hour'); - assert.equal(moment([2000, 1, 29, 24, 1]).invalidAt(), 3, '24:01 is invalid hour'); - assert.equal(moment([2000, 1, 29, 23, 60]).invalidAt(), 4, '60 is invalid minute'); - assert.equal(moment([2000, 1, 29, 23, 59, 60]).invalidAt(), 5, '60 is invalid second'); - assert.equal(moment([2000, 1, 29, 23, 59, 59, 1000]).invalidAt(), 6, '1000 is invalid millisecond'); - assert.equal(moment([2000, 1, 29, 23, 59, 59, 999]).invalidAt(), -1, '-1 if everything is fine'); - }); - - test('valid Unix timestamp', function (assert) { - assert.equal(moment(1371065286, 'X').isValid(), true, 'number integer'); - assert.equal(moment(1379066897.0, 'X').isValid(), true, 'number whole 1dp'); - assert.equal(moment(1379066897.7, 'X').isValid(), true, 'number 1dp'); - assert.equal(moment(1379066897.00, 'X').isValid(), true, 'number whole 2dp'); - assert.equal(moment(1379066897.07, 'X').isValid(), true, 'number 2dp'); - assert.equal(moment(1379066897.17, 'X').isValid(), true, 'number 2dp'); - assert.equal(moment(1379066897.000, 'X').isValid(), true, 'number whole 3dp'); - assert.equal(moment(1379066897.007, 'X').isValid(), true, 'number 3dp'); - assert.equal(moment(1379066897.017, 'X').isValid(), true, 'number 3dp'); - assert.equal(moment(1379066897.157, 'X').isValid(), true, 'number 3dp'); - assert.equal(moment('1371065286', 'X').isValid(), true, 'string integer'); - assert.equal(moment('1379066897.', 'X').isValid(), true, 'string trailing .'); - assert.equal(moment('1379066897.0', 'X').isValid(), true, 'string whole 1dp'); - assert.equal(moment('1379066897.7', 'X').isValid(), true, 'string 1dp'); - assert.equal(moment('1379066897.00', 'X').isValid(), true, 'string whole 2dp'); - assert.equal(moment('1379066897.07', 'X').isValid(), true, 'string 2dp'); - assert.equal(moment('1379066897.17', 'X').isValid(), true, 'string 2dp'); - assert.equal(moment('1379066897.000', 'X').isValid(), true, 'string whole 3dp'); - assert.equal(moment('1379066897.007', 'X').isValid(), true, 'string 3dp'); - assert.equal(moment('1379066897.017', 'X').isValid(), true, 'string 3dp'); - assert.equal(moment('1379066897.157', 'X').isValid(), true, 'string 3dp'); - }); - - test('invalid Unix timestamp', function (assert) { - assert.equal(moment(undefined, 'X').isValid(), false, 'undefined'); - assert.equal(moment('undefined', 'X').isValid(), false, 'string undefined'); - try { - assert.equal(moment(null, 'X').isValid(), false, 'null'); - } catch (e) { - assert.ok(true, 'null'); - } - - assert.equal(moment('null', 'X').isValid(), false, 'string null'); - assert.equal(moment([], 'X').isValid(), false, 'array'); - assert.equal(moment('{}', 'X').isValid(), false, 'object'); - try { - assert.equal(moment('', 'X').isValid(), false, 'string empty'); - } catch (e) { - assert.ok(true, 'string empty'); - } - - assert.equal(moment(' ', 'X').isValid(), false, 'string space'); - }); - - test('valid Unix offset milliseconds', function (assert) { - assert.equal(moment(1234567890123, 'x').isValid(), true, 'number integer'); - assert.equal(moment('1234567890123', 'x').isValid(), true, 'string integer'); - }); - - test('invalid Unix offset milliseconds', function (assert) { - assert.equal(moment(undefined, 'x').isValid(), false, 'undefined'); - assert.equal(moment('undefined', 'x').isValid(), false, 'string undefined'); - try { - assert.equal(moment(null, 'x').isValid(), false, 'null'); - } catch (e) { - assert.ok(true, 'null'); - } - - assert.equal(moment('null', 'x').isValid(), false, 'string null'); - assert.equal(moment([], 'x').isValid(), false, 'array'); - assert.equal(moment('{}', 'x').isValid(), false, 'object'); - try { - assert.equal(moment('', 'x').isValid(), false, 'string empty'); - } catch (e) { - assert.ok(true, 'string empty'); - } - - assert.equal(moment(' ', 'x').isValid(), false, 'string space'); - }); - - test('empty', function (assert) { - assert.equal(moment(null).isValid(), false, 'null'); - assert.equal(moment('').isValid(), false, 'empty string'); - assert.equal(moment(null, 'YYYY').isValid(), false, 'format + null'); - assert.equal(moment('', 'YYYY').isValid(), false, 'format + empty string'); - assert.equal(moment(' ', 'YYYY').isValid(), false, 'format + empty when trimmed'); - }); - - test('days of the year', function (assert) { - assert.equal(moment('2010 300', 'YYYY DDDD').isValid(), true, 'day 300 of year valid'); - assert.equal(moment('2010 365', 'YYYY DDDD').isValid(), true, 'day 365 of year valid'); - assert.equal(moment('2010 366', 'YYYY DDDD').isValid(), false, 'day 366 of year invalid'); - assert.equal(moment('2012 365', 'YYYY DDDD').isValid(), true, 'day 365 of leap year valid'); - assert.equal(moment('2012 366', 'YYYY DDDD').isValid(), true, 'day 366 of leap year valid'); - assert.equal(moment('2012 367', 'YYYY DDDD').isValid(), false, 'day 367 of leap year invalid'); - }); - - test('24:00:00.000 is valid', function (assert) { - assert.equal(moment('2014-01-01 24', 'YYYY-MM-DD HH').isValid(), true, '24 is valid'); - assert.equal(moment('2014-01-01 24:00', 'YYYY-MM-DD HH:mm').isValid(), true, '24:00 is valid'); - assert.equal(moment('2014-01-01 24:01', 'YYYY-MM-DD HH:mm').isValid(), false, '24:01 is not valid'); - }); - - test('oddball permissiveness', function (assert) { - //https://github.com/moment/moment/issues/1128 - assert.ok(moment('2010-10-3199', ['MM/DD/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD']).isValid()); - - //https://github.com/moment/moment/issues/1122 - assert.ok(moment('3:25', ['h:mma', 'hh:mma', 'H:mm', 'HH:mm']).isValid()); - }); - - test('0 hour is invalid in strict', function (assert) { - assert.equal(moment('00:01', 'hh:mm', true).isValid(), false, '00 hour is invalid in strict'); - assert.equal(moment('00:01', 'hh:mm').isValid(), true, '00 hour is valid in normal'); - assert.equal(moment('0:01', 'h:mm', true).isValid(), false, '0 hour is invalid in strict'); - assert.equal(moment('0:01', 'h:mm').isValid(), true, '0 hour is valid in normal'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('leap year'); - - test('leap year', function (assert) { - assert.equal(moment([2010, 0, 1]).isLeapYear(), false, '2010'); - assert.equal(moment([2100, 0, 1]).isLeapYear(), false, '2100'); - assert.equal(moment([2008, 0, 1]).isLeapYear(), true, '2008'); - assert.equal(moment([2000, 0, 1]).isLeapYear(), true, '2000'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('listers'); - - test('default', function (assert) { - assert.deepEqual(moment.months(), ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']); - assert.deepEqual(moment.monthsShort(), ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']); - assert.deepEqual(moment.weekdays(), ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']); - assert.deepEqual(moment.weekdaysShort(), ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']); - assert.deepEqual(moment.weekdaysMin(), ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']); - }); - - test('index', function (assert) { - assert.equal(moment.months(0), 'January'); - assert.equal(moment.months(2), 'March'); - assert.equal(moment.monthsShort(0), 'Jan'); - assert.equal(moment.monthsShort(2), 'Mar'); - assert.equal(moment.weekdays(0), 'Sunday'); - assert.equal(moment.weekdays(2), 'Tuesday'); - assert.equal(moment.weekdaysShort(0), 'Sun'); - assert.equal(moment.weekdaysShort(2), 'Tue'); - assert.equal(moment.weekdaysMin(0), 'Su'); - assert.equal(moment.weekdaysMin(2), 'Tu'); - }); - - test('localized', function (assert) { - var months = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'), - monthsShort = 'on_tw_th_fo_fi_si_se_ei_ni_te_el_tw'.split('_'), - weekdays = 'one_two_three_four_five_six_seven'.split('_'), - weekdaysShort = 'on_tw_th_fo_fi_si_se'.split('_'), - weekdaysMin = '1_2_3_4_5_6_7'.split('_'); - - moment.locale('numerologists', { - months : months, - monthsShort : monthsShort, - weekdays : weekdays, - weekdaysShort: weekdaysShort, - weekdaysMin: weekdaysMin - }); - - assert.deepEqual(moment.months(), months); - assert.deepEqual(moment.monthsShort(), monthsShort); - assert.deepEqual(moment.weekdays(), weekdays); - assert.deepEqual(moment.weekdaysShort(), weekdaysShort); - assert.deepEqual(moment.weekdaysMin(), weekdaysMin); - - assert.equal(moment.months(0), 'one'); - assert.equal(moment.monthsShort(0), 'on'); - assert.equal(moment.weekdays(0), 'one'); - assert.equal(moment.weekdaysShort(0), 'on'); - assert.equal(moment.weekdaysMin(0), '1'); - - assert.equal(moment.months(2), 'three'); - assert.equal(moment.monthsShort(2), 'th'); - assert.equal(moment.weekdays(2), 'three'); - assert.equal(moment.weekdaysShort(2), 'th'); - assert.equal(moment.weekdaysMin(2), '3'); - }); - - test('with functions', function (assert) { - var monthsShort = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'), - monthsShortWeird = 'onesy_twosy_threesy_foursy_fivesy_sixsy_sevensy_eightsy_ninesy_tensy_elevensy_twelvesy'.split('_'); - - moment.locale('difficult', { - - monthsShort: function (m, format) { - var arr = format.match(/-MMM-/) ? monthsShortWeird : monthsShort; - return arr[m.month()]; - } - }); - - assert.deepEqual(moment.monthsShort(), monthsShort); - assert.deepEqual(moment.monthsShort('MMM'), monthsShort); - assert.deepEqual(moment.monthsShort('-MMM-'), monthsShortWeird); - - assert.deepEqual(moment.monthsShort('MMM', 2), 'three'); - assert.deepEqual(moment.monthsShort('-MMM-', 2), 'threesy'); - assert.deepEqual(moment.monthsShort(2), 'three'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function each(array, callback) { - var i; - for (i = 0; i < array.length; i++) { - callback(array[i], i, array); - } - } - - module('locale', { - setup : function () { - // TODO: Remove once locales are switched to ES6 - each([{ - name: 'en-gb', - data: {} - }, { - name: 'en-ca', - data: {} - }, { - name: 'es', - data: { - relativeTime: {past: 'hace %s', s: 'unos segundos', d: 'un día'}, - months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_') - } - }, { - name: 'fr', - data: {} - }, { - name: 'fr-ca', - data: {} - }, { - name: 'it', - data: {} - }, { - name: 'zh-cn', - data: { - months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_') - } - }], function (locale) { - if (moment.locale(locale.name) !== locale.name) { - moment.defineLocale(locale.name, locale.data); - } - }); - moment.locale('en'); - } - }); - - test('library getters and setters', function (assert) { - var r = moment.locale('en'); - - assert.equal(r, 'en', 'locale should return en by default'); - assert.equal(moment.locale(), 'en', 'locale should return en by default'); - - moment.locale('fr'); - assert.equal(moment.locale(), 'fr', 'locale should return the changed locale'); - - moment.locale('en-gb'); - assert.equal(moment.locale(), 'en-gb', 'locale should return the changed locale'); - - moment.locale('en'); - assert.equal(moment.locale(), 'en', 'locale should reset'); - - moment.locale('does-not-exist'); - assert.equal(moment.locale(), 'en', 'locale should reset'); - - moment.locale('EN'); - assert.equal(moment.locale(), 'en', 'Normalize locale key case'); - - moment.locale('EN_gb'); - assert.equal(moment.locale(), 'en-gb', 'Normalize locale key underscore'); - }); - - test('library setter array of locales', function (assert) { - assert.equal(moment.locale(['non-existent', 'fr', 'also-non-existent']), 'fr', 'passing an array uses the first valid locale'); - assert.equal(moment.locale(['es', 'fr', 'also-non-existent']), 'es', 'passing an array uses the first valid locale'); - }); - - test('library setter locale substrings', function (assert) { - assert.equal(moment.locale('fr-crap'), 'fr', 'use substrings'); - assert.equal(moment.locale('fr-does-not-exist'), 'fr', 'uses deep substrings'); - assert.equal(moment.locale('fr-CA-does-not-exist'), 'fr-ca', 'uses deepest substring'); - }); - - test('library getter locale array and substrings', function (assert) { - assert.equal(moment.locale(['en-CH', 'fr']), 'en', 'prefer root locale to shallower ones'); - assert.equal(moment.locale(['en-gb-leeds', 'en-CA']), 'en-gb', 'prefer root locale to shallower ones'); - assert.equal(moment.locale(['en-fake', 'en-CA']), 'en-ca', 'prefer alternatives with shared roots'); - assert.equal(moment.locale(['en-fake', 'en-fake2', 'en-ca']), 'en-ca', 'prefer alternatives with shared roots'); - assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr']), 'fr', 'always find something if possible'); - assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr']), 'fr', 'always find something if possible'); - assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr-fake-fake-fake']), 'fr', 'always find something if possible'); - assert.equal(moment.locale(['en', 'en-CA']), 'en', 'prefer earlier if it works'); - }); - - test('library ensure inheritance', function (assert) { - moment.locale('made-up', { - // I put them out of order - months : 'February_March_April_May_June_July_August_September_October_November_December_January'.split('_') - // the rest of the properties should be inherited. - }); - - assert.equal(moment([2012, 5, 6]).format('MMMM'), 'July', 'Override some of the configs'); - assert.equal(moment([2012, 5, 6]).format('MMM'), 'Jun', 'But not all of them'); - }); - - test('library ensure inheritance LT L LL LLL LLLL', function (assert) { - var locale = 'test-inherit-lt'; - - moment.defineLocale(locale, { - longDateFormat : { - LT : '-[LT]-', - L : '-[L]-', - LL : '-[LL]-', - LLL : '-[LLL]-', - LLLL : '-[LLLL]-' - }, - calendar : { - sameDay : '[sameDay] LT', - nextDay : '[nextDay] L', - nextWeek : '[nextWeek] LL', - lastDay : '[lastDay] LLL', - lastWeek : '[lastWeek] LLLL', - sameElse : 'L' - } - }); - - moment.locale('es'); - - assert.equal(moment().locale(locale).calendar(), 'sameDay -LT-', 'Should use instance locale in LT formatting'); - assert.equal(moment().add(1, 'days').locale(locale).calendar(), 'nextDay -L-', 'Should use instance locale in L formatting'); - assert.equal(moment().add(-1, 'days').locale(locale).calendar(), 'lastDay -LLL-', 'Should use instance locale in LL formatting'); - assert.equal(moment().add(4, 'days').locale(locale).calendar(), 'nextWeek -LL-', 'Should use instance locale in LLL formatting'); - assert.equal(moment().add(-4, 'days').locale(locale).calendar(), 'lastWeek -LLLL-', 'Should use instance locale in LLLL formatting'); - }); - - test('library localeData', function (assert) { - moment.locale('en'); - - var jan = moment([2000, 0]); - - assert.equal(moment.localeData().months(jan), 'January', 'no arguments returns global'); - assert.equal(moment.localeData('zh-cn').months(jan), '一月', 'a string returns the locale based on key'); - assert.equal(moment.localeData(moment().locale('es')).months(jan), 'Enero', 'if you pass in a moment it uses the moment\'s locale'); - }); - - test('library deprecations', function (assert) { - moment.lang('dude', {months: ['Movember']}); - assert.equal(moment.locale(), 'dude', 'setting the lang sets the locale'); - assert.equal(moment.lang(), moment.locale()); - assert.equal(moment.langData(), moment.localeData(), 'langData is localeData'); - }); - - test('defineLocale', function (assert) { - moment.locale('en'); - moment.defineLocale('dude', {months: ['Movember']}); - assert.equal(moment().locale(), 'dude', 'defineLocale also sets it'); - assert.equal(moment().locale('dude').locale(), 'dude', 'defineLocale defines a locale'); - }); - - test('library convenience', function (assert) { - moment.locale('something', {week: {dow: 3}}); - moment.locale('something'); - assert.equal(moment.locale(), 'something', 'locale can be used to create the locale too'); - }); - - test('firstDayOfWeek firstDayOfYear locale getters', function (assert) { - moment.locale('something', {week: {dow: 3, doy: 4}}); - moment.locale('something'); - assert.equal(moment.localeData().firstDayOfWeek(), 3, 'firstDayOfWeek'); - assert.equal(moment.localeData().firstDayOfYear(), 4, 'firstDayOfYear'); - }); - - test('instance locale method', function (assert) { - moment.locale('en'); - - assert.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Normally default to global'); - assert.equal(moment([2012, 5, 6]).locale('es').format('MMMM'), 'Junio', 'Use the instance specific locale'); - assert.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Using an instance specific locale does not affect other moments'); - }); - - test('instance locale method with array', function (assert) { - var m = moment().locale(['non-existent', 'fr', 'also-non-existent']); - assert.equal(m.locale(), 'fr', 'passing an array uses the first valid locale'); - m = moment().locale(['es', 'fr', 'also-non-existent']); - assert.equal(m.locale(), 'es', 'passing an array uses the first valid locale'); - }); - - test('instance getter locale substrings', function (assert) { - var m = moment(); - - m.locale('fr-crap'); - assert.equal(m.locale(), 'fr', 'use substrings'); - - m.locale('fr-does-not-exist'); - assert.equal(m.locale(), 'fr', 'uses deep substrings'); - }); - - test('instance locale persists with manipulation', function (assert) { - moment.locale('en'); - - assert.equal(moment([2012, 5, 6]).locale('es').add({days: 1}).format('MMMM'), 'Junio', 'With addition'); - assert.equal(moment([2012, 5, 6]).locale('es').day(0).format('MMMM'), 'Junio', 'With day getter'); - assert.equal(moment([2012, 5, 6]).locale('es').endOf('day').format('MMMM'), 'Junio', 'With endOf'); - }); - - test('instance locale persists with cloning', function (assert) { - moment.locale('en'); - - var a = moment([2012, 5, 6]).locale('es'), - b = a.clone(), - c = moment(a); - - assert.equal(b.format('MMMM'), 'Junio', 'using moment.fn.clone()'); - assert.equal(b.format('MMMM'), 'Junio', 'using moment()'); - }); - - test('duration locale method', function (assert) { - moment.locale('en'); - - assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Normally default to global'); - assert.equal(moment.duration({seconds: 44}).locale('es').humanize(), 'unos segundos', 'Use the instance specific locale'); - assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Using an instance specific locale does not affect other durations'); - }); - - test('duration locale persists with cloning', function (assert) { - moment.locale('en'); - - var a = moment.duration({seconds: 44}).locale('es'), - b = moment.duration(a); - - assert.equal(b.humanize(), 'unos segundos', 'using moment.duration()'); - }); - - test('changing the global locale doesn\'t affect existing duration instances', function (assert) { - var mom = moment.duration(); - moment.locale('fr'); - assert.equal('en', mom.locale()); - }); - - test('duration deprecations', function (assert) { - assert.equal(moment.duration().lang(), moment.duration().localeData(), 'duration.lang is the same as duration.localeData'); - }); - - test('from and fromNow with invalid date', function (assert) { - assert.equal(moment(NaN).from(), 'Invalid date', 'moment.from with invalid moment'); - assert.equal(moment(NaN).fromNow(), 'Invalid date', 'moment.fromNow with invalid moment'); - }); - - test('from relative time future', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 44})), 'in a few seconds', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 45})), 'in a minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 89})), 'in a minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 90})), 'in 2 minutes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 44})), 'in 44 minutes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 45})), 'in an hour', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 89})), 'in an hour', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 90})), 'in 2 hours', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 5})), 'in 5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 21})), 'in 21 hours', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 22})), 'in a day', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 35})), 'in a day', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 36})), 'in 2 days', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 1})), 'in a day', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 5})), 'in 5 days', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 25})), 'in 25 days', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 26})), 'in a month', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 30})), 'in a month', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 45})), 'in a month', '45 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 47})), 'in 2 months', '47 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 74})), 'in 2 months', '74 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 78})), 'in 3 months', '78 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({M: 1})), 'in a month', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({M: 5})), 'in 5 months', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 315})), 'in 10 months', '315 days = 10 months'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 344})), 'in a year', '344 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 345})), 'in a year', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 548})), 'in 2 years', '548 days = in 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({y: 1})), 'in a year', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({y: 5})), 'in 5 years', '5 years = 5 years'); - }); - - test('from relative time past', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44})), 'a few seconds ago', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45})), 'a minute ago', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89})), 'a minute ago', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90})), '2 minutes ago', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44})), '44 minutes ago', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45})), 'an hour ago', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89})), 'an hour ago', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90})), '2 hours ago', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5})), '5 hours ago', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21})), '21 hours ago', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22})), 'a day ago', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35})), 'a day ago', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36})), '2 days ago', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1})), 'a day ago', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5})), '5 days ago', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25})), '25 days ago', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26})), 'a month ago', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30})), 'a month ago', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43})), 'a month ago', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46})), '2 months ago', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74})), '2 months ago', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76})), '3 months ago', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1})), 'a month ago', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5})), '5 months ago', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 315})), '10 months ago', '315 days = 10 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 344})), 'a year ago', '344 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345})), 'a year ago', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548})), '2 years ago', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1})), 'a year ago', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5})), '5 years ago', '5 years = 5 years'); - }); - - test('instance locale used with from', function (assert) { - moment.locale('en'); - - var a = moment([2012, 5, 6]).locale('es'), - b = moment([2012, 5, 7]); - - assert.equal(a.from(b), 'hace un día', 'preserve locale of first moment'); - assert.equal(b.from(a), 'in a day', 'do not preserve locale of second moment'); - }); - - test('instance localeData', function (assert) { - moment.defineLocale('dude', {week: {dow: 3}}); - assert.equal(moment().locale('dude').localeData()._week.dow, 3); - }); - - test('month name callback function', function (assert) { - function fakeReplace(m, format) { - if (/test/.test(format)) { - return 'test'; - } - if (m.date() === 1) { - return 'date'; - } - return 'default'; - } - - moment.locale('made-up-2', { - months : fakeReplace, - monthsShort : fakeReplace, - weekdays : fakeReplace, - weekdaysShort : fakeReplace, - weekdaysMin : fakeReplace - }); - - assert.equal(moment().format('[test] dd ddd dddd MMM MMMM'), 'test test test test test test', 'format month name function should be able to access the format string'); - assert.equal(moment([2011, 0, 1]).format('dd ddd dddd MMM MMMM'), 'date date date date date', 'format month name function should be able to access the moment object'); - assert.equal(moment([2011, 0, 2]).format('dd ddd dddd MMM MMMM'), 'default default default default default', 'format month name function should be able to access the moment object'); - }); - - test('changing parts of a locale config', function (assert) { - moment.locale('partial-lang', { - months : 'a b c d e f g h i j k l'.split(' ') - }); - - assert.equal(moment([2011, 0, 1]).format('MMMM'), 'a', 'should be able to set locale values when creating the localeuage'); - - moment.locale('partial-lang', { - monthsShort : 'A B C D E F G H I J K L'.split(' ') - }); - - assert.equal(moment([2011, 0, 1]).format('MMMM MMM'), 'a A', 'should be able to set locale values after creating the localeuage'); - }); - - test('start/endOf week feature for first-day-is-monday locales', function (assert) { - moment.locale('monday-lang', { - week : { - dow : 1 // Monday is the first day of the week - } - }); - - moment.locale('monday-lang'); - assert.equal(moment([2013, 0, 1]).startOf('week').day(), 1, 'for locale monday-lang first day of the week should be monday'); - assert.equal(moment([2013, 0, 1]).endOf('week').day(), 0, 'for locale monday-lang last day of the week should be sunday'); - }); - - test('meridiem parsing', function (assert) { - moment.locale('meridiem-parsing', { - meridiemParse : /[bd]/i, - isPM : function (input) { - return input === 'b'; - } - }); - - moment.locale('meridiem-parsing'); - assert.equal(moment('2012-01-01 3b', 'YYYY-MM-DD ha').hour(), 15, 'Custom parsing of meridiem should work'); - assert.equal(moment('2012-01-01 3d', 'YYYY-MM-DD ha').hour(), 3, 'Custom parsing of meridiem should work'); - }); - - test('invalid date formatting', function (assert) { - moment.locale('has-invalid', { - invalidDate: 'KHAAAAAAAAAAAN!' - }); - - assert.equal(moment.invalid().format(), 'KHAAAAAAAAAAAN!'); - assert.equal(moment.invalid().format('YYYY-MM-DD'), 'KHAAAAAAAAAAAN!'); - }); - - test('return locale name', function (assert) { - var registered = moment.locale('return-this', {}); - - assert.equal(registered, 'return-this', 'returns the locale configured'); - }); - - test('changing the global locale doesn\'t affect existing instances', function (assert) { - var mom = moment(); - moment.locale('fr'); - assert.equal('en', mom.locale()); - }); - - test('setting a language on instance returns the original moment for chaining', function (assert) { - var mom = moment(); - - assert.equal(mom.lang('fr'), mom, 'setting the language (lang) returns the original moment for chaining'); - assert.equal(mom.locale('it'), mom, 'setting the language (locale) returns the original moment for chaining'); - }); - - test('lang(key) changes the language of the instance', function (assert) { - var m = moment().month(0); - m.lang('fr'); - assert.equal(m.locale(), 'fr', 'm.lang(key) changes instance locale'); - }); - - test('moment#locale(false) resets to global locale', function (assert) { - var m = moment(); - - moment.locale('fr'); - m.locale('it'); - - assert.equal(moment.locale(), 'fr', 'global locale is it'); - assert.equal(m.locale(), 'it', 'instance locale is it'); - m.locale(false); - assert.equal(m.locale(), 'fr', 'instance locale reset to global locale'); - }); - - test('moment().locale with missing key doesn\'t change locale', function (assert) { - assert.equal(moment().locale('boo').localeData(), moment.localeData(), - 'preserve global locale in case of bad locale id'); - }); - - test('moment().lang with missing key doesn\'t change locale', function (assert) { - assert.equal(moment().lang('boo').localeData(), moment.localeData(), - 'preserve global locale in case of bad locale id'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('min max'); - - test('min', function (assert) { - var now = moment(), - future = now.clone().add(1, 'month'), - past = now.clone().subtract(1, 'month'), - invalid = moment.invalid(); - - assert.equal(moment.min(now, future, past), past, 'min(now, future, past)'); - assert.equal(moment.min(future, now, past), past, 'min(future, now, past)'); - assert.equal(moment.min(future, past, now), past, 'min(future, past, now)'); - assert.equal(moment.min(past, future, now), past, 'min(past, future, now)'); - assert.equal(moment.min(now, past), past, 'min(now, past)'); - assert.equal(moment.min(past, now), past, 'min(past, now)'); - assert.equal(moment.min(now), now, 'min(now, past)'); - - assert.equal(moment.min([now, future, past]), past, 'min([now, future, past])'); - assert.equal(moment.min([now, past]), past, 'min(now, past)'); - assert.equal(moment.min([now]), now, 'min(now)'); - - assert.equal(moment.min([now, invalid]), invalid, 'min(now, invalid)'); - assert.equal(moment.min([invalid, now]), invalid, 'min(invalid, now)'); - }); - - test('max', function (assert) { - var now = moment(), - future = now.clone().add(1, 'month'), - past = now.clone().subtract(1, 'month'), - invalid = moment.invalid(); - - assert.equal(moment.max(now, future, past), future, 'max(now, future, past)'); - assert.equal(moment.max(future, now, past), future, 'max(future, now, past)'); - assert.equal(moment.max(future, past, now), future, 'max(future, past, now)'); - assert.equal(moment.max(past, future, now), future, 'max(past, future, now)'); - assert.equal(moment.max(now, past), now, 'max(now, past)'); - assert.equal(moment.max(past, now), now, 'max(past, now)'); - assert.equal(moment.max(now), now, 'max(now, past)'); - - assert.equal(moment.max([now, future, past]), future, 'max([now, future, past])'); - assert.equal(moment.max([now, past]), now, 'max(now, past)'); - assert.equal(moment.max([now]), now, 'max(now)'); - - assert.equal(moment.max([now, invalid]), invalid, 'max(now, invalid)'); - assert.equal(moment.max([invalid, now]), invalid, 'max(invalid, now)'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('mutable'); - - test('manipulation methods', function (assert) { - var m = moment(); - - assert.equal(m, m.year(2011), 'year() should be mutable'); - assert.equal(m, m.month(1), 'month() should be mutable'); - assert.equal(m, m.hours(7), 'hours() should be mutable'); - assert.equal(m, m.minutes(33), 'minutes() should be mutable'); - assert.equal(m, m.seconds(44), 'seconds() should be mutable'); - assert.equal(m, m.milliseconds(55), 'milliseconds() should be mutable'); - assert.equal(m, m.day(2), 'day() should be mutable'); - assert.equal(m, m.startOf('week'), 'startOf() should be mutable'); - assert.equal(m, m.add(1, 'days'), 'add() should be mutable'); - assert.equal(m, m.subtract(2, 'years'), 'subtract() should be mutable'); - assert.equal(m, m.local(), 'local() should be mutable'); - assert.equal(m, m.utc(), 'utc() should be mutable'); - }); - - test('non mutable methods', function (assert) { - var m = moment(); - assert.notEqual(m, m.clone(), 'clone() should not be mutable'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('normalize units'); - - test('normalize units', function (assert) { - var fullKeys = ['year', 'quarter', 'month', 'isoWeek', 'week', 'day', 'hour', 'minute', 'second', 'millisecond', 'date', 'dayOfYear', 'weekday', 'isoWeekday', 'weekYear', 'isoWeekYear'], - aliases = ['y', 'Q', 'M', 'W', 'w', 'd', 'h', 'm', 's', 'ms', 'D', 'DDD', 'e', 'E', 'gg', 'GG'], - length = fullKeys.length, - fullKey, - fullKeyCaps, - fullKeyPlural, - fullKeyCapsPlural, - fullKeyLower, - alias, - index; - - for (index = 0; index < length; index += 1) { - fullKey = fullKeys[index]; - fullKeyCaps = fullKey.toUpperCase(); - fullKeyLower = fullKey.toLowerCase(); - fullKeyPlural = fullKey + 's'; - fullKeyCapsPlural = fullKeyCaps + 's'; - alias = aliases[index]; - assert.equal(moment.normalizeUnits(fullKey), fullKey, 'Testing full key ' + fullKey); - assert.equal(moment.normalizeUnits(fullKeyCaps), fullKey, 'Testing full key capitalised ' + fullKey); - assert.equal(moment.normalizeUnits(fullKeyPlural), fullKey, 'Testing full key plural ' + fullKey); - assert.equal(moment.normalizeUnits(fullKeyCapsPlural), fullKey, 'Testing full key capitalised and plural ' + fullKey); - assert.equal(moment.normalizeUnits(alias), fullKey, 'Testing alias ' + fullKey); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('parsing flags'); - - function flags () { - return moment.apply(null, arguments).parsingFlags(); - } - - test('overflow with array', function (assert) { - //months - assert.equal(flags([2010, 0]).overflow, -1, 'month 0 valid'); - assert.equal(flags([2010, 1]).overflow, -1, 'month 1 valid'); - assert.equal(flags([2010, -1]).overflow, 1, 'month -1 invalid'); - assert.equal(flags([2100, 12]).overflow, 1, 'month 12 invalid'); - - //days - assert.equal(flags([2010, 1, 16]).overflow, -1, 'date valid'); - assert.equal(flags([2010, 1, -1]).overflow, 2, 'date -1 invalid'); - assert.equal(flags([2010, 1, 0]).overflow, 2, 'date 0 invalid'); - assert.equal(flags([2010, 1, 32]).overflow, 2, 'date 32 invalid'); - assert.equal(flags([2012, 1, 29]).overflow, -1, 'date leap year valid'); - assert.equal(flags([2010, 1, 29]).overflow, 2, 'date leap year invalid'); - - //hours - assert.equal(flags([2010, 1, 1, 8]).overflow, -1, 'hour valid'); - assert.equal(flags([2010, 1, 1, 0]).overflow, -1, 'hour 0 valid'); - assert.equal(flags([2010, 1, 1, -1]).overflow, 3, 'hour -1 invalid'); - assert.equal(flags([2010, 1, 1, 25]).overflow, 3, 'hour 25 invalid'); - assert.equal(flags([2010, 1, 1, 24, 1]).overflow, 3, 'hour 24:01 invalid'); - - //minutes - assert.equal(flags([2010, 1, 1, 8, 15]).overflow, -1, 'minute valid'); - assert.equal(flags([2010, 1, 1, 8, 0]).overflow, -1, 'minute 0 valid'); - assert.equal(flags([2010, 1, 1, 8, -1]).overflow, 4, 'minute -1 invalid'); - assert.equal(flags([2010, 1, 1, 8, 60]).overflow, 4, 'minute 60 invalid'); - - //seconds - assert.equal(flags([2010, 1, 1, 8, 15, 12]).overflow, -1, 'second valid'); - assert.equal(flags([2010, 1, 1, 8, 15, 0]).overflow, -1, 'second 0 valid'); - assert.equal(flags([2010, 1, 1, 8, 15, -1]).overflow, 5, 'second -1 invalid'); - assert.equal(flags([2010, 1, 1, 8, 15, 60]).overflow, 5, 'second 60 invalid'); - - //milliseconds - assert.equal(flags([2010, 1, 1, 8, 15, 12, 345]).overflow, -1, 'millisecond valid'); - assert.equal(flags([2010, 1, 1, 8, 15, 12, 0]).overflow, -1, 'millisecond 0 valid'); - assert.equal(flags([2010, 1, 1, 8, 15, 12, -1]).overflow, 6, 'millisecond -1 invalid'); - assert.equal(flags([2010, 1, 1, 8, 15, 12, 1000]).overflow, 6, 'millisecond 1000 invalid'); - - // 24 hrs - assert.equal(flags([2010, 1, 1, 24, 0, 0, 0]).overflow, -1, '24:00:00.000 is fine'); - assert.equal(flags([2010, 1, 1, 24, 1, 0, 0]).overflow, 3, '24:01:00.000 is wrong hour'); - assert.equal(flags([2010, 1, 1, 24, 0, 1, 0]).overflow, 3, '24:00:01.000 is wrong hour'); - assert.equal(flags([2010, 1, 1, 24, 0, 0, 1]).overflow, 3, '24:00:00.001 is wrong hour'); - }); - - test('overflow without format', function (assert) { - //months - assert.equal(flags('2001-01', 'YYYY-MM').overflow, -1, 'month 1 valid'); - assert.equal(flags('2001-12', 'YYYY-MM').overflow, -1, 'month 12 valid'); - assert.equal(flags('2001-13', 'YYYY-MM').overflow, 1, 'month 13 invalid'); - - //days - assert.equal(flags('2010-01-16', 'YYYY-MM-DD').overflow, -1, 'date 16 valid'); - assert.equal(flags('2010-01-0', 'YYYY-MM-DD').overflow, 2, 'date 0 invalid'); - assert.equal(flags('2010-01-32', 'YYYY-MM-DD').overflow, 2, 'date 32 invalid'); - assert.equal(flags('2012-02-29', 'YYYY-MM-DD').overflow, -1, 'date leap year valid'); - assert.equal(flags('2010-02-29', 'YYYY-MM-DD').overflow, 2, 'date leap year invalid'); - - //days of the year - assert.equal(flags('2010 300', 'YYYY DDDD').overflow, -1, 'day 300 of year valid'); - assert.equal(flags('2010 365', 'YYYY DDDD').overflow, -1, 'day 365 of year valid'); - assert.equal(flags('2010 366', 'YYYY DDDD').overflow, 2, 'day 366 of year invalid'); - assert.equal(flags('2012 366', 'YYYY DDDD').overflow, -1, 'day 366 of leap year valid'); - assert.equal(flags('2012 367', 'YYYY DDDD').overflow, 2, 'day 367 of leap year invalid'); - - //hours - assert.equal(flags('08', 'HH').overflow, -1, 'hour valid'); - assert.equal(flags('00', 'HH').overflow, -1, 'hour 0 valid'); - assert.equal(flags('25', 'HH').overflow, 3, 'hour 25 invalid'); - assert.equal(flags('24:01', 'HH:mm').overflow, 3, 'hour 24:01 invalid'); - - //minutes - assert.equal(flags('08:15', 'HH:mm').overflow, -1, 'minute valid'); - assert.equal(flags('08:00', 'HH:mm').overflow, -1, 'minute 0 valid'); - assert.equal(flags('08:60', 'HH:mm').overflow, 4, 'minute 60 invalid'); - - //seconds - assert.equal(flags('08:15:12', 'HH:mm:ss').overflow, -1, 'second valid'); - assert.equal(flags('08:15:00', 'HH:mm:ss').overflow, -1, 'second 0 valid'); - assert.equal(flags('08:15:60', 'HH:mm:ss').overflow, 5, 'second 60 invalid'); - - //milliseconds - assert.equal(flags('08:15:12:345', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond valid'); - assert.equal(flags('08:15:12:000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 0 valid'); - - //this is OK because we don't match the last digit, so it's 100 ms - assert.equal(flags('08:15:12:1000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 1000 actually valid'); - }); - - test('extra tokens', function (assert) { - assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedTokens, [], 'nothing extra'); - assert.deepEqual(flags('1982-05', 'YYYY-MM-DD').unusedTokens, ['DD'], 'extra formatting token'); - assert.deepEqual(flags('1982', 'YYYY-MM-DD').unusedTokens, ['MM', 'DD'], 'multiple extra formatting tokens'); - assert.deepEqual(flags('1982-05', 'YYYY-MM-').unusedTokens, [], 'extra non-formatting token'); - assert.deepEqual(flags('1982-05-', 'YYYY-MM-DD').unusedTokens, ['DD'], 'non-extra non-formatting token'); - assert.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD').unusedTokens, [], 'different non-formatting token'); - }); - - test('extra tokens strict', function (assert) { - assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedTokens, [], 'nothing extra'); - assert.deepEqual(flags('1982-05', 'YYYY-MM-DD', true).unusedTokens, ['-', 'DD'], 'extra formatting token'); - assert.deepEqual(flags('1982', 'YYYY-MM-DD', true).unusedTokens, ['-', 'MM', '-', 'DD'], 'multiple extra formatting tokens'); - assert.deepEqual(flags('1982-05', 'YYYY-MM-', true).unusedTokens, ['-'], 'extra non-formatting token'); - assert.deepEqual(flags('1982-05-', 'YYYY-MM-DD', true).unusedTokens, ['DD'], 'non-extra non-formatting token'); - assert.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD', true).unusedTokens, ['-', '-'], 'different non-formatting token'); - }); - - test('unused input', function (assert) { - assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedInput, [], 'normal input'); - assert.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').unusedInput, [' this is more stuff'], 'trailing nonsense'); - assert.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD').unusedInput, [' 09:30'], ['trailing legit-looking input']); - assert.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]').unusedInput, [], 'junk that actually gets matched'); - assert.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').unusedInput, ['stuff at beginning '], 'leading junk'); - assert.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD').unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk'); - }); - - test('unused input strict', function (assert) { - assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedInput, [], 'normal input'); - assert.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD', true).unusedInput, [' this is more stuff'], 'trailing nonsense'); - assert.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD', true).unusedInput, [' 09:30'], ['trailing legit-looking input']); - assert.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]', true).unusedInput, [], 'junk that actually gets matched'); - assert.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD', true).unusedInput, ['stuff at beginning '], 'leading junk'); - assert.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD', true).unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk'); - }); - - test('chars left over', function (assert) { - assert.equal(flags('1982-05-25', 'YYYY-MM-DD').charsLeftOver, 0, 'normal input'); - assert.equal(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').charsLeftOver, ' this is more stuff'.length, 'trailing nonsense'); - assert.equal(flags('1982-05-25 09:30', 'YYYY-MM-DD').charsLeftOver, ' 09:30'.length, 'trailing legit-looking input'); - assert.equal(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').charsLeftOver, 'stuff at beginning '.length, 'leading junk'); - assert.equal(flags('1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, [' junk ', ' more junk'].join('').length, 'interstitial junk'); - assert.equal(flags('stuff at beginning 1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, ['stuff at beginning ', ' junk ', ' more junk'].join('').length, 'leading and interstitial junk'); - }); - - test('empty', function (assert) { - assert.equal(flags('1982-05-25', 'YYYY-MM-DD').empty, false, 'normal input'); - assert.equal(flags('nothing here', 'YYYY-MM-DD').empty, true, 'pure garbage'); - assert.equal(flags('junk but has the number 2000 in it', 'YYYY-MM-DD').empty, false, 'only mostly garbage'); - assert.equal(flags('', 'YYYY-MM-DD').empty, true, 'empty string'); - assert.equal(flags('', 'YYYY-MM-DD').empty, true, 'blank string'); - }); - - test('null', function (assert) { - assert.equal(flags('1982-05-25', 'YYYY-MM-DD').nullInput, false, 'normal input'); - assert.equal(flags(null).nullInput, true, 'just null'); - assert.equal(flags(null, 'YYYY-MM-DD').nullInput, true, 'null with format'); - }); - - test('invalid month', function (assert) { - assert.equal(flags('1982 May', 'YYYY MMMM').invalidMonth, null, 'normal input'); - assert.equal(flags('1982 Laser', 'YYYY MMMM').invalidMonth, 'Laser', 'bad month name'); - }); - - test('empty format array', function (assert) { - assert.equal(flags('1982 May', ['YYYY MMM']).invalidFormat, false, 'empty format array'); - assert.equal(flags('1982 May', []).invalidFormat, true, 'empty format array'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - var symbolMap = { - '1': '!', - '2': '@', - '3': '#', - '4': '$', - '5': '%', - '6': '^', - '7': '&', - '8': '*', - '9': '(', - '0': ')' - }, - numberMap = { - '!': '1', - '@': '2', - '#': '3', - '$': '4', - '%': '5', - '^': '6', - '&': '7', - '*': '8', - '(': '9', - ')': '0' - }; - - module('preparse and postformat', { - setup: function () { - moment.locale('symbol', { - preparse: function (string) { - return string.replace(/[!@#$%\^&*()]/g, function (match) { - return numberMap[match]; - }); - }, - - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - } - }); - } - }); - - test('transform', function (assert) { - assert.equal(moment.utc('@)!@-)*-@&', 'YYYY-MM-DD').unix(), 1346025600, 'preparse string + format'); - assert.equal(moment.utc('@)!@-)*-@&').unix(), 1346025600, 'preparse ISO8601 string'); - assert.equal(moment.unix(1346025600).utc().format('YYYY-MM-DD'), '@)!@-)*-@&', 'postformat'); - }); - - test('transform from', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '@ minutes', 'postformat should work on moment.fn.from'); - assert.equal(moment().add(6, 'd').fromNow(true), '^ days', 'postformat should work on moment.fn.fromNow'); - assert.equal(moment.duration(10, 'h').humanize(), '!) hours', 'postformat should work on moment.duration.fn.humanize'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Today at @:)) AM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at @:@% AM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at #:)) AM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at @:)) AM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at !:)) AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at @:)) AM', 'yesterday at the same time'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('quarter'); - - test('library quarter getter', function (assert) { - assert.equal(moment([1985, 1, 4]).quarter(), 1, 'Feb 4 1985 is Q1'); - assert.equal(moment([2029, 8, 18]).quarter(), 3, 'Sep 18 2029 is Q3'); - assert.equal(moment([2013, 3, 24]).quarter(), 2, 'Apr 24 2013 is Q2'); - assert.equal(moment([2015, 2, 5]).quarter(), 1, 'Mar 5 2015 is Q1'); - assert.equal(moment([1970, 0, 2]).quarter(), 1, 'Jan 2 1970 is Q1'); - assert.equal(moment([2001, 11, 12]).quarter(), 4, 'Dec 12 2001 is Q4'); - assert.equal(moment([2000, 0, 2]).quarter(), 1, 'Jan 2 2000 is Q1'); - }); - - test('quarter setter singular', function (assert) { - var m = moment([2014, 4, 11]); - assert.equal(m.quarter(2).month(), 4, 'set same quarter'); - assert.equal(m.quarter(3).month(), 7, 'set 3rd quarter'); - assert.equal(m.quarter(1).month(), 1, 'set 1st quarter'); - assert.equal(m.quarter(4).month(), 10, 'set 4th quarter'); - }); - - test('quarter setter plural', function (assert) { - var m = moment([2014, 4, 11]); - assert.equal(m.quarters(2).month(), 4, 'set same quarter'); - assert.equal(m.quarters(3).month(), 7, 'set 3rd quarter'); - assert.equal(m.quarters(1).month(), 1, 'set 1st quarter'); - assert.equal(m.quarters(4).month(), 10, 'set 4th quarter'); - }); - - test('quarter setter programmatic', function (assert) { - var m = moment([2014, 4, 11]); - assert.equal(m.set('quarter', 2).month(), 4, 'set same quarter'); - assert.equal(m.set('quarter', 3).month(), 7, 'set 3rd quarter'); - assert.equal(m.set('quarter', 1).month(), 1, 'set 1st quarter'); - assert.equal(m.set('quarter', 4).month(), 10, 'set 4th quarter'); - }); - - test('quarter setter programmatic plural', function (assert) { - var m = moment([2014, 4, 11]); - assert.equal(m.set('quarters', 2).month(), 4, 'set same quarter'); - assert.equal(m.set('quarters', 3).month(), 7, 'set 3rd quarter'); - assert.equal(m.set('quarters', 1).month(), 1, 'set 1st quarter'); - assert.equal(m.set('quarters', 4).month(), 10, 'set 4th quarter'); - }); - - test('quarter setter programmatic abbr', function (assert) { - var m = moment([2014, 4, 11]); - assert.equal(m.set('Q', 2).month(), 4, 'set same quarter'); - assert.equal(m.set('Q', 3).month(), 7, 'set 3rd quarter'); - assert.equal(m.set('Q', 1).month(), 1, 'set 1st quarter'); - assert.equal(m.set('Q', 4).month(), 10, 'set 4th quarter'); - }); - - test('quarter setter only month changes', function (assert) { - var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(4); - assert.equal(m.year(), 2014, 'keep year'); - assert.equal(m.month(), 10, 'set month'); - assert.equal(m.date(), 11, 'keep date'); - assert.equal(m.hour(), 1, 'keep hour'); - assert.equal(m.minute(), 2, 'keep minutes'); - assert.equal(m.second(), 3, 'keep seconds'); - assert.equal(m.millisecond(), 4, 'keep milliseconds'); - }); - - test('quarter setter bubble to next year', function (assert) { - var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(7); - assert.equal(m.year(), 2015, 'year bubbled'); - assert.equal(m.month(), 7, 'set month'); - assert.equal(m.date(), 11, 'keep date'); - assert.equal(m.hour(), 1, 'keep hour'); - assert.equal(m.minute(), 2, 'keep minutes'); - assert.equal(m.second(), 3, 'keep seconds'); - assert.equal(m.millisecond(), 4, 'keep milliseconds'); - }); - - test('quarter diff', function (assert) { - assert.equal(moment('2014-01-01').diff(moment('2014-04-01'), 'quarter'), - -1, 'diff -1 quarter'); - assert.equal(moment('2014-04-01').diff(moment('2014-01-01'), 'quarter'), - 1, 'diff 1 quarter'); - assert.equal(moment('2014-05-01').diff(moment('2014-01-01'), 'quarter'), - 1, 'diff 1 quarter'); - assert.ok(Math.abs((4 / 3) - moment('2014-05-01').diff( - moment('2014-01-01'), 'quarter', true)) < 0.00001, - 'diff 1 1/3 quarter'); - assert.equal(moment('2015-01-01').diff(moment('2014-01-01'), 'quarter'), - 4, 'diff 4 quarters'); - }); - - test('quarter setter bubble to previous year', function (assert) { - var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(-3); - assert.equal(m.year(), 2013, 'year bubbled'); - assert.equal(m.month(), 1, 'set month'); - assert.equal(m.date(), 11, 'keep date'); - assert.equal(m.hour(), 1, 'keep hour'); - assert.equal(m.minute(), 2, 'keep minutes'); - assert.equal(m.second(), 3, 'keep seconds'); - assert.equal(m.millisecond(), 4, 'keep milliseconds'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('relative time'); - - test('default thresholds fromNow', function (assert) { - var a = moment(); - - // Seconds to minutes threshold - a.subtract(44, 'seconds'); - assert.equal(a.fromNow(), 'a few seconds ago', 'Below default seconds to minutes threshold'); - a.subtract(1, 'seconds'); - assert.equal(a.fromNow(), 'a minute ago', 'Above default seconds to minutes threshold'); - - // Minutes to hours threshold - a = moment(); - a.subtract(44, 'minutes'); - assert.equal(a.fromNow(), '44 minutes ago', 'Below default minute to hour threshold'); - a.subtract(1, 'minutes'); - assert.equal(a.fromNow(), 'an hour ago', 'Above default minute to hour threshold'); - - // Hours to days threshold - a = moment(); - a.subtract(21, 'hours'); - assert.equal(a.fromNow(), '21 hours ago', 'Below default hours to day threshold'); - a.subtract(1, 'hours'); - assert.equal(a.fromNow(), 'a day ago', 'Above default hours to day threshold'); - - // Days to month threshold - a = moment(); - a.subtract(25, 'days'); - assert.equal(a.fromNow(), '25 days ago', 'Below default days to month (singular) threshold'); - a.subtract(1, 'days'); - assert.equal(a.fromNow(), 'a month ago', 'Above default days to month (singular) threshold'); - - // months to year threshold - a = moment(); - a.subtract(10, 'months'); - assert.equal(a.fromNow(), '10 months ago', 'Below default days to years threshold'); - a.subtract(1, 'month'); - assert.equal(a.fromNow(), 'a year ago', 'Above default days to years threshold'); - }); - - test('default thresholds toNow', function (assert) { - var a = moment(); - - // Seconds to minutes threshold - a.subtract(44, 'seconds'); - assert.equal(a.toNow(), 'in a few seconds', 'Below default seconds to minutes threshold'); - a.subtract(1, 'seconds'); - assert.equal(a.toNow(), 'in a minute', 'Above default seconds to minutes threshold'); - - // Minutes to hours threshold - a = moment(); - a.subtract(44, 'minutes'); - assert.equal(a.toNow(), 'in 44 minutes', 'Below default minute to hour threshold'); - a.subtract(1, 'minutes'); - assert.equal(a.toNow(), 'in an hour', 'Above default minute to hour threshold'); - - // Hours to days threshold - a = moment(); - a.subtract(21, 'hours'); - assert.equal(a.toNow(), 'in 21 hours', 'Below default hours to day threshold'); - a.subtract(1, 'hours'); - assert.equal(a.toNow(), 'in a day', 'Above default hours to day threshold'); - - // Days to month threshold - a = moment(); - a.subtract(25, 'days'); - assert.equal(a.toNow(), 'in 25 days', 'Below default days to month (singular) threshold'); - a.subtract(1, 'days'); - assert.equal(a.toNow(), 'in a month', 'Above default days to month (singular) threshold'); - - // months to year threshold - a = moment(); - a.subtract(10, 'months'); - assert.equal(a.toNow(), 'in 10 months', 'Below default days to years threshold'); - a.subtract(1, 'month'); - assert.equal(a.toNow(), 'in a year', 'Above default days to years threshold'); - }); - - test('custom thresholds', function (assert) { - // Seconds to minutes threshold - moment.relativeTimeThreshold('s', 55); - - var a = moment(); - a.subtract(54, 'seconds'); - assert.equal(a.fromNow(), 'a few seconds ago', 'Below custom seconds to minutes threshold'); - a.subtract(1, 'seconds'); - assert.equal(a.fromNow(), 'a minute ago', 'Above custom seconds to minutes threshold'); - - moment.relativeTimeThreshold('s', 45); - - // Minutes to hours threshold - moment.relativeTimeThreshold('m', 55); - a = moment(); - a.subtract(54, 'minutes'); - assert.equal(a.fromNow(), '54 minutes ago', 'Below custom minutes to hours threshold'); - a.subtract(1, 'minutes'); - assert.equal(a.fromNow(), 'an hour ago', 'Above custom minutes to hours threshold'); - moment.relativeTimeThreshold('m', 45); - - // Hours to days threshold - moment.relativeTimeThreshold('h', 24); - a = moment(); - a.subtract(23, 'hours'); - assert.equal(a.fromNow(), '23 hours ago', 'Below custom hours to days threshold'); - a.subtract(1, 'hours'); - assert.equal(a.fromNow(), 'a day ago', 'Above custom hours to days threshold'); - moment.relativeTimeThreshold('h', 22); - - // Days to month threshold - moment.relativeTimeThreshold('d', 28); - a = moment(); - a.subtract(27, 'days'); - assert.equal(a.fromNow(), '27 days ago', 'Below custom days to month (singular) threshold'); - a.subtract(1, 'days'); - assert.equal(a.fromNow(), 'a month ago', 'Above custom days to month (singular) threshold'); - moment.relativeTimeThreshold('d', 26); - - // months to years threshold - moment.relativeTimeThreshold('M', 9); - a = moment(); - a.subtract(8, 'months'); - assert.equal(a.fromNow(), '8 months ago', 'Below custom days to years threshold'); - a.subtract(1, 'months'); - assert.equal(a.fromNow(), 'a year ago', 'Above custom days to years threshold'); - moment.relativeTimeThreshold('M', 11); - }); - - test('retrive threshold settings', function (assert) { - moment.relativeTimeThreshold('m', 45); - var minuteThreshold = moment.relativeTimeThreshold('m'); - - assert.equal(minuteThreshold, 45, 'Can retrieve minute setting'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('start and end of units'); - - test('start of year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('year'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('years'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('y'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 0, 'strip out the month'); - assert.equal(m.date(), 1, 'strip out the day'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); - }); - - test('end of year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('year'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('years'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('y'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 11, 'set the month'); - assert.equal(m.date(), 31, 'set the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); - }); - - test('start of quarter', function (assert) { - var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarter'), - ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarters'), - ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('Q'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.quarter(), 2, 'keep the quarter'); - assert.equal(m.month(), 3, 'strip out the month'); - assert.equal(m.date(), 1, 'strip out the day'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); - }); - - test('end of quarter', function (assert) { - var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarter'), - ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarters'), - ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('Q'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.quarter(), 2, 'keep the quarter'); - assert.equal(m.month(), 5, 'set the month'); - assert.equal(m.date(), 30, 'set the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); - }); - - test('start of month', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('month'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('months'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('M'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 1, 'strip out the day'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); - }); - - test('end of month', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('month'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('months'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('M'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 28, 'set the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); - }); - - test('start of week', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('week'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('weeks'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('w'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 0, 'rolls back to January'); - assert.equal(m.day(), 0, 'set day of week'); - assert.equal(m.date(), 30, 'set correct date'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); - }); - - test('end of week', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('week'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.day(), 6, 'set the day of the week'); - assert.equal(m.date(), 5, 'set the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); - }); - - test('start of iso-week', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeek'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeeks'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('W'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 0, 'rollback to January'); - assert.equal(m.isoWeekday(), 1, 'set day of iso-week'); - assert.equal(m.date(), 31, 'set correct date'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); - }); - - test('end of iso-week', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeek'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeeks'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('W'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.isoWeekday(), 7, 'set the day of the week'); - assert.equal(m.date(), 6, 'set the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); - }); - - test('start of day', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('day'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('days'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('d'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); - }); - - test('end of day', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('day'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('days'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('d'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); - }); - - test('start of hour', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hour'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hours'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('h'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); - }); - - test('end of hour', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hour'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hours'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('h'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); - }); - - test('start of minute', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minute'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minutes'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('m'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 4, 'keep the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); - }); - - test('end of minute', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minute'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minutes'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('m'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 4, 'keep the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); - }); - - test('start of second', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('second'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('seconds'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('s'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 4, 'keep the minutes'); - assert.equal(m.seconds(), 5, 'keep the the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); - }); - - test('end of second', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('second'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('seconds'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('s'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 4, 'keep the minutes'); - assert.equal(m.seconds(), 5, 'keep the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); - }); - - test('startOf across DST +1', function (assert) { - var oldUpdateOffset = moment.updateOffset, - // Based on a real story somewhere in America/Los_Angeles - dstAt = moment('2014-03-09T02:00:00-08:00').parseZone(), - m; - - moment.updateOffset = function (mom, keepTime) { - if (mom.isBefore(dstAt)) { - mom.utcOffset(-8, keepTime); - } else { - mom.utcOffset(-7, keepTime); - } - }; - - m = moment('2014-03-15T00:00:00-07:00').parseZone(); - m.startOf('M'); - assert.equal(m.format(), '2014-03-01T00:00:00-08:00', 'startOf(\'month\') across +1'); - - m = moment('2014-03-09T09:00:00-07:00').parseZone(); - m.startOf('d'); - assert.equal(m.format(), '2014-03-09T00:00:00-08:00', 'startOf(\'day\') across +1'); - - m = moment('2014-03-09T03:05:00-07:00').parseZone(); - m.startOf('h'); - assert.equal(m.format(), '2014-03-09T03:00:00-07:00', 'startOf(\'hour\') after +1'); - - m = moment('2014-03-09T01:35:00-08:00').parseZone(); - m.startOf('h'); - assert.equal(m.format(), '2014-03-09T01:00:00-08:00', 'startOf(\'hour\') before +1'); - - // There is no such time as 2:30-7 to try startOf('hour') across that - - moment.updateOffset = oldUpdateOffset; - }); - - test('startOf across DST -1', function (assert) { - var oldUpdateOffset = moment.updateOffset, - // Based on a real story somewhere in America/Los_Angeles - dstAt = moment('2014-11-02T02:00:00-07:00').parseZone(), - m; - - moment.updateOffset = function (mom, keepTime) { - if (mom.isBefore(dstAt)) { - mom.utcOffset(-7, keepTime); - } else { - mom.utcOffset(-8, keepTime); - } - }; - - m = moment('2014-11-15T00:00:00-08:00').parseZone(); - m.startOf('M'); - assert.equal(m.format(), '2014-11-01T00:00:00-07:00', 'startOf(\'month\') across -1'); - - m = moment('2014-11-02T09:00:00-08:00').parseZone(); - m.startOf('d'); - assert.equal(m.format(), '2014-11-02T00:00:00-07:00', 'startOf(\'day\') across -1'); - - // note that utc offset is -8 - m = moment('2014-11-02T01:30:00-08:00').parseZone(); - m.startOf('h'); - assert.equal(m.format(), '2014-11-02T01:00:00-08:00', 'startOf(\'hour\') after +1'); - - // note that utc offset is -7 - m = moment('2014-11-02T01:30:00-07:00').parseZone(); - m.startOf('h'); - assert.equal(m.format(), '2014-11-02T01:00:00-07:00', 'startOf(\'hour\') before +1'); - - moment.updateOffset = oldUpdateOffset; - }); - - test('endOf millisecond and no-arg', function (assert) { - var m = moment(); - assert.equal(+m, +m.clone().endOf(), 'endOf without argument should change time'); - assert.equal(+m, +m.clone().endOf('ms'), 'endOf with ms argument should change time'); - assert.equal(+m, +m.clone().endOf('millisecond'), 'endOf with millisecond argument should change time'); - assert.equal(+m, +m.clone().endOf('milliseconds'), 'endOf with milliseconds argument should change time'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('string prototype'); - - test('string prototype overrides call', function (assert) { - var prior = String.prototype.call, b; - String.prototype.call = function () { - return null; - }; - - b = moment(new Date(2011, 7, 28, 15, 25, 50, 125)); - assert.equal(b.format('MMMM Do YYYY, h:mm a'), 'August 28th 2011, 3:25 pm'); - - String.prototype.call = prior; - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('to type'); - - test('toObject', function (assert) { - var expected = { - years:2010, - months:3, - date:5, - hours:15, - minutes:10, - seconds:3, - milliseconds:123 - }; - assert.deepEqual(moment(expected).toObject(), expected, 'toObject invalid'); - }); - - test('toArray', function (assert) { - var expected = [2014, 11, 26, 11, 46, 58, 17]; - assert.deepEqual(moment(expected).toArray(), expected, 'toArray invalid'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('utc'); - - test('utc and local', function (assert) { - var m = moment(Date.UTC(2011, 1, 2, 3, 4, 5, 6)), offset, expected; - m.utc(); - // utc - assert.equal(m.date(), 2, 'the day should be correct for utc'); - assert.equal(m.day(), 3, 'the date should be correct for utc'); - assert.equal(m.hours(), 3, 'the hours should be correct for utc'); - - // local - m.local(); - if (m.zone() > 180) { - assert.equal(m.date(), 1, 'the date should be correct for local'); - assert.equal(m.day(), 2, 'the day should be correct for local'); - } else { - assert.equal(m.date(), 2, 'the date should be correct for local'); - assert.equal(m.day(), 3, 'the day should be correct for local'); - } - offset = Math.floor(m.utcOffset() / 60); - expected = (24 + 3 + offset) % 24; - assert.equal(m.hours(), expected, 'the hours (' + m.hours() + ') should be correct for local'); - assert.equal(moment().utc().utcOffset(), 0, 'timezone in utc should always be zero'); - }); - - test('creating with utc and no arguments', function (assert) { - var startOfTest = new Date().valueOf(), - momentDefaultUtcTime = moment.utc().valueOf(), - afterMomentCreationTime = new Date().valueOf(); - - assert.ok(startOfTest <= momentDefaultUtcTime, 'moment UTC default time should be now, not in the past'); - assert.ok(momentDefaultUtcTime <= afterMomentCreationTime, 'moment UTC default time should be now, not in the future'); - }); - - test('creating with utc and a date parameter array', function (assert) { - var m = moment.utc([2011, 1, 2, 3, 4, 5, 6]); - assert.equal(m.date(), 2, 'the day should be correct for utc array'); - assert.equal(m.hours(), 3, 'the hours should be correct for utc array'); - - m = moment.utc('2011-02-02 3:04:05', 'YYYY-MM-DD HH:mm:ss'); - assert.equal(m.date(), 2, 'the day should be correct for utc parsing format'); - assert.equal(m.hours(), 3, 'the hours should be correct for utc parsing format'); - - m = moment.utc('2011-02-02T03:04:05+00:00'); - assert.equal(m.date(), 2, 'the day should be correct for utc parsing iso'); - assert.equal(m.hours(), 3, 'the hours should be correct for utc parsing iso'); - }); - - test('creating with utc without timezone', function (assert) { - var m = moment.utc('2012-01-02T08:20:00'); - assert.equal(m.date(), 2, 'the day should be correct for utc parse without timezone'); - assert.equal(m.hours(), 8, 'the hours should be correct for utc parse without timezone'); - - m = moment.utc('2012-01-02T08:20:00+09:00'); - assert.equal(m.date(), 1, 'the day should be correct for utc parse with timezone'); - assert.equal(m.hours(), 23, 'the hours should be correct for utc parse with timezone'); - }); - - test('cloning with utc offset', function (assert) { - var m = moment.utc('2012-01-02T08:20:00'); - assert.equal(moment.utc(m)._isUTC, true, 'the local offset should be converted to UTC'); - assert.equal(moment.utc(m.clone().utc())._isUTC, true, 'the local offset should stay in UTC'); - - m.utcOffset(120); - assert.equal(moment.utc(m)._isUTC, true, 'the explicit utc offset should stay in UTC'); - assert.equal(moment.utc(m).utcOffset(), 0, 'the explicit utc offset should have an offset of 0'); - }); - - test('weekday with utc', function (assert) { - assert.equal( - moment('2013-09-15T00:00:00Z').utc().weekday(), // first minute of the day - moment('2013-09-15T23:59:00Z').utc().weekday(), // last minute of the day - 'a UTC-moment\'s .weekday() should not be affected by the local timezone' - ); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('utc offset'); - - test('setter / getter blackbox', function (assert) { - var m = moment([2010]); - - assert.equal(m.clone().utcOffset(0).utcOffset(), 0, 'utcOffset 0'); - - assert.equal(m.clone().utcOffset(1).utcOffset(), 60, 'utcOffset 1 is 60'); - assert.equal(m.clone().utcOffset(60).utcOffset(), 60, 'utcOffset 60'); - assert.equal(m.clone().utcOffset('+01:00').utcOffset(), 60, 'utcOffset +01:00 is 60'); - assert.equal(m.clone().utcOffset('+0100').utcOffset(), 60, 'utcOffset +0100 is 60'); - - assert.equal(m.clone().utcOffset(-1).utcOffset(), -60, 'utcOffset -1 is -60'); - assert.equal(m.clone().utcOffset(-60).utcOffset(), -60, 'utcOffset -60'); - assert.equal(m.clone().utcOffset('-01:00').utcOffset(), -60, 'utcOffset -01:00 is -60'); - assert.equal(m.clone().utcOffset('-0100').utcOffset(), -60, 'utcOffset -0100 is -60'); - - assert.equal(m.clone().utcOffset(1.5).utcOffset(), 90, 'utcOffset 1.5 is 90'); - assert.equal(m.clone().utcOffset(90).utcOffset(), 90, 'utcOffset 1.5 is 90'); - assert.equal(m.clone().utcOffset('+01:30').utcOffset(), 90, 'utcOffset +01:30 is 90'); - assert.equal(m.clone().utcOffset('+0130').utcOffset(), 90, 'utcOffset +0130 is 90'); - - assert.equal(m.clone().utcOffset(-1.5).utcOffset(), -90, 'utcOffset -1.5'); - assert.equal(m.clone().utcOffset(-90).utcOffset(), -90, 'utcOffset -90'); - assert.equal(m.clone().utcOffset('-01:30').utcOffset(), -90, 'utcOffset +01:30 is 90'); - assert.equal(m.clone().utcOffset('-0130').utcOffset(), -90, 'utcOffset +0130 is 90'); - }); - - test('utcOffset shorthand hours -> minutes', function (assert) { - var i; - for (i = -15; i <= 15; ++i) { - assert.equal(moment().utcOffset(i).utcOffset(), i * 60, - '' + i + ' -> ' + i * 60); - } - assert.equal(moment().utcOffset(-16).utcOffset(), -16, '-16 -> -16'); - assert.equal(moment().utcOffset(16).utcOffset(), 16, '16 -> 16'); - }); - - test('isLocal, isUtc, isUtcOffset', function (assert) { - assert.ok(moment().isLocal(), 'moment() creates objects in local time'); - assert.ok(!moment.utc().isLocal(), 'moment.utc creates objects NOT in local time'); - assert.ok(moment.utc().local().isLocal(), 'moment.fn.local() converts to local time'); - assert.ok(!moment().utcOffset(5).isLocal(), 'moment.fn.utcOffset(N) puts objects NOT in local time'); - assert.ok(moment().utcOffset(5).local().isLocal(), 'moment.fn.local() converts to local time'); - - assert.ok(moment.utc().isUtc(), 'moment.utc() creates objects in utc time'); - assert.ok(moment().utcOffset(0).isUtc(), 'utcOffset(0) is equivalent to utc mode'); - assert.ok(!moment().utcOffset(1).isUtc(), 'utcOffset(1) is NOT equivalent to utc mode'); - - assert.ok(!moment().isUtcOffset(), 'moment() creates objects NOT in utc-offset mode'); - assert.ok(moment.utc().isUtcOffset(), 'moment.utc() creates objects in utc-offset mode'); - assert.ok(moment().utcOffset(3).isUtcOffset(), 'utcOffset(N != 0) creates objects in utc-offset mode'); - assert.ok(moment().utcOffset(0).isUtcOffset(), 'utcOffset(0) creates objects in utc-offset mode'); - }); - - test('isUTC', function (assert) { - assert.ok(moment.utc().isUTC(), 'moment.utc() creates objects in utc time'); - assert.ok(moment().utcOffset(0).isUTC(), 'utcOffset(0) is equivalent to utc mode'); - assert.ok(!moment().utcOffset(1).isUTC(), 'utcOffset(1) is NOT equivalent to utc mode'); - }); - - test('change hours when changing the utc offset', function (assert) { - var m = moment.utc([2000, 0, 1, 6]); - assert.equal(m.hour(), 6, 'UTC 6AM should be 6AM at +0000'); - - // sanity check - m.utcOffset(0); - assert.equal(m.hour(), 6, 'UTC 6AM should be 6AM at +0000'); - - m.utcOffset(-60); - assert.equal(m.hour(), 5, 'UTC 6AM should be 5AM at -0100'); - - m.utcOffset(60); - assert.equal(m.hour(), 7, 'UTC 6AM should be 7AM at +0100'); - }); - - test('change minutes when changing the utc offset', function (assert) { - var m = moment.utc([2000, 0, 1, 6, 31]); - - m.utcOffset(0); - assert.equal(m.format('HH:mm'), '06:31', 'UTC 6:31AM should be 6:31AM at +0000'); - - m.utcOffset(-30); - assert.equal(m.format('HH:mm'), '06:01', 'UTC 6:31AM should be 6:01AM at -0030'); - - m.utcOffset(30); - assert.equal(m.format('HH:mm'), '07:01', 'UTC 6:31AM should be 7:01AM at +0030'); - - m.utcOffset(-1380); - assert.equal(m.format('HH:mm'), '07:31', 'UTC 6:31AM should be 7:31AM at +1380'); - }); - - test('distance from the unix epoch', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA), - zoneC = moment(zoneA), - zoneD = moment(zoneA), - zoneE = moment(zoneA); - - zoneB.utc(); - assert.equal(+zoneA, +zoneB, 'moment should equal moment.utc'); - - zoneC.utcOffset(60); - assert.equal(+zoneA, +zoneC, 'moment should equal moment.utcOffset(60)'); - - zoneD.utcOffset(-480); - assert.equal(+zoneA, +zoneD, - 'moment should equal moment.utcOffset(-480)'); - - zoneE.utcOffset(-1000); - assert.equal(+zoneA, +zoneE, - 'moment should equal moment.utcOffset(-1000)'); - }); - - test('update offset after changing any values', function (assert) { - var oldOffset = moment.updateOffset, - m = moment.utc([2000, 6, 1]); - - moment.updateOffset = function (mom, keepTime) { - if (mom.__doChange) { - if (+mom > 962409600000) { - mom.utcOffset(-120, keepTime); - } else { - mom.utcOffset(-60, keepTime); - } - } - }; - - assert.equal(m.format('ZZ'), '+0000', 'should be at +0000'); - assert.equal(m.format('HH:mm'), '00:00', 'should start 12AM at +0000 timezone'); - - m.__doChange = true; - m.add(1, 'h'); - - assert.equal(m.format('ZZ'), '-0200', 'should be at -0200'); - assert.equal(m.format('HH:mm'), '23:00', '1AM at +0000 should be 11PM at -0200 timezone'); - - m.subtract(1, 'h'); - - assert.equal(m.format('ZZ'), '-0100', 'should be at -0100'); - assert.equal(m.format('HH:mm'), '23:00', '12AM at +0000 should be 11PM at -0100 timezone'); - - moment.updateOffset = oldOffset; - }); - - ////////////////// - test('getters and setters', function (assert) { - var a = moment([2011, 5, 20]); - - assert.equal(a.clone().utcOffset(-120).year(2012).year(), 2012, 'should get and set year correctly'); - assert.equal(a.clone().utcOffset(-120).month(1).month(), 1, 'should get and set month correctly'); - assert.equal(a.clone().utcOffset(-120).date(2).date(), 2, 'should get and set date correctly'); - assert.equal(a.clone().utcOffset(-120).day(1).day(), 1, 'should get and set day correctly'); - assert.equal(a.clone().utcOffset(-120).hour(1).hour(), 1, 'should get and set hour correctly'); - assert.equal(a.clone().utcOffset(-120).minute(1).minute(), 1, 'should get and set minute correctly'); - }); - - test('getters', function (assert) { - var a = moment.utc([2012, 0, 1, 0, 0, 0]); - - assert.equal(a.clone().utcOffset(-120).year(), 2011, 'should get year correctly'); - assert.equal(a.clone().utcOffset(-120).month(), 11, 'should get month correctly'); - assert.equal(a.clone().utcOffset(-120).date(), 31, 'should get date correctly'); - assert.equal(a.clone().utcOffset(-120).hour(), 22, 'should get hour correctly'); - assert.equal(a.clone().utcOffset(-120).minute(), 0, 'should get minute correctly'); - - assert.equal(a.clone().utcOffset(120).year(), 2012, 'should get year correctly'); - assert.equal(a.clone().utcOffset(120).month(), 0, 'should get month correctly'); - assert.equal(a.clone().utcOffset(120).date(), 1, 'should get date correctly'); - assert.equal(a.clone().utcOffset(120).hour(), 2, 'should get hour correctly'); - assert.equal(a.clone().utcOffset(120).minute(), 0, 'should get minute correctly'); - - assert.equal(a.clone().utcOffset(90).year(), 2012, 'should get year correctly'); - assert.equal(a.clone().utcOffset(90).month(), 0, 'should get month correctly'); - assert.equal(a.clone().utcOffset(90).date(), 1, 'should get date correctly'); - assert.equal(a.clone().utcOffset(90).hour(), 1, 'should get hour correctly'); - assert.equal(a.clone().utcOffset(90).minute(), 30, 'should get minute correctly'); - }); - - test('from', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA).utcOffset(-720), - zoneC = moment(zoneA).utcOffset(-360), - zoneD = moment(zoneA).utcOffset(690), - other = moment(zoneA).add(35, 'm'); - - assert.equal(zoneA.from(other), zoneB.from(other), 'moment#from should be the same in all zones'); - assert.equal(zoneA.from(other), zoneC.from(other), 'moment#from should be the same in all zones'); - assert.equal(zoneA.from(other), zoneD.from(other), 'moment#from should be the same in all zones'); - }); - - test('diff', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA).utcOffset(-720), - zoneC = moment(zoneA).utcOffset(-360), - zoneD = moment(zoneA).utcOffset(690), - other = moment(zoneA).add(35, 'm'); - - assert.equal(zoneA.diff(other), zoneB.diff(other), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other), zoneC.diff(other), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other), zoneD.diff(other), 'moment#diff should be the same in all zones'); - - assert.equal(zoneA.diff(other, 'minute', true), zoneB.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'minute', true), zoneC.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'minute', true), zoneD.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); - - assert.equal(zoneA.diff(other, 'hour', true), zoneB.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'hour', true), zoneC.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'hour', true), zoneD.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); - }); - - test('unix offset and timestamp', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA).utcOffset(-720), - zoneC = moment(zoneA).utcOffset(-360), - zoneD = moment(zoneA).utcOffset(690); - - assert.equal(zoneA.unix(), zoneB.unix(), 'moment#unix should be the same in all zones'); - assert.equal(zoneA.unix(), zoneC.unix(), 'moment#unix should be the same in all zones'); - assert.equal(zoneA.unix(), zoneD.unix(), 'moment#unix should be the same in all zones'); - - assert.equal(+zoneA, +zoneB, 'moment#valueOf should be the same in all zones'); - assert.equal(+zoneA, +zoneC, 'moment#valueOf should be the same in all zones'); - assert.equal(+zoneA, +zoneD, 'moment#valueOf should be the same in all zones'); - }); - - test('cloning', function (assert) { - assert.equal(moment().utcOffset(-120).clone().utcOffset(), -120, - 'explicit cloning should retain the offset'); - assert.equal(moment().utcOffset(120).clone().utcOffset(), 120, - 'explicit cloning should retain the offset'); - assert.equal(moment(moment().utcOffset(-120)).utcOffset(), -120, - 'implicit cloning should retain the offset'); - assert.equal(moment(moment().utcOffset(120)).utcOffset(), 120, - 'implicit cloning should retain the offset'); - }); - - test('start of / end of', function (assert) { - var a = moment.utc([2010, 1, 2, 0, 0, 0]).utcOffset(-450); - - assert.equal(a.clone().startOf('day').hour(), 0, - 'start of day should work on moments with utc offset'); - assert.equal(a.clone().startOf('day').minute(), 0, - 'start of day should work on moments with utc offset'); - assert.equal(a.clone().startOf('hour').minute(), 0, - 'start of hour should work on moments with utc offset'); - - assert.equal(a.clone().endOf('day').hour(), 23, - 'end of day should work on moments with utc offset'); - assert.equal(a.clone().endOf('day').minute(), 59, - 'end of day should work on moments with utc offset'); - assert.equal(a.clone().endOf('hour').minute(), 59, - 'end of hour should work on moments with utc offset'); - }); - - test('reset offset with moment#utc', function (assert) { - var a = moment.utc([2012]).utcOffset(-480); - - assert.equal(a.clone().hour(), 16, 'different utc offset should have different hour'); - assert.equal(a.clone().utc().hour(), 0, 'calling moment#utc should reset the offset'); - }); - - test('reset offset with moment#local', function (assert) { - var a = moment([2012]).utcOffset(-480); - - assert.equal(a.clone().local().hour(), 0, 'calling moment#local should reset the offset'); - }); - - test('toDate', function (assert) { - var zoneA = new Date(), - zoneB = moment(zoneA).utcOffset(-720).toDate(), - zoneC = moment(zoneA).utcOffset(-360).toDate(), - zoneD = moment(zoneA).utcOffset(690).toDate(); - - assert.equal(+zoneA, +zoneB, 'moment#toDate should output a date with the right unix timestamp'); - assert.equal(+zoneA, +zoneC, 'moment#toDate should output a date with the right unix timestamp'); - assert.equal(+zoneA, +zoneD, 'moment#toDate should output a date with the right unix timestamp'); - }); - - test('same / before / after', function (assert) { - var zoneA = moment().utc(), - zoneB = moment(zoneA).utcOffset(-120), - zoneC = moment(zoneA).utcOffset(120); - - assert.ok(zoneA.isSame(zoneB), 'two moments with different offsets should be the same'); - assert.ok(zoneA.isSame(zoneC), 'two moments with different offsets should be the same'); - - assert.ok(zoneA.isSame(zoneB, 'hour'), 'two moments with different offsets should be the same hour'); - assert.ok(zoneA.isSame(zoneC, 'hour'), 'two moments with different offsets should be the same hour'); - - zoneA.add(1, 'hour'); - - assert.ok(zoneA.isAfter(zoneB), 'isAfter should work with two moments with different offsets'); - assert.ok(zoneA.isAfter(zoneC), 'isAfter should work with two moments with different offsets'); - - assert.ok(zoneA.isAfter(zoneB, 'hour'), 'isAfter:hour should work with two moments with different offsets'); - assert.ok(zoneA.isAfter(zoneC, 'hour'), 'isAfter:hour should work with two moments with different offsets'); - - zoneA.subtract(2, 'hour'); - - assert.ok(zoneA.isBefore(zoneB), 'isBefore should work with two moments with different offsets'); - assert.ok(zoneA.isBefore(zoneC), 'isBefore should work with two moments with different offsets'); - - assert.ok(zoneA.isBefore(zoneB, 'hour'), 'isBefore:hour should work with two moments with different offsets'); - assert.ok(zoneA.isBefore(zoneC, 'hour'), 'isBefore:hour should work with two moments with different offsets'); - }); - - test('add / subtract over dst', function (assert) { - var oldOffset = moment.updateOffset, - m = moment.utc([2000, 2, 31, 3]); - - moment.updateOffset = function (mom, keepTime) { - if (mom.clone().utc().month() > 2) { - mom.utcOffset(60, keepTime); - } else { - mom.utcOffset(0, keepTime); - } - }; - - assert.equal(m.hour(), 3, 'should start at 00:00'); - - m.add(24, 'hour'); - - assert.equal(m.hour(), 4, 'adding 24 hours should disregard dst'); - - m.subtract(24, 'hour'); - - assert.equal(m.hour(), 3, 'subtracting 24 hours should disregard dst'); - - m.add(1, 'day'); - - assert.equal(m.hour(), 3, 'adding 1 day should have the same hour'); - - m.subtract(1, 'day'); - - assert.equal(m.hour(), 3, 'subtracting 1 day should have the same hour'); - - m.add(1, 'month'); - - assert.equal(m.hour(), 3, 'adding 1 month should have the same hour'); - - m.subtract(1, 'month'); - - assert.equal(m.hour(), 3, 'subtracting 1 month should have the same hour'); - - moment.updateOffset = oldOffset; - }); - - test('isDST', function (assert) { - var oldOffset = moment.updateOffset; - - moment.updateOffset = function (mom, keepTime) { - if (mom.month() > 2 && mom.month() < 9) { - mom.utcOffset(60, keepTime); - } else { - mom.utcOffset(0, keepTime); - } - }; - - assert.ok(!moment().month(0).isDST(), 'Jan should not be summer dst'); - assert.ok(moment().month(6).isDST(), 'Jul should be summer dst'); - assert.ok(!moment().month(11).isDST(), 'Dec should not be summer dst'); - - moment.updateOffset = function (mom) { - if (mom.month() > 2 && mom.month() < 9) { - mom.utcOffset(0); - } else { - mom.utcOffset(60); - } - }; - - assert.ok(moment().month(0).isDST(), 'Jan should be winter dst'); - assert.ok(!moment().month(6).isDST(), 'Jul should not be winter dst'); - assert.ok(moment().month(11).isDST(), 'Dec should be winter dst'); - - moment.updateOffset = oldOffset; - }); - - test('zone names', function (assert) { - assert.equal(moment().zoneAbbr(), '', 'Local zone abbr should be empty'); - assert.equal(moment().format('z'), '', 'Local zone formatted abbr should be empty'); - assert.equal(moment().zoneName(), '', 'Local zone name should be empty'); - assert.equal(moment().format('zz'), '', 'Local zone formatted name should be empty'); - - assert.equal(moment.utc().zoneAbbr(), 'UTC', 'UTC zone abbr should be UTC'); - assert.equal(moment.utc().format('z'), 'UTC', 'UTC zone formatted abbr should be UTC'); - assert.equal(moment.utc().zoneName(), 'Coordinated Universal Time', 'UTC zone abbr should be Coordinated Universal Time'); - assert.equal(moment.utc().format('zz'), 'Coordinated Universal Time', 'UTC zone formatted abbr should be Coordinated Universal Time'); - }); - - test('hours alignment with UTC', function (assert) { - assert.equal(moment().utcOffset(-120).hasAlignedHourOffset(), true); - assert.equal(moment().utcOffset(180).hasAlignedHourOffset(), true); - assert.equal(moment().utcOffset(-90).hasAlignedHourOffset(), false); - assert.equal(moment().utcOffset(90).hasAlignedHourOffset(), false); - }); - - test('hours alignment with other zone', function (assert) { - var m = moment().utcOffset(-120); - - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-90)), false); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(90)), false); - - m = moment().utcOffset(-90); - - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), false); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), false); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-30)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(30)), true); - - m = moment().utcOffset(60); - - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-90)), false); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(90)), false); - - m = moment().utcOffset(-25); - - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(35)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-85)), true); - - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-35)), false); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(85)), false); - }); - - test('parse zone', function (assert) { - var m = moment('2013-01-01T00:00:00-13:00').parseZone(); - assert.equal(m.utcOffset(), -13 * 60); - assert.equal(m.hours(), 0); - }); - - test('parse zone static', function (assert) { - var m = moment.parseZone('2013-01-01T00:00:00-13:00'); - assert.equal(m.utcOffset(), -13 * 60); - assert.equal(m.hours(), 0); - }); - - test('parse zone with more arguments', function (assert) { - var m; - m = moment.parseZone('2013 01 01 05 -13:00', 'YYYY MM DD HH ZZ'); - assert.equal(m.format(), '2013-01-01T05:00:00-13:00', 'accept input and format'); - m = moment.parseZone('2013-01-01-13:00', 'YYYY MM DD ZZ', true); - assert.equal(m.isValid(), false, 'accept input, format and strict flag'); - m = moment.parseZone('2013-01-01-13:00', ['DD MM YYYY ZZ', 'YYYY MM DD ZZ']); - assert.equal(m.format(), '2013-01-01T00:00:00-13:00', 'accept input and array of formats'); - }); - - test('parse zone with a timezone from the format string', function (assert) { - var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY ZZ #####').parseZone(); - - assert.equal(m.utcOffset(), -4 * 60); - }); - - test('parse zone without a timezone included in the format string', function (assert) { - var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY').parseZone(); - - assert.equal(m.utcOffset(), 11 * 60); - }); - - test('timezone format', function (assert) { - assert.equal(moment().utcOffset(60).format('ZZ'), '+0100', '-60 -> +0100'); - assert.equal(moment().utcOffset(90).format('ZZ'), '+0130', '-90 -> +0130'); - assert.equal(moment().utcOffset(120).format('ZZ'), '+0200', '-120 -> +0200'); - - assert.equal(moment().utcOffset(-60).format('ZZ'), '-0100', '+60 -> -0100'); - assert.equal(moment().utcOffset(-90).format('ZZ'), '-0130', '+90 -> -0130'); - assert.equal(moment().utcOffset(-120).format('ZZ'), '-0200', '+120 -> -0200'); - }); - - test('local to utc, keepLocalTime = true', function (assert) { - var m = moment(), - fmt = 'YYYY-DD-MM HH:mm:ss'; - assert.equal(m.clone().utc(true).format(fmt), m.format(fmt), 'local to utc failed to keep local time'); - }); - - test('local to utc, keepLocalTime = false', function (assert) { - var m = moment(); - assert.equal(m.clone().utc().valueOf(), m.valueOf(), 'local to utc failed to keep utc time (implicit)'); - assert.equal(m.clone().utc(false).valueOf(), m.valueOf(), 'local to utc failed to keep utc time (explicit)'); - }); - - test('local to zone, keepLocalTime = true', function (assert) { - var m = moment(), - fmt = 'YYYY-DD-MM HH:mm:ss', - z; - - // Apparently there is -12:00 and +14:00 - // http://en.wikipedia.org/wiki/UTC+14:00 - // http://en.wikipedia.org/wiki/UTC-12:00 - for (z = -12; z <= 14; ++z) { - assert.equal(m.clone().utcOffset(z * 60, true).format(fmt), - m.format(fmt), - 'local to utcOffset(' + z + ':00) failed to keep local time'); - } - }); - - test('local to zone, keepLocalTime = false', function (assert) { - var m = moment(), - z; - - // Apparently there is -12:00 and +14:00 - // http://en.wikipedia.org/wiki/UTC+14:00 - // http://en.wikipedia.org/wiki/UTC-12:00 - for (z = -12; z <= 14; ++z) { - assert.equal(m.clone().utcOffset(z * 60).valueOf(), - m.valueOf(), - 'local to utcOffset(' + z + ':00) failed to keep utc time (implicit)'); - assert.equal(m.clone().utcOffset(z * 60, false).valueOf(), - m.valueOf(), - 'local to utcOffset(' + z + ':00) failed to keep utc time (explicit)'); - } - }); - - test('utc to local, keepLocalTime = true', function (assert) { - var um = moment.utc(), - fmt = 'YYYY-DD-MM HH:mm:ss'; - - assert.equal(um.clone().local(true).format(fmt), um.format(fmt), 'utc to local failed to keep local time'); - }); - - test('utc to local, keepLocalTime = false', function (assert) { - var um = moment.utc(); - assert.equal(um.clone().local().valueOf(), um.valueOf(), 'utc to local failed to keep utc time (implicit)'); - assert.equal(um.clone().local(false).valueOf(), um.valueOf(), 'utc to local failed to keep utc time (explicit)'); - }); - - test('zone to local, keepLocalTime = true', function (assert) { - var m = moment(), - fmt = 'YYYY-DD-MM HH:mm:ss', - z; - - // Apparently there is -12:00 and +14:00 - // http://en.wikipedia.org/wiki/UTC+14:00 - // http://en.wikipedia.org/wiki/UTC-12:00 - for (z = -12; z <= 14; ++z) { - m.utcOffset(z * 60); - - assert.equal(m.clone().local(true).format(fmt), - m.format(fmt), - 'utcOffset(' + z + ':00) to local failed to keep local time'); - } - }); - - test('zone to local, keepLocalTime = false', function (assert) { - var m = moment(), - z; - - // Apparently there is -12:00 and +14:00 - // http://en.wikipedia.org/wiki/UTC+14:00 - // http://en.wikipedia.org/wiki/UTC-12:00 - for (z = -12; z <= 14; ++z) { - m.utcOffset(z * 60); - - assert.equal(m.clone().local(false).valueOf(), m.valueOf(), - 'utcOffset(' + z + ':00) to local failed to keep utc time (explicit)'); - assert.equal(m.clone().local().valueOf(), m.valueOf(), - 'utcOffset(' + z + ':00) to local failed to keep utc time (implicit)'); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('week year'); - - test('iso week year', function (assert) { - // Some examples taken from http://en.wikipedia.org/wiki/ISO_week - assert.equal(moment([2005, 0, 1]).isoWeekYear(), 2004); - assert.equal(moment([2005, 0, 2]).isoWeekYear(), 2004); - assert.equal(moment([2005, 0, 3]).isoWeekYear(), 2005); - assert.equal(moment([2005, 11, 31]).isoWeekYear(), 2005); - assert.equal(moment([2006, 0, 1]).isoWeekYear(), 2005); - assert.equal(moment([2006, 0, 2]).isoWeekYear(), 2006); - assert.equal(moment([2007, 0, 1]).isoWeekYear(), 2007); - assert.equal(moment([2007, 11, 30]).isoWeekYear(), 2007); - assert.equal(moment([2007, 11, 31]).isoWeekYear(), 2008); - assert.equal(moment([2008, 0, 1]).isoWeekYear(), 2008); - assert.equal(moment([2008, 11, 28]).isoWeekYear(), 2008); - assert.equal(moment([2008, 11, 29]).isoWeekYear(), 2009); - assert.equal(moment([2008, 11, 30]).isoWeekYear(), 2009); - assert.equal(moment([2008, 11, 31]).isoWeekYear(), 2009); - assert.equal(moment([2009, 0, 1]).isoWeekYear(), 2009); - assert.equal(moment([2010, 0, 1]).isoWeekYear(), 2009); - assert.equal(moment([2010, 0, 2]).isoWeekYear(), 2009); - assert.equal(moment([2010, 0, 3]).isoWeekYear(), 2009); - assert.equal(moment([2010, 0, 4]).isoWeekYear(), 2010); - }); - - test('week year', function (assert) { - // Some examples taken from http://en.wikipedia.org/wiki/ISO_week - moment.locale('dow: 1,doy: 4', {week: {dow: 1, doy: 4}}); // like iso - assert.equal(moment([2005, 0, 1]).weekYear(), 2004); - assert.equal(moment([2005, 0, 2]).weekYear(), 2004); - assert.equal(moment([2005, 0, 3]).weekYear(), 2005); - assert.equal(moment([2005, 11, 31]).weekYear(), 2005); - assert.equal(moment([2006, 0, 1]).weekYear(), 2005); - assert.equal(moment([2006, 0, 2]).weekYear(), 2006); - assert.equal(moment([2007, 0, 1]).weekYear(), 2007); - assert.equal(moment([2007, 11, 30]).weekYear(), 2007); - assert.equal(moment([2007, 11, 31]).weekYear(), 2008); - assert.equal(moment([2008, 0, 1]).weekYear(), 2008); - assert.equal(moment([2008, 11, 28]).weekYear(), 2008); - assert.equal(moment([2008, 11, 29]).weekYear(), 2009); - assert.equal(moment([2008, 11, 30]).weekYear(), 2009); - assert.equal(moment([2008, 11, 31]).weekYear(), 2009); - assert.equal(moment([2009, 0, 1]).weekYear(), 2009); - assert.equal(moment([2010, 0, 1]).weekYear(), 2009); - assert.equal(moment([2010, 0, 2]).weekYear(), 2009); - assert.equal(moment([2010, 0, 3]).weekYear(), 2009); - assert.equal(moment([2010, 0, 4]).weekYear(), 2010); - - moment.locale('dow: 1,doy: 7', {week: {dow: 1, doy: 7}}); - assert.equal(moment([2004, 11, 26]).weekYear(), 2004); - assert.equal(moment([2004, 11, 27]).weekYear(), 2005); - assert.equal(moment([2005, 11, 25]).weekYear(), 2005); - assert.equal(moment([2005, 11, 26]).weekYear(), 2006); - assert.equal(moment([2006, 11, 31]).weekYear(), 2006); - assert.equal(moment([2007, 0, 1]).weekYear(), 2007); - assert.equal(moment([2007, 11, 30]).weekYear(), 2007); - assert.equal(moment([2007, 11, 31]).weekYear(), 2008); - assert.equal(moment([2008, 11, 28]).weekYear(), 2008); - assert.equal(moment([2008, 11, 29]).weekYear(), 2009); - assert.equal(moment([2009, 11, 27]).weekYear(), 2009); - assert.equal(moment([2009, 11, 28]).weekYear(), 2010); - }); - - // Verifies that the week number, week day computation is correct for all dow, doy combinations - test('week year roundtrip', function (assert) { - var dow, doy, wd, m; - for (dow = 0; dow < 7; ++dow) { - for (doy = dow; doy < dow + 7; ++doy) { - for (wd = 0; wd < 7; ++wd) { - moment.locale('dow: ' + dow + ', doy: ' + doy, {week: {dow: dow, doy: doy}}); - // We use the 10th week as the 1st one can spill to the previous year - m = moment('2015 10 ' + wd, 'gggg w d', true); - assert.equal(m.format('gggg w d'), '2015 10 ' + wd, 'dow: ' + dow + ' doy: ' + doy + ' wd: ' + wd); - m = moment('2015 10 ' + wd, 'gggg w e', true); - assert.equal(m.format('gggg w e'), '2015 10 ' + wd, 'dow: ' + dow + ' doy: ' + doy + ' wd: ' + wd); - } - } - } - }); - - test('week numbers 2012/2013', function (assert) { - moment.locale('dow: 6, doy: 12', {week: {dow: 6, doy: 12}}); - assert.equal(52, moment('2012-12-28', 'YYYY-MM-DD').week()); // 51 -- should be 52? - assert.equal(1, moment('2012-12-29', 'YYYY-MM-DD').week()); // 52 -- should be 1 - assert.equal(1, moment('2013-01-01', 'YYYY-MM-DD').week()); // 52 -- should be 1 - assert.equal(2, moment('2013-01-08', 'YYYY-MM-DD').week()); // 53 -- should be 2 - assert.equal(2, moment('2013-01-11', 'YYYY-MM-DD').week()); // 53 -- should be 2 - assert.equal(3, moment('2013-01-12', 'YYYY-MM-DD').week()); // 1 -- should be 3 - assert.equal(52, moment().weeksInYear(2012)); // 52 - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('week day'); - - test('iso weekday', function (assert) { - var i; - - for (i = 0; i < 7; ++i) { - moment.locale('dow:' + i + ',doy: 6', {week: {dow: i, doy: 6}}); - assert.equal(moment([1985, 1, 4]).isoWeekday(), 1, 'Feb 4 1985 is Monday -- 1st day'); - assert.equal(moment([2029, 8, 18]).isoWeekday(), 2, 'Sep 18 2029 is Tuesday -- 2nd day'); - assert.equal(moment([2013, 3, 24]).isoWeekday(), 3, 'Apr 24 2013 is Wednesday -- 3rd day'); - assert.equal(moment([2015, 2, 5]).isoWeekday(), 4, 'Mar 5 2015 is Thursday -- 4th day'); - assert.equal(moment([1970, 0, 2]).isoWeekday(), 5, 'Jan 2 1970 is Friday -- 5th day'); - assert.equal(moment([2001, 4, 12]).isoWeekday(), 6, 'May 12 2001 is Saturday -- 6th day'); - assert.equal(moment([2000, 0, 2]).isoWeekday(), 7, 'Jan 2 2000 is Sunday -- 7th day'); - } - }); - - test('iso weekday setter', function (assert) { - var a = moment([2011, 0, 10]); - assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from mon to mon'); - assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from mon to thu'); - assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from mon to sun'); - assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from mon to last mon'); - assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from mon to last thu'); - assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from mon to last sun'); - assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from mon to next mon'); - assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from mon to next thu'); - assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from mon to next sun'); - - a = moment([2011, 0, 13]); - assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from thu to mon'); - assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from thu to thu'); - assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from thu to sun'); - assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from thu to last mon'); - assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from thu to last thu'); - assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from thu to last sun'); - assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from thu to next mon'); - assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from thu to next thu'); - assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from thu to next sun'); - - a = moment([2011, 0, 16]); - assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from sun to mon'); - assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from sun to thu'); - assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from sun to sun'); - assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from sun to last mon'); - assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from sun to last thu'); - assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from sun to last sun'); - assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from sun to next mon'); - assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from sun to next thu'); - assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from sun to next sun'); - }); - - test('weekday first day of week Sunday (dow 0)', function (assert) { - moment.locale('dow: 0,doy: 6', {week: {dow: 0, doy: 6}}); - assert.equal(moment([1985, 1, 3]).weekday(), 0, 'Feb 3 1985 is Sunday -- 0th day'); - assert.equal(moment([2029, 8, 17]).weekday(), 1, 'Sep 17 2029 is Monday -- 1st day'); - assert.equal(moment([2013, 3, 23]).weekday(), 2, 'Apr 23 2013 is Tuesday -- 2nd day'); - assert.equal(moment([2015, 2, 4]).weekday(), 3, 'Mar 4 2015 is Wednesday -- 3nd day'); - assert.equal(moment([1970, 0, 1]).weekday(), 4, 'Jan 1 1970 is Thursday -- 4th day'); - assert.equal(moment([2001, 4, 11]).weekday(), 5, 'May 11 2001 is Friday -- 5th day'); - assert.equal(moment([2000, 0, 1]).weekday(), 6, 'Jan 1 2000 is Saturday -- 6th day'); - }); - - test('weekday first day of week Monday (dow 1)', function (assert) { - moment.locale('dow: 1,doy: 6', {week: {dow: 1, doy: 6}}); - assert.equal(moment([1985, 1, 4]).weekday(), 0, 'Feb 4 1985 is Monday -- 0th day'); - assert.equal(moment([2029, 8, 18]).weekday(), 1, 'Sep 18 2029 is Tuesday -- 1st day'); - assert.equal(moment([2013, 3, 24]).weekday(), 2, 'Apr 24 2013 is Wednesday -- 2nd day'); - assert.equal(moment([2015, 2, 5]).weekday(), 3, 'Mar 5 2015 is Thursday -- 3nd day'); - assert.equal(moment([1970, 0, 2]).weekday(), 4, 'Jan 2 1970 is Friday -- 4th day'); - assert.equal(moment([2001, 4, 12]).weekday(), 5, 'May 12 2001 is Saturday -- 5th day'); - assert.equal(moment([2000, 0, 2]).weekday(), 6, 'Jan 2 2000 is Sunday -- 6th day'); - }); - - test('weekday first day of week Tuesday (dow 2)', function (assert) { - moment.locale('dow: 2,doy: 6', {week: {dow: 2, doy: 6}}); - assert.equal(moment([1985, 1, 5]).weekday(), 0, 'Feb 5 1985 is Tuesday -- 0th day'); - assert.equal(moment([2029, 8, 19]).weekday(), 1, 'Sep 19 2029 is Wednesday -- 1st day'); - assert.equal(moment([2013, 3, 25]).weekday(), 2, 'Apr 25 2013 is Thursday -- 2nd day'); - assert.equal(moment([2015, 2, 6]).weekday(), 3, 'Mar 6 2015 is Friday -- 3nd day'); - assert.equal(moment([1970, 0, 3]).weekday(), 4, 'Jan 3 1970 is Staturday -- 4th day'); - assert.equal(moment([2001, 4, 13]).weekday(), 5, 'May 13 2001 is Sunday -- 5th day'); - assert.equal(moment([2000, 0, 3]).weekday(), 6, 'Jan 3 2000 is Monday -- 6th day'); - }); - - test('weekday first day of week Wednesday (dow 3)', function (assert) { - moment.locale('dow: 3,doy: 6', {week: {dow: 3, doy: 6}}); - assert.equal(moment([1985, 1, 6]).weekday(), 0, 'Feb 6 1985 is Wednesday -- 0th day'); - assert.equal(moment([2029, 8, 20]).weekday(), 1, 'Sep 20 2029 is Thursday -- 1st day'); - assert.equal(moment([2013, 3, 26]).weekday(), 2, 'Apr 26 2013 is Friday -- 2nd day'); - assert.equal(moment([2015, 2, 7]).weekday(), 3, 'Mar 7 2015 is Saturday -- 3nd day'); - assert.equal(moment([1970, 0, 4]).weekday(), 4, 'Jan 4 1970 is Sunday -- 4th day'); - assert.equal(moment([2001, 4, 14]).weekday(), 5, 'May 14 2001 is Monday -- 5th day'); - assert.equal(moment([2000, 0, 4]).weekday(), 6, 'Jan 4 2000 is Tuesday -- 6th day'); - moment.locale('dow:3,doy:6', null); - }); - - test('weekday first day of week Thursday (dow 4)', function (assert) { - moment.locale('dow: 4,doy: 6', {week: {dow: 4, doy: 6}}); - assert.equal(moment([1985, 1, 7]).weekday(), 0, 'Feb 7 1985 is Thursday -- 0th day'); - assert.equal(moment([2029, 8, 21]).weekday(), 1, 'Sep 21 2029 is Friday -- 1st day'); - assert.equal(moment([2013, 3, 27]).weekday(), 2, 'Apr 27 2013 is Saturday -- 2nd day'); - assert.equal(moment([2015, 2, 8]).weekday(), 3, 'Mar 8 2015 is Sunday -- 3nd day'); - assert.equal(moment([1970, 0, 5]).weekday(), 4, 'Jan 5 1970 is Monday -- 4th day'); - assert.equal(moment([2001, 4, 15]).weekday(), 5, 'May 15 2001 is Tuesday -- 5th day'); - assert.equal(moment([2000, 0, 5]).weekday(), 6, 'Jan 5 2000 is Wednesday -- 6th day'); - }); - - test('weekday first day of week Friday (dow 5)', function (assert) { - moment.locale('dow: 5,doy: 6', {week: {dow: 5, doy: 6}}); - assert.equal(moment([1985, 1, 8]).weekday(), 0, 'Feb 8 1985 is Friday -- 0th day'); - assert.equal(moment([2029, 8, 22]).weekday(), 1, 'Sep 22 2029 is Staturday -- 1st day'); - assert.equal(moment([2013, 3, 28]).weekday(), 2, 'Apr 28 2013 is Sunday -- 2nd day'); - assert.equal(moment([2015, 2, 9]).weekday(), 3, 'Mar 9 2015 is Monday -- 3nd day'); - assert.equal(moment([1970, 0, 6]).weekday(), 4, 'Jan 6 1970 is Tuesday -- 4th day'); - assert.equal(moment([2001, 4, 16]).weekday(), 5, 'May 16 2001 is Wednesday -- 5th day'); - assert.equal(moment([2000, 0, 6]).weekday(), 6, 'Jan 6 2000 is Thursday -- 6th day'); - }); - - test('weekday first day of week Saturday (dow 6)', function (assert) { - moment.locale('dow: 6,doy: 6', {week: {dow: 6, doy: 6}}); - assert.equal(moment([1985, 1, 9]).weekday(), 0, 'Feb 9 1985 is Staturday -- 0th day'); - assert.equal(moment([2029, 8, 23]).weekday(), 1, 'Sep 23 2029 is Sunday -- 1st day'); - assert.equal(moment([2013, 3, 29]).weekday(), 2, 'Apr 29 2013 is Monday -- 2nd day'); - assert.equal(moment([2015, 2, 10]).weekday(), 3, 'Mar 10 2015 is Tuesday -- 3nd day'); - assert.equal(moment([1970, 0, 7]).weekday(), 4, 'Jan 7 1970 is Wednesday -- 4th day'); - assert.equal(moment([2001, 4, 17]).weekday(), 5, 'May 17 2001 is Thursday -- 5th day'); - assert.equal(moment([2000, 0, 7]).weekday(), 6, 'Jan 7 2000 is Friday -- 6th day'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('weeks'); - - test('day of year', function (assert) { - assert.equal(moment([2000, 0, 1]).dayOfYear(), 1, 'Jan 1 2000 should be day 1 of the year'); - assert.equal(moment([2000, 1, 28]).dayOfYear(), 59, 'Feb 28 2000 should be day 59 of the year'); - assert.equal(moment([2000, 1, 29]).dayOfYear(), 60, 'Feb 28 2000 should be day 60 of the year'); - assert.equal(moment([2000, 11, 31]).dayOfYear(), 366, 'Dec 31 2000 should be day 366 of the year'); - assert.equal(moment([2001, 0, 1]).dayOfYear(), 1, 'Jan 1 2001 should be day 1 of the year'); - assert.equal(moment([2001, 1, 28]).dayOfYear(), 59, 'Feb 28 2001 should be day 59 of the year'); - assert.equal(moment([2001, 2, 1]).dayOfYear(), 60, 'Mar 1 2001 should be day 60 of the year'); - assert.equal(moment([2001, 11, 31]).dayOfYear(), 365, 'Dec 31 2001 should be day 365 of the year'); - }); - - test('day of year setters', function (assert) { - assert.equal(moment([2000, 0, 1]).dayOfYear(200).dayOfYear(), 200, 'Setting Jan 1 2000 day of the year to 200 should work'); - assert.equal(moment([2000, 1, 28]).dayOfYear(200).dayOfYear(), 200, 'Setting Feb 28 2000 day of the year to 200 should work'); - assert.equal(moment([2000, 1, 29]).dayOfYear(200).dayOfYear(), 200, 'Setting Feb 28 2000 day of the year to 200 should work'); - assert.equal(moment([2000, 11, 31]).dayOfYear(200).dayOfYear(), 200, 'Setting Dec 31 2000 day of the year to 200 should work'); - assert.equal(moment().dayOfYear(1).dayOfYear(), 1, 'Setting day of the year to 1 should work'); - assert.equal(moment().dayOfYear(59).dayOfYear(), 59, 'Setting day of the year to 59 should work'); - assert.equal(moment().dayOfYear(60).dayOfYear(), 60, 'Setting day of the year to 60 should work'); - assert.equal(moment().dayOfYear(365).dayOfYear(), 365, 'Setting day of the year to 365 should work'); - }); - - test('iso weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).isoWeek(), 52, 'Jan 1 2012 should be iso week 52'); - assert.equal(moment([2012, 0, 2]).isoWeek(), 1, 'Jan 2 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 8]).isoWeek(), 1, 'Jan 8 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 9]).isoWeek(), 2, 'Jan 9 2012 should be iso week 2'); - assert.equal(moment([2012, 0, 15]).isoWeek(), 2, 'Jan 15 2012 should be iso week 2'); - }); - - test('iso weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).isoWeek(), 1, 'Jan 1 2007 should be iso week 1'); - assert.equal(moment([2007, 0, 7]).isoWeek(), 1, 'Jan 7 2007 should be iso week 1'); - assert.equal(moment([2007, 0, 8]).isoWeek(), 2, 'Jan 8 2007 should be iso week 2'); - assert.equal(moment([2007, 0, 14]).isoWeek(), 2, 'Jan 14 2007 should be iso week 2'); - assert.equal(moment([2007, 0, 15]).isoWeek(), 3, 'Jan 15 2007 should be iso week 3'); - }); - - test('iso weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).isoWeek(), 1, 'Dec 31 2007 should be iso week 1'); - assert.equal(moment([2008, 0, 1]).isoWeek(), 1, 'Jan 1 2008 should be iso week 1'); - assert.equal(moment([2008, 0, 6]).isoWeek(), 1, 'Jan 6 2008 should be iso week 1'); - assert.equal(moment([2008, 0, 7]).isoWeek(), 2, 'Jan 7 2008 should be iso week 2'); - assert.equal(moment([2008, 0, 13]).isoWeek(), 2, 'Jan 13 2008 should be iso week 2'); - assert.equal(moment([2008, 0, 14]).isoWeek(), 3, 'Jan 14 2008 should be iso week 3'); - }); - - test('iso weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).isoWeek(), 1, 'Dec 30 2002 should be iso week 1'); - assert.equal(moment([2003, 0, 1]).isoWeek(), 1, 'Jan 1 2003 should be iso week 1'); - assert.equal(moment([2003, 0, 5]).isoWeek(), 1, 'Jan 5 2003 should be iso week 1'); - assert.equal(moment([2003, 0, 6]).isoWeek(), 2, 'Jan 6 2003 should be iso week 2'); - assert.equal(moment([2003, 0, 12]).isoWeek(), 2, 'Jan 12 2003 should be iso week 2'); - assert.equal(moment([2003, 0, 13]).isoWeek(), 3, 'Jan 13 2003 should be iso week 3'); - }); - - test('iso weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).isoWeek(), 1, 'Dec 29 2008 should be iso week 1'); - assert.equal(moment([2009, 0, 1]).isoWeek(), 1, 'Jan 1 2009 should be iso week 1'); - assert.equal(moment([2009, 0, 4]).isoWeek(), 1, 'Jan 4 2009 should be iso week 1'); - assert.equal(moment([2009, 0, 5]).isoWeek(), 2, 'Jan 5 2009 should be iso week 2'); - assert.equal(moment([2009, 0, 11]).isoWeek(), 2, 'Jan 11 2009 should be iso week 2'); - assert.equal(moment([2009, 0, 13]).isoWeek(), 3, 'Jan 12 2009 should be iso week 3'); - }); - - test('iso weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).isoWeek(), 53, 'Dec 28 2009 should be iso week 53'); - assert.equal(moment([2010, 0, 1]).isoWeek(), 53, 'Jan 1 2010 should be iso week 53'); - assert.equal(moment([2010, 0, 3]).isoWeek(), 53, 'Jan 3 2010 should be iso week 53'); - assert.equal(moment([2010, 0, 4]).isoWeek(), 1, 'Jan 4 2010 should be iso week 1'); - assert.equal(moment([2010, 0, 10]).isoWeek(), 1, 'Jan 10 2010 should be iso week 1'); - assert.equal(moment([2010, 0, 11]).isoWeek(), 2, 'Jan 11 2010 should be iso week 2'); - }); - - test('iso weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).isoWeek(), 52, 'Dec 27 2010 should be iso week 52'); - assert.equal(moment([2011, 0, 1]).isoWeek(), 52, 'Jan 1 2011 should be iso week 52'); - assert.equal(moment([2011, 0, 2]).isoWeek(), 52, 'Jan 2 2011 should be iso week 52'); - assert.equal(moment([2011, 0, 3]).isoWeek(), 1, 'Jan 3 2011 should be iso week 1'); - assert.equal(moment([2011, 0, 9]).isoWeek(), 1, 'Jan 9 2011 should be iso week 1'); - assert.equal(moment([2011, 0, 10]).isoWeek(), 2, 'Jan 10 2011 should be iso week 2'); - }); - - test('iso weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('W WW Wo'), '52 52 52nd', 'Jan 1 2012 should be iso week 52'); - assert.equal(moment([2012, 0, 2]).format('W WW Wo'), '1 01 1st', 'Jan 2 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 8]).format('W WW Wo'), '1 01 1st', 'Jan 8 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 9]).format('W WW Wo'), '2 02 2nd', 'Jan 9 2012 should be iso week 2'); - assert.equal(moment([2012, 0, 15]).format('W WW Wo'), '2 02 2nd', 'Jan 15 2012 should be iso week 2'); - }); - - test('weeks plural year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).weeks(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).weeks(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).weeks(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).weeks(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).weeks(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('iso weeks plural year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).isoWeeks(), 52, 'Jan 1 2012 should be iso week 52'); - assert.equal(moment([2012, 0, 2]).isoWeeks(), 1, 'Jan 2 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 8]).isoWeeks(), 1, 'Jan 8 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 9]).isoWeeks(), 2, 'Jan 9 2012 should be iso week 2'); - assert.equal(moment([2012, 0, 15]).isoWeeks(), 2, 'Jan 15 2012 should be iso week 2'); - }); - - test('weeks setter', function (assert) { - assert.equal(moment([2012, 0, 1]).week(30).week(), 30, 'Setting Jan 1 2012 to week 30 should work'); - assert.equal(moment([2012, 0, 7]).week(30).week(), 30, 'Setting Jan 7 2012 to week 30 should work'); - assert.equal(moment([2012, 0, 8]).week(30).week(), 30, 'Setting Jan 8 2012 to week 30 should work'); - assert.equal(moment([2012, 0, 14]).week(30).week(), 30, 'Setting Jan 14 2012 to week 30 should work'); - assert.equal(moment([2012, 0, 15]).week(30).week(), 30, 'Setting Jan 15 2012 to week 30 should work'); - }); - - test('iso weeks setter', function (assert) { - assert.equal(moment([2012, 0, 1]).isoWeeks(25).isoWeeks(), 25, 'Setting Jan 1 2012 to week 25 should work'); - assert.equal(moment([2012, 0, 2]).isoWeeks(24).isoWeeks(), 24, 'Setting Jan 2 2012 to week 24 should work'); - assert.equal(moment([2012, 0, 8]).isoWeeks(23).isoWeeks(), 23, 'Setting Jan 8 2012 to week 23 should work'); - assert.equal(moment([2012, 0, 9]).isoWeeks(22).isoWeeks(), 22, 'Setting Jan 9 2012 to week 22 should work'); - assert.equal(moment([2012, 0, 15]).isoWeeks(21).isoWeeks(), 21, 'Setting Jan 15 2012 to week 21 should work'); - }); - - test('iso weeks setter day of year', function (assert) { - assert.equal(moment([2012, 0, 1]).isoWeek(1).dayOfYear(), 9, 'Setting Jan 1 2012 to week 1 should be day of year 8'); - assert.equal(moment([2012, 0, 1]).isoWeek(1).year(), 2011, 'Setting Jan 1 2012 to week 1 should be year 2011'); - assert.equal(moment([2012, 0, 2]).isoWeek(1).dayOfYear(), 2, 'Setting Jan 2 2012 to week 1 should be day of year 2'); - assert.equal(moment([2012, 0, 8]).isoWeek(1).dayOfYear(), 8, 'Setting Jan 8 2012 to week 1 should be day of year 8'); - assert.equal(moment([2012, 0, 9]).isoWeek(1).dayOfYear(), 2, 'Setting Jan 9 2012 to week 1 should be day of year 2'); - assert.equal(moment([2012, 0, 15]).isoWeek(1).dayOfYear(), 8, 'Setting Jan 15 2012 to week 1 should be day of year 8'); - }); - - test('years with iso week 53', function (assert) { - // Based on a table taken from http://en.wikipedia.org/wiki/ISO_week_date - // (as downloaded on 2014-01-06) listing the 71 years in a 400-year cycle - // that have 53 weeks; in this case reflecting the 2000 based cycle - assert.equal(moment([2004, 11, 31]).isoWeek(), 53, 'Dec 31 2004 should be iso week 53'); - assert.equal(moment([2009, 11, 31]).isoWeek(), 53, 'Dec 31 2009 should be iso week 53'); - assert.equal(moment([2015, 11, 31]).isoWeek(), 53, 'Dec 31 2015 should be iso week 53'); - assert.equal(moment([2020, 11, 31]).isoWeek(), 53, 'Dec 31 2020 should be iso week 53'); - assert.equal(moment([2026, 11, 31]).isoWeek(), 53, 'Dec 31 2026 should be iso week 53'); - assert.equal(moment([2032, 11, 31]).isoWeek(), 53, 'Dec 31 2032 should be iso week 53'); - assert.equal(moment([2037, 11, 31]).isoWeek(), 53, 'Dec 31 2037 should be iso week 53'); - assert.equal(moment([2043, 11, 31]).isoWeek(), 53, 'Dec 31 2043 should be iso week 53'); - assert.equal(moment([2048, 11, 31]).isoWeek(), 53, 'Dec 31 2048 should be iso week 53'); - assert.equal(moment([2054, 11, 31]).isoWeek(), 53, 'Dec 31 2054 should be iso week 53'); - assert.equal(moment([2060, 11, 31]).isoWeek(), 53, 'Dec 31 2060 should be iso week 53'); - assert.equal(moment([2065, 11, 31]).isoWeek(), 53, 'Dec 31 2065 should be iso week 53'); - assert.equal(moment([2071, 11, 31]).isoWeek(), 53, 'Dec 31 2071 should be iso week 53'); - assert.equal(moment([2076, 11, 31]).isoWeek(), 53, 'Dec 31 2076 should be iso week 53'); - assert.equal(moment([2082, 11, 31]).isoWeek(), 53, 'Dec 31 2082 should be iso week 53'); - assert.equal(moment([2088, 11, 31]).isoWeek(), 53, 'Dec 31 2088 should be iso week 53'); - assert.equal(moment([2093, 11, 31]).isoWeek(), 53, 'Dec 31 2093 should be iso week 53'); - assert.equal(moment([2099, 11, 31]).isoWeek(), 53, 'Dec 31 2099 should be iso week 53'); - assert.equal(moment([2105, 11, 31]).isoWeek(), 53, 'Dec 31 2105 should be iso week 53'); - assert.equal(moment([2111, 11, 31]).isoWeek(), 53, 'Dec 31 2111 should be iso week 53'); - assert.equal(moment([2116, 11, 31]).isoWeek(), 53, 'Dec 31 2116 should be iso week 53'); - assert.equal(moment([2122, 11, 31]).isoWeek(), 53, 'Dec 31 2122 should be iso week 53'); - assert.equal(moment([2128, 11, 31]).isoWeek(), 53, 'Dec 31 2128 should be iso week 53'); - assert.equal(moment([2133, 11, 31]).isoWeek(), 53, 'Dec 31 2133 should be iso week 53'); - assert.equal(moment([2139, 11, 31]).isoWeek(), 53, 'Dec 31 2139 should be iso week 53'); - assert.equal(moment([2144, 11, 31]).isoWeek(), 53, 'Dec 31 2144 should be iso week 53'); - assert.equal(moment([2150, 11, 31]).isoWeek(), 53, 'Dec 31 2150 should be iso week 53'); - assert.equal(moment([2156, 11, 31]).isoWeek(), 53, 'Dec 31 2156 should be iso week 53'); - assert.equal(moment([2161, 11, 31]).isoWeek(), 53, 'Dec 31 2161 should be iso week 53'); - assert.equal(moment([2167, 11, 31]).isoWeek(), 53, 'Dec 31 2167 should be iso week 53'); - assert.equal(moment([2172, 11, 31]).isoWeek(), 53, 'Dec 31 2172 should be iso week 53'); - assert.equal(moment([2178, 11, 31]).isoWeek(), 53, 'Dec 31 2178 should be iso week 53'); - assert.equal(moment([2184, 11, 31]).isoWeek(), 53, 'Dec 31 2184 should be iso week 53'); - assert.equal(moment([2189, 11, 31]).isoWeek(), 53, 'Dec 31 2189 should be iso week 53'); - assert.equal(moment([2195, 11, 31]).isoWeek(), 53, 'Dec 31 2195 should be iso week 53'); - assert.equal(moment([2201, 11, 31]).isoWeek(), 53, 'Dec 31 2201 should be iso week 53'); - assert.equal(moment([2207, 11, 31]).isoWeek(), 53, 'Dec 31 2207 should be iso week 53'); - assert.equal(moment([2212, 11, 31]).isoWeek(), 53, 'Dec 31 2212 should be iso week 53'); - assert.equal(moment([2218, 11, 31]).isoWeek(), 53, 'Dec 31 2218 should be iso week 53'); - assert.equal(moment([2224, 11, 31]).isoWeek(), 53, 'Dec 31 2224 should be iso week 53'); - assert.equal(moment([2229, 11, 31]).isoWeek(), 53, 'Dec 31 2229 should be iso week 53'); - assert.equal(moment([2235, 11, 31]).isoWeek(), 53, 'Dec 31 2235 should be iso week 53'); - assert.equal(moment([2240, 11, 31]).isoWeek(), 53, 'Dec 31 2240 should be iso week 53'); - assert.equal(moment([2246, 11, 31]).isoWeek(), 53, 'Dec 31 2246 should be iso week 53'); - assert.equal(moment([2252, 11, 31]).isoWeek(), 53, 'Dec 31 2252 should be iso week 53'); - assert.equal(moment([2257, 11, 31]).isoWeek(), 53, 'Dec 31 2257 should be iso week 53'); - assert.equal(moment([2263, 11, 31]).isoWeek(), 53, 'Dec 31 2263 should be iso week 53'); - assert.equal(moment([2268, 11, 31]).isoWeek(), 53, 'Dec 31 2268 should be iso week 53'); - assert.equal(moment([2274, 11, 31]).isoWeek(), 53, 'Dec 31 2274 should be iso week 53'); - assert.equal(moment([2280, 11, 31]).isoWeek(), 53, 'Dec 31 2280 should be iso week 53'); - assert.equal(moment([2285, 11, 31]).isoWeek(), 53, 'Dec 31 2285 should be iso week 53'); - assert.equal(moment([2291, 11, 31]).isoWeek(), 53, 'Dec 31 2291 should be iso week 53'); - assert.equal(moment([2296, 11, 31]).isoWeek(), 53, 'Dec 31 2296 should be iso week 53'); - assert.equal(moment([2303, 11, 31]).isoWeek(), 53, 'Dec 31 2303 should be iso week 53'); - assert.equal(moment([2308, 11, 31]).isoWeek(), 53, 'Dec 31 2308 should be iso week 53'); - assert.equal(moment([2314, 11, 31]).isoWeek(), 53, 'Dec 31 2314 should be iso week 53'); - assert.equal(moment([2320, 11, 31]).isoWeek(), 53, 'Dec 31 2320 should be iso week 53'); - assert.equal(moment([2325, 11, 31]).isoWeek(), 53, 'Dec 31 2325 should be iso week 53'); - assert.equal(moment([2331, 11, 31]).isoWeek(), 53, 'Dec 31 2331 should be iso week 53'); - assert.equal(moment([2336, 11, 31]).isoWeek(), 53, 'Dec 31 2336 should be iso week 53'); - assert.equal(moment([2342, 11, 31]).isoWeek(), 53, 'Dec 31 2342 should be iso week 53'); - assert.equal(moment([2348, 11, 31]).isoWeek(), 53, 'Dec 31 2348 should be iso week 53'); - assert.equal(moment([2353, 11, 31]).isoWeek(), 53, 'Dec 31 2353 should be iso week 53'); - assert.equal(moment([2359, 11, 31]).isoWeek(), 53, 'Dec 31 2359 should be iso week 53'); - assert.equal(moment([2364, 11, 31]).isoWeek(), 53, 'Dec 31 2364 should be iso week 53'); - assert.equal(moment([2370, 11, 31]).isoWeek(), 53, 'Dec 31 2370 should be iso week 53'); - assert.equal(moment([2376, 11, 31]).isoWeek(), 53, 'Dec 31 2376 should be iso week 53'); - assert.equal(moment([2381, 11, 31]).isoWeek(), 53, 'Dec 31 2381 should be iso week 53'); - assert.equal(moment([2387, 11, 31]).isoWeek(), 53, 'Dec 31 2387 should be iso week 53'); - assert.equal(moment([2392, 11, 31]).isoWeek(), 53, 'Dec 31 2392 should be iso week 53'); - assert.equal(moment([2398, 11, 31]).isoWeek(), 53, 'Dec 31 2398 should be iso week 53'); - }); - - test('count years with iso week 53', function (assert) { - // Based on http://en.wikipedia.org/wiki/ISO_week_date (as seen on 2014-01-06) - // stating that there are 71 years in a 400-year cycle that have 53 weeks; - // in this case reflecting the 2000 based cycle - var count = 0, i; - for (i = 0; i < 400; i++) { - count += (moment([2000 + i, 11, 31]).isoWeek() === 53) ? 1 : 0; - } - assert.equal(count, 71, 'Should have 71 years in 400-year cycle with iso week 53'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('weeks in year'); - - test('isoWeeksInYear', function (assert) { - assert.equal(moment([2004]).isoWeeksInYear(), 53, '2004 has 53 iso weeks'); - assert.equal(moment([2005]).isoWeeksInYear(), 52, '2005 has 53 iso weeks'); - assert.equal(moment([2006]).isoWeeksInYear(), 52, '2006 has 53 iso weeks'); - assert.equal(moment([2007]).isoWeeksInYear(), 52, '2007 has 52 iso weeks'); - assert.equal(moment([2008]).isoWeeksInYear(), 52, '2008 has 53 iso weeks'); - assert.equal(moment([2009]).isoWeeksInYear(), 53, '2009 has 53 iso weeks'); - assert.equal(moment([2010]).isoWeeksInYear(), 52, '2010 has 52 iso weeks'); - assert.equal(moment([2011]).isoWeeksInYear(), 52, '2011 has 52 iso weeks'); - assert.equal(moment([2012]).isoWeeksInYear(), 52, '2012 has 52 iso weeks'); - assert.equal(moment([2013]).isoWeeksInYear(), 52, '2013 has 52 iso weeks'); - assert.equal(moment([2014]).isoWeeksInYear(), 52, '2014 has 52 iso weeks'); - assert.equal(moment([2015]).isoWeeksInYear(), 53, '2015 has 53 iso weeks'); - }); - - test('weeksInYear doy/dow = 1/4', function (assert) { - moment.locale('1/4', {week: {dow: 1, doy: 4}}); - - assert.equal(moment([2004]).weeksInYear(), 53, '2004 has 53 weeks'); - assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks'); - assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks'); - assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); - assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); - assert.equal(moment([2009]).weeksInYear(), 53, '2009 has 53 weeks'); - assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks'); - assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks'); - assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks'); - assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); - assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); - assert.equal(moment([2015]).weeksInYear(), 53, '2015 has 53 weeks'); - }); - - test('weeksInYear doy/dow = 6/12', function (assert) { - moment.locale('6/12', {week: {dow: 6, doy: 12}}); - - assert.equal(moment([2004]).weeksInYear(), 53, '2004 has 53 weeks'); - assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks'); - assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks'); - assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); - assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); - assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks'); - assert.equal(moment([2010]).weeksInYear(), 53, '2010 has 52 weeks'); - assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks'); - assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks'); - assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); - assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); - assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks'); - }); - - test('weeksInYear doy/dow = 1/7', function (assert) { - moment.locale('1/7', {week: {dow: 1, doy: 7}}); - - assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 53 weeks'); - assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks'); - assert.equal(moment([2006]).weeksInYear(), 53, '2006 has 53 weeks'); - assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); - assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); - assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks'); - assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks'); - assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks'); - assert.equal(moment([2012]).weeksInYear(), 53, '2012 has 52 weeks'); - assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); - assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); - assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks'); - }); - - test('weeksInYear doy/dow = 0/6', function (assert) { - moment.locale('0/6', {week: {dow: 0, doy: 6}}); - - assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 53 weeks'); - assert.equal(moment([2005]).weeksInYear(), 53, '2005 has 53 weeks'); - assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks'); - assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); - assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); - assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks'); - assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks'); - assert.equal(moment([2011]).weeksInYear(), 53, '2011 has 52 weeks'); - assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks'); - assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); - assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); - assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks'); - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('zone switching'); - - test('local to utc, keepLocalTime = true', function (assert) { - var m = moment(), - fmt = 'YYYY-DD-MM HH:mm:ss'; - assert.equal(m.clone().utc(true).format(fmt), m.format(fmt), 'local to utc failed to keep local time'); - }); - - test('local to utc, keepLocalTime = false', function (assert) { - var m = moment(); - assert.equal(m.clone().utc().valueOf(), m.valueOf(), 'local to utc failed to keep utc time (implicit)'); - assert.equal(m.clone().utc(false).valueOf(), m.valueOf(), 'local to utc failed to keep utc time (explicit)'); - }); - - test('local to zone, keepLocalTime = true', function (assert) { - var m = moment(), - fmt = 'YYYY-DD-MM HH:mm:ss', - z; - - // Apparently there is -12:00 and +14:00 - // http://en.wikipedia.org/wiki/UTC+14:00 - // http://en.wikipedia.org/wiki/UTC-12:00 - for (z = -12; z <= 14; ++z) { - assert.equal(m.clone().zone(z * 60, true).format(fmt), m.format(fmt), - 'local to zone(' + z + ':00) failed to keep local time'); - } - }); - - test('local to zone, keepLocalTime = false', function (assert) { - var m = moment(), - z; - - // Apparently there is -12:00 and +14:00 - // http://en.wikipedia.org/wiki/UTC+14:00 - // http://en.wikipedia.org/wiki/UTC-12:00 - for (z = -12; z <= 14; ++z) { - assert.equal(m.clone().zone(z * 60).valueOf(), m.valueOf(), - 'local to zone(' + z + ':00) failed to keep utc time (implicit)'); - assert.equal(m.clone().zone(z * 60, false).valueOf(), m.valueOf(), - 'local to zone(' + z + ':00) failed to keep utc time (explicit)'); - } - }); - - test('utc to local, keepLocalTime = true', function (assert) { - var um = moment.utc(), - fmt = 'YYYY-DD-MM HH:mm:ss'; - - assert.equal(um.clone().local(true).format(fmt), um.format(fmt), 'utc to local failed to keep local time'); - }); - - test('utc to local, keepLocalTime = false', function (assert) { - var um = moment.utc(); - assert.equal(um.clone().local().valueOf(), um.valueOf(), 'utc to local failed to keep utc time (implicit)'); - assert.equal(um.clone().local(false).valueOf(), um.valueOf(), 'utc to local failed to keep utc time (explicit)'); - }); - - test('zone to local, keepLocalTime = true', function (assert) { - var m = moment(), - fmt = 'YYYY-DD-MM HH:mm:ss', - z; - - // Apparently there is -12:00 and +14:00 - // http://en.wikipedia.org/wiki/UTC+14:00 - // http://en.wikipedia.org/wiki/UTC-12:00 - for (z = -12; z <= 14; ++z) { - m.zone(z * 60); - - assert.equal(m.clone().local(true).format(fmt), m.format(fmt), - 'zone(' + z + ':00) to local failed to keep local time'); - } - }); - - test('zone to local, keepLocalTime = false', function (assert) { - var m = moment(), - z; - - // Apparently there is -12:00 and +14:00 - // http://en.wikipedia.org/wiki/UTC+14:00 - // http://en.wikipedia.org/wiki/UTC-12:00 - for (z = -12; z <= 14; ++z) { - m.zone(z * 60); - - assert.equal(m.clone().local(false).valueOf(), m.valueOf(), - 'zone(' + z + ':00) to local failed to keep utc time (explicit)'); - assert.equal(m.clone().local().valueOf(), m.valueOf(), - 'zone(' + z + ':00) to local failed to keep utc time (implicit)'); - } - }); - -})); - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module (name, lifecycle) { - QUnit.module(name, { - setup : function () { - moment.locale('en'); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - function localeModule (name, lifecycle) { - QUnit.module('locale:' + name, { - setup : function () { - moment.locale(name); - moment.createFromInputFallback = function () { - throw new Error('input not handled by moment'); - }; - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - teardown : function () { - moment.locale('en'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module('zones'); - - test('set zone', function (assert) { - var zone = moment(); - - zone.zone(0); - assert.equal(zone.zone(), 0, 'should be able to set the zone to 0'); - - zone.zone(60); - assert.equal(zone.zone(), 60, 'should be able to set the zone to 60'); - - zone.zone(-60); - assert.equal(zone.zone(), -60, 'should be able to set the zone to -60'); - }); - - test('set zone shorthand', function (assert) { - var zone = moment(); - - zone.zone(1); - assert.equal(zone.zone(), 60, 'setting the zone to 1 should imply hours and convert to 60'); - - zone.zone(-1); - assert.equal(zone.zone(), -60, 'setting the zone to -1 should imply hours and convert to -60'); - - zone.zone(15); - assert.equal(zone.zone(), 900, 'setting the zone to 15 should imply hours and convert to 900'); - - zone.zone(-15); - assert.equal(zone.zone(), -900, 'setting the zone to -15 should imply hours and convert to -900'); - - zone.zone(16); - assert.equal(zone.zone(), 16, 'setting the zone to 16 should imply minutes'); - - zone.zone(-16); - assert.equal(zone.zone(), -16, 'setting the zone to -16 should imply minutes'); - }); - - test('set zone with string', function (assert) { - var zone = moment(); - - zone.zone('+00:00'); - assert.equal(zone.zone(), 0, 'set the zone with a timezone string'); - - zone.zone('2013-03-07T07:00:00-08:00'); - assert.equal(zone.zone(), 480, 'set the zone with a string that does not begin with the timezone'); - - zone.zone('2013-03-07T07:00:00+0100'); - assert.equal(zone.zone(), -60, 'set the zone with a string that uses the +0000 syntax'); - - zone.zone('03-07-2013T07:00:00-08:00'); - assert.equal(zone.zone(), 480, 'set the zone with a string with a non-ISO 8601 date'); - }); - - test('change hours when changing the zone', function (assert) { - var zone = moment.utc([2000, 0, 1, 6]); - - zone.zone(0); - assert.equal(zone.hour(), 6, 'UTC 6AM should be 6AM at +0000'); - - zone.zone(60); - assert.equal(zone.hour(), 5, 'UTC 6AM should be 5AM at -0100'); - - zone.zone(-60); - assert.equal(zone.hour(), 7, 'UTC 6AM should be 7AM at +0100'); - }); - - test('change minutes when changing the zone', function (assert) { - var zone = moment.utc([2000, 0, 1, 6, 31]); - - zone.zone(0); - assert.equal(zone.format('HH:mm'), '06:31', 'UTC 6:31AM should be 6:31AM at +0000'); - - zone.zone(30); - assert.equal(zone.format('HH:mm'), '06:01', 'UTC 6:31AM should be 6:01AM at -0030'); - - zone.zone(-30); - assert.equal(zone.format('HH:mm'), '07:01', 'UTC 6:31AM should be 7:01AM at +0030'); - - zone.zone(1380); - assert.equal(zone.format('HH:mm'), '07:31', 'UTC 6:31AM should be 7:31AM at +1380'); - }); - - test('distance from the unix epoch', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA), - zoneC = moment(zoneA), - zoneD = moment(zoneA), - zoneE = moment(zoneA); - - zoneB.utc(); - assert.equal(+zoneA, +zoneB, 'moment should equal moment.utc'); - - zoneC.zone(-60); - assert.equal(+zoneA, +zoneC, 'moment should equal moment.zone(-60)'); - - zoneD.zone(480); - assert.equal(+zoneA, +zoneD, 'moment should equal moment.zone(480)'); - - zoneE.zone(1000); - assert.equal(+zoneA, +zoneE, 'moment should equal moment.zone(1000)'); - }); - - test('update offset after changing any values', function (assert) { - var oldOffset = moment.updateOffset, - m = moment.utc([2000, 6, 1]); - - moment.updateOffset = function (mom, keepTime) { - if (mom.__doChange) { - if (+mom > 962409600000) { - mom.zone(120, keepTime); - } else { - mom.zone(60, keepTime); - } - } - }; - - assert.equal(m.format('ZZ'), '+0000', 'should be at +0000'); - assert.equal(m.format('HH:mm'), '00:00', 'should start 12AM at +0000 timezone'); - - m.__doChange = true; - m.add(1, 'h'); - - assert.equal(m.format('ZZ'), '-0200', 'should be at -0200'); - assert.equal(m.format('HH:mm'), '23:00', '1AM at +0000 should be 11PM at -0200 timezone'); - - m.subtract(1, 'h'); - - assert.equal(m.format('ZZ'), '-0100', 'should be at -0100'); - assert.equal(m.format('HH:mm'), '23:00', '12AM at +0000 should be 11PM at -0100 timezone'); - - moment.updateOffset = oldOffset; - }); - - test('getters and setters', function (assert) { - var a = moment([2011, 5, 20]); - - assert.equal(a.clone().zone(120).year(2012).year(), 2012, 'should get and set year correctly'); - assert.equal(a.clone().zone(120).month(1).month(), 1, 'should get and set month correctly'); - assert.equal(a.clone().zone(120).date(2).date(), 2, 'should get and set date correctly'); - assert.equal(a.clone().zone(120).day(1).day(), 1, 'should get and set day correctly'); - assert.equal(a.clone().zone(120).hour(1).hour(), 1, 'should get and set hour correctly'); - assert.equal(a.clone().zone(120).minute(1).minute(), 1, 'should get and set minute correctly'); - }); - - test('getters', function (assert) { - var a = moment.utc([2012, 0, 1, 0, 0, 0]); - - assert.equal(a.clone().zone(120).year(), 2011, 'should get year correctly'); - assert.equal(a.clone().zone(120).month(), 11, 'should get month correctly'); - assert.equal(a.clone().zone(120).date(), 31, 'should get date correctly'); - assert.equal(a.clone().zone(120).hour(), 22, 'should get hour correctly'); - assert.equal(a.clone().zone(120).minute(), 0, 'should get minute correctly'); - - assert.equal(a.clone().zone(-120).year(), 2012, 'should get year correctly'); - assert.equal(a.clone().zone(-120).month(), 0, 'should get month correctly'); - assert.equal(a.clone().zone(-120).date(), 1, 'should get date correctly'); - assert.equal(a.clone().zone(-120).hour(), 2, 'should get hour correctly'); - assert.equal(a.clone().zone(-120).minute(), 0, 'should get minute correctly'); - - assert.equal(a.clone().zone(-90).year(), 2012, 'should get year correctly'); - assert.equal(a.clone().zone(-90).month(), 0, 'should get month correctly'); - assert.equal(a.clone().zone(-90).date(), 1, 'should get date correctly'); - assert.equal(a.clone().zone(-90).hour(), 1, 'should get hour correctly'); - assert.equal(a.clone().zone(-90).minute(), 30, 'should get minute correctly'); - }); - - test('from', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA).zone(720), - zoneC = moment(zoneA).zone(360), - zoneD = moment(zoneA).zone(-690), - other = moment(zoneA).add(35, 'm'); - - assert.equal(zoneA.from(other), zoneB.from(other), 'moment#from should be the same in all zones'); - assert.equal(zoneA.from(other), zoneC.from(other), 'moment#from should be the same in all zones'); - assert.equal(zoneA.from(other), zoneD.from(other), 'moment#from should be the same in all zones'); - }); - - test('diff', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA).zone(720), - zoneC = moment(zoneA).zone(360), - zoneD = moment(zoneA).zone(-690), - other = moment(zoneA).add(35, 'm'); - - assert.equal(zoneA.diff(other), zoneB.diff(other), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other), zoneC.diff(other), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other), zoneD.diff(other), 'moment#diff should be the same in all zones'); - - assert.equal(zoneA.diff(other, 'minute', true), zoneB.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'minute', true), zoneC.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'minute', true), zoneD.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); - - assert.equal(zoneA.diff(other, 'hour', true), zoneB.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'hour', true), zoneC.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'hour', true), zoneD.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); - }); - - test('unix offset and timestamp', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA).zone(720), - zoneC = moment(zoneA).zone(360), - zoneD = moment(zoneA).zone(-690); - - assert.equal(zoneA.unix(), zoneB.unix(), 'moment#unix should be the same in all zones'); - assert.equal(zoneA.unix(), zoneC.unix(), 'moment#unix should be the same in all zones'); - assert.equal(zoneA.unix(), zoneD.unix(), 'moment#unix should be the same in all zones'); - - assert.equal(+zoneA, +zoneB, 'moment#valueOf should be the same in all zones'); - assert.equal(+zoneA, +zoneC, 'moment#valueOf should be the same in all zones'); - assert.equal(+zoneA, +zoneD, 'moment#valueOf should be the same in all zones'); - }); - - test('cloning', function (assert) { - assert.equal(moment().zone(120).clone().zone(), 120, 'explicit cloning should retain the zone'); - assert.equal(moment().zone(-120).clone().zone(), -120, 'explicit cloning should retain the zone'); - assert.equal(moment(moment().zone(120)).zone(), 120, 'implicit cloning should retain the zone'); - assert.equal(moment(moment().zone(-120)).zone(), -120, 'implicit cloning should retain the zone'); - }); - - test('start of / end of', function (assert) { - var a = moment.utc([2010, 1, 2, 0, 0, 0]).zone(450); - - assert.equal(a.clone().startOf('day').hour(), 0, 'start of day should work on moments with a zone'); - assert.equal(a.clone().startOf('day').minute(), 0, 'start of day should work on moments with a zone'); - assert.equal(a.clone().startOf('hour').minute(), 0, 'start of hour should work on moments with a zone'); - - assert.equal(a.clone().endOf('day').hour(), 23, 'end of day should work on moments with a zone'); - assert.equal(a.clone().endOf('day').minute(), 59, 'end of day should work on moments with a zone'); - assert.equal(a.clone().endOf('hour').minute(), 59, 'end of hour should work on moments with a zone'); - }); - - test('reset zone with moment#utc', function (assert) { - var a = moment.utc([2012]).zone(480); - - assert.equal(a.clone().hour(), 16, 'different zone should have different hour'); - assert.equal(a.clone().utc().hour(), 0, 'calling moment#utc should reset the offset'); - }); - - test('reset zone with moment#local', function (assert) { - var a = moment([2012]).zone(480); - - assert.equal(a.clone().local().hour(), 0, 'calling moment#local should reset the offset'); - }); - - test('toDate', function (assert) { - var zoneA = new Date(), - zoneB = moment(zoneA).zone(720).toDate(), - zoneC = moment(zoneA).zone(360).toDate(), - zoneD = moment(zoneA).zone(-690).toDate(); - - assert.equal(+zoneA, +zoneB, 'moment#toDate should output a date with the right unix timestamp'); - assert.equal(+zoneA, +zoneC, 'moment#toDate should output a date with the right unix timestamp'); - assert.equal(+zoneA, +zoneD, 'moment#toDate should output a date with the right unix timestamp'); - }); - - test('same / before / after', function (assert) { - var zoneA = moment().utc(), - zoneB = moment(zoneA).zone(120), - zoneC = moment(zoneA).zone(-120); - - assert.ok(zoneA.isSame(zoneB), 'two moments with different offsets should be the same'); - assert.ok(zoneA.isSame(zoneC), 'two moments with different offsets should be the same'); - - assert.ok(zoneA.isSame(zoneB, 'hour'), 'two moments with different offsets should be the same hour'); - assert.ok(zoneA.isSame(zoneC, 'hour'), 'two moments with different offsets should be the same hour'); - - zoneA.add(1, 'hour'); - - assert.ok(zoneA.isAfter(zoneB), 'isAfter should work with two moments with different offsets'); - assert.ok(zoneA.isAfter(zoneC), 'isAfter should work with two moments with different offsets'); - - assert.ok(zoneA.isAfter(zoneB, 'hour'), 'isAfter:hour should work with two moments with different offsets'); - assert.ok(zoneA.isAfter(zoneC, 'hour'), 'isAfter:hour should work with two moments with different offsets'); - - zoneA.subtract(2, 'hour'); - - assert.ok(zoneA.isBefore(zoneB), 'isBefore should work with two moments with different offsets'); - assert.ok(zoneA.isBefore(zoneC), 'isBefore should work with two moments with different offsets'); - - assert.ok(zoneA.isBefore(zoneB, 'hour'), 'isBefore:hour should work with two moments with different offsets'); - assert.ok(zoneA.isBefore(zoneC, 'hour'), 'isBefore:hour should work with two moments with different offsets'); - }); - - test('add / subtract over dst', function (assert) { - var oldOffset = moment.updateOffset, - m = moment.utc([2000, 2, 31, 3]); - - moment.updateOffset = function (mom, keepTime) { - if (mom.clone().utc().month() > 2) { - mom.zone(-60, keepTime); - } else { - mom.zone(0, keepTime); - } - }; - - assert.equal(m.hour(), 3, 'should start at 00:00'); - - m.add(24, 'hour'); - - assert.equal(m.hour(), 4, 'adding 24 hours should disregard dst'); - - m.subtract(24, 'hour'); - - assert.equal(m.hour(), 3, 'subtracting 24 hours should disregard dst'); - - m.add(1, 'day'); - - assert.equal(m.hour(), 3, 'adding 1 day should have the same hour'); - - m.subtract(1, 'day'); - - assert.equal(m.hour(), 3, 'subtracting 1 day should have the same hour'); - - m.add(1, 'month'); - - assert.equal(m.hour(), 3, 'adding 1 month should have the same hour'); - - m.subtract(1, 'month'); - - assert.equal(m.hour(), 3, 'subtracting 1 month should have the same hour'); - - moment.updateOffset = oldOffset; - }); - - test('isDST', function (assert) { - var oldOffset = moment.updateOffset; - - moment.updateOffset = function (mom, keepTime) { - if (mom.month() > 2 && mom.month() < 9) { - mom.zone(-60, keepTime); - } else { - mom.zone(0, keepTime); - } - }; - - assert.ok(!moment().month(0).isDST(), 'Jan should not be summer dst'); - assert.ok(moment().month(6).isDST(), 'Jul should be summer dst'); - assert.ok(!moment().month(11).isDST(), 'Dec should not be summer dst'); - - moment.updateOffset = function (mom) { - if (mom.month() > 2 && mom.month() < 9) { - mom.zone(0); - } else { - mom.zone(-60); - } - }; - - assert.ok(moment().month(0).isDST(), 'Jan should be winter dst'); - assert.ok(!moment().month(6).isDST(), 'Jul should not be winter dst'); - assert.ok(moment().month(11).isDST(), 'Dec should be winter dst'); - - moment.updateOffset = oldOffset; - }); - - test('zone names', function (assert) { - assert.equal(moment().zoneAbbr(), '', 'Local zone abbr should be empty'); - assert.equal(moment().format('z'), '', 'Local zone formatted abbr should be empty'); - assert.equal(moment().zoneName(), '', 'Local zone name should be empty'); - assert.equal(moment().format('zz'), '', 'Local zone formatted name should be empty'); - - assert.equal(moment.utc().zoneAbbr(), 'UTC', 'UTC zone abbr should be UTC'); - assert.equal(moment.utc().format('z'), 'UTC', 'UTC zone formatted abbr should be UTC'); - assert.equal(moment.utc().zoneName(), 'Coordinated Universal Time', 'UTC zone abbr should be Coordinated Universal Time'); - assert.equal(moment.utc().format('zz'), 'Coordinated Universal Time', 'UTC zone formatted abbr should be Coordinated Universal Time'); - }); - - test('hours alignment with UTC', function (assert) { - assert.equal(moment().zone(120).hasAlignedHourOffset(), true); - assert.equal(moment().zone(-180).hasAlignedHourOffset(), true); - assert.equal(moment().zone(90).hasAlignedHourOffset(), false); - assert.equal(moment().zone(-90).hasAlignedHourOffset(), false); - }); - - test('hours alignment with other zone', function (assert) { - var m = moment().zone(120); - - assert.equal(m.hasAlignedHourOffset(moment().zone(180)), true); - assert.equal(m.hasAlignedHourOffset(moment().zone(-180)), true); - assert.equal(m.hasAlignedHourOffset(moment().zone(90)), false); - assert.equal(m.hasAlignedHourOffset(moment().zone(-90)), false); - - m = moment().zone(90); - - assert.equal(m.hasAlignedHourOffset(moment().zone(180)), false); - assert.equal(m.hasAlignedHourOffset(moment().zone(-180)), false); - assert.equal(m.hasAlignedHourOffset(moment().zone(30)), true); - assert.equal(m.hasAlignedHourOffset(moment().zone(-30)), true); - - m = moment().zone(-60); - - assert.equal(m.hasAlignedHourOffset(moment().zone(180)), true); - assert.equal(m.hasAlignedHourOffset(moment().zone(-180)), true); - assert.equal(m.hasAlignedHourOffset(moment().zone(90)), false); - assert.equal(m.hasAlignedHourOffset(moment().zone(-90)), false); - - m = moment().zone(25); - - assert.equal(m.hasAlignedHourOffset(moment().zone(-35)), true); - assert.equal(m.hasAlignedHourOffset(moment().zone(85)), true); - - assert.equal(m.hasAlignedHourOffset(moment().zone(35)), false); - assert.equal(m.hasAlignedHourOffset(moment().zone(-85)), false); - }); - - test('parse zone', function (assert) { - var m = moment('2013-01-01T00:00:00-13:00').parseZone(); - assert.equal(m.zone(), 13 * 60); - assert.equal(m.hours(), 0); - }); - - test('parse zone static', function (assert) { - var m = moment.parseZone('2013-01-01T00:00:00-13:00'); - assert.equal(m.zone(), 13 * 60); - assert.equal(m.hours(), 0); - }); - - test('parse zone with more arguments', function (assert) { - var m; - m = moment.parseZone('2013 01 01 05 -13:00', 'YYYY MM DD HH ZZ'); - assert.equal(m.format(), '2013-01-01T05:00:00-13:00', 'accept input and format'); - m = moment.parseZone('2013-01-01-13:00', 'YYYY MM DD ZZ', true); - assert.equal(m.isValid(), false, 'accept input, format and strict flag'); - m = moment.parseZone('2013-01-01-13:00', ['DD MM YYYY ZZ', 'YYYY MM DD ZZ']); - assert.equal(m.format(), '2013-01-01T00:00:00-13:00', 'accept input and array of formats'); - }); - - test('parse zone with a timezone from the format string', function (assert) { - var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY ZZ #####').parseZone(); - - assert.equal(m.zone(), 4 * 60); - }); - - test('parse zone without a timezone included in the format string', function (assert) { - var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY').parseZone(); - - assert.equal(m.zone(), -11 * 60); - }); - - test('timezone format', function (assert) { - assert.equal(moment().zone(-60).format('ZZ'), '+0100', '-60 -> +0100'); - assert.equal(moment().zone(-90).format('ZZ'), '+0130', '-90 -> +0130'); - assert.equal(moment().zone(-120).format('ZZ'), '+0200', '-120 -> +0200'); - - assert.equal(moment().zone(+60).format('ZZ'), '-0100', '+60 -> -0100'); - assert.equal(moment().zone(+90).format('ZZ'), '-0130', '+90 -> -0130'); - assert.equal(moment().zone(+120).format('ZZ'), '-0200', '+120 -> -0200'); - }); - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/moment.js b/elgg_clean/bower_components/moment/moment.js deleted file mode 100644 index 23cd3ede..00000000 --- a/elgg_clean/bower_components/moment/moment.js +++ /dev/null @@ -1,3195 +0,0 @@ -//! moment.js -//! version : 2.10.6 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - global.moment = factory() -}(this, function () { 'use strict'; - - var hookCallback; - - function utils_hooks__hooks () { - return hookCallback.apply(null, arguments); - } - - // This is done to register the method called with moment() - // without creating circular dependencies. - function setHookCallback (callback) { - hookCallback = callback; - } - - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } - - function isDate(input) { - return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; - } - - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } - - function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); - } - - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; - } - - function create_utc__createUTC (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); - } - - function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false - }; - } - - function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; - } - - function valid__isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m); - m._isValid = !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated; - - if (m._strict) { - m._isValid = m._isValid && - flags.charsLeftOver === 0 && - flags.unusedTokens.length === 0 && - flags.bigHour === undefined; - } - } - return m._isValid; - } - - function valid__createInvalid (flags) { - var m = create_utc__createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } - else { - getParsingFlags(m).userInvalidated = true; - } - - return m; - } - - var momentProperties = utils_hooks__hooks.momentProperties = []; - - function copyConfig(to, from) { - var i, prop, val; - - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = getParsingFlags(from); - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } - - return to; - } - - var updateInProgress = false; - - // Moment prototype object - function Moment(config) { - copyConfig(this, config); - this._d = new Date(config._d != null ? config._d.getTime() : NaN); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - utils_hooks__hooks.updateOffset(this); - updateInProgress = false; - } - } - - function isMoment (obj) { - return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); - } - - function absFloor (number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - - return value; - } - - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } - - function Locale() { - } - - var locales = {}; - var globalLocale; - - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } - - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } - - function loadLocale(name) { - var oldLocale = null; - // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && typeof module !== 'undefined' && - module && module.exports) { - try { - oldLocale = globalLocale._abbr; - require('./locale/' + name); - // because defineLocale currently also sets the global locale, we - // want to undo that for lazy loaded locales - locale_locales__getSetGlobalLocale(oldLocale); - } catch (e) { } - } - return locales[name]; - } - - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - function locale_locales__getSetGlobalLocale (key, values) { - var data; - if (key) { - if (typeof values === 'undefined') { - data = locale_locales__getLocale(key); - } - else { - data = defineLocale(key, values); - } - - if (data) { - // moment.duration._locale = moment._locale = data; - globalLocale = data; - } - } - - return globalLocale._abbr; - } - - function defineLocale (name, values) { - if (values !== null) { - values.abbr = name; - locales[name] = locales[name] || new Locale(); - locales[name].set(values); - - // backwards compat for now: also set the locale - locale_locales__getSetGlobalLocale(name); - - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - } - - // returns locale data - function locale_locales__getLocale (key) { - var locale; - - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } - - if (!key) { - return globalLocale; - } - - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } - - return chooseLocale(key); - } - - var aliases = {}; - - function addUnitAlias (unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; - } - - function normalizeUnits(units) { - return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; - } - - function makeGetSet (unit, keepTime) { - return function (value) { - if (value != null) { - get_set__set(this, unit, value); - utils_hooks__hooks.updateOffset(this, keepTime); - return this; - } else { - return get_set__get(this, unit); - } - }; - } - - function get_set__get (mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); - } - - function get_set__set (mom, unit, value) { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - - // MOMENTS - - function getSet (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - return this[units](value); - } - } - return this; - } - - function zeroFill(number, targetLength, forceSign) { - var absNumber = '' + Math.abs(number), - zerosToFill = targetLength - absNumber.length, - sign = number >= 0; - return (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; - } - - var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; - - var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - - var formatFunctions = {}; - - var formatTokenFunctions = {}; - - // token: 'M' - // padded: ['MM', 2] - // ordinal: 'Mo' - // callback: function () { this.month() + 1 } - function addFormatToken (token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); - }; - } - } - - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } - - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } - - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } - - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } - - format = expandFormat(format, m.localeData()); - formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); - - return formatFunctions[format](m); - } - - function expandFormat(format, locale) { - var i = 5; - - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } - - return format; - } - - var match1 = /\d/; // 0 - 9 - var match2 = /\d\d/; // 00 - 99 - var match3 = /\d{3}/; // 000 - 999 - var match4 = /\d{4}/; // 0000 - 9999 - var match6 = /[+-]?\d{6}/; // -999999 - 999999 - var match1to2 = /\d\d?/; // 0 - 99 - var match1to3 = /\d{1,3}/; // 0 - 999 - var match1to4 = /\d{1,4}/; // 0 - 9999 - var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 - - var matchUnsigned = /\d+/; // 0 - inf - var matchSigned = /[+-]?\d+/; // -inf - inf - - var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z - - var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 - - // any word (or two) characters or numbers including two/three word month in arabic. - var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; - - var regexes = {}; - - function isFunction (sth) { - // https://github.com/moment/moment/issues/2325 - return typeof sth === 'function' && - Object.prototype.toString.call(sth) === '[object Function]'; - } - - - function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; - } - - function getParseRegexForToken (token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } - - return regexes[token](config._strict, config._locale); - } - - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function unescapeFormat(s) { - return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } - - var tokens = {}; - - function addParseToken (token, callback) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (typeof callback === 'number') { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } - } - - function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); - } - - function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } - } - - var YEAR = 0; - var MONTH = 1; - var DATE = 2; - var HOUR = 3; - var MINUTE = 4; - var SECOND = 5; - var MILLISECOND = 6; - - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } - - // FORMATTING - - addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; - }); - - addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); - }); - - addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); - }); - - // ALIASES - - addUnitAlias('month', 'M'); - - // PARSING - - addRegexToken('M', match1to2); - addRegexToken('MM', match1to2, match2); - addRegexToken('MMM', matchWord); - addRegexToken('MMMM', matchWord); - - addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; - }); - - addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } - }); - - // LOCALES - - var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); - function localeMonths (m) { - return this._months[m.month()]; - } - - var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); - function localeMonthsShort (m) { - return this._monthsShort[m.month()]; - } - - function localeMonthsParse (monthName, format, strict) { - var i, mom, regex; - - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } - - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = create_utc__createUTC([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - } - - // MOMENTS - - function setMonth (mom, value) { - var dayOfMonth; - - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } - - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } - - function getSetMonth (value) { - if (value != null) { - setMonth(this, value); - utils_hooks__hooks.updateOffset(this, true); - return this; - } else { - return get_set__get(this, 'Month'); - } - } - - function getDaysInMonth () { - return daysInMonth(this.year(), this.month()); - } - - function checkOverflow (m) { - var overflow; - var a = m._a; - - if (a && getParsingFlags(m).overflow === -2) { - overflow = - a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : - a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : - a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : - a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : - a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : - a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - - getParsingFlags(m).overflow = overflow; - } - - return m; - } - - function warn(msg) { - if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } - - function deprecate(msg, fn) { - var firstTime = true; - - return extend(function () { - if (firstTime) { - warn(msg + '\n' + (new Error()).stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - - var deprecations = {}; - - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } - } - - utils_hooks__hooks.suppressDeprecationWarnings = false; - - var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - - var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ]; - - // iso time formats and regexes - var isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ]; - - var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; - - // date from iso format - function configFromISO(config) { - var i, l, - string = config._i, - match = from_string__isoRegex.exec(string); - - if (match) { - getParsingFlags(config).iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - config._f = isoDates[i][0]; - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - // match[6] should be 'T' or space - config._f += (match[6] || ' ') + isoTimes[i][0]; - break; - } - } - if (string.match(matchOffset)) { - config._f += 'Z'; - } - configFromStringAndFormat(config); - } else { - config._isValid = false; - } - } - - // date from iso format or fallback - function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); - - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } - - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - utils_hooks__hooks.createFromInputFallback(config); - } - } - - utils_hooks__hooks.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); - - function createDate (y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); - - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } - - function createUTCDate (y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; - } - - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); - - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - - // ALIASES - - addUnitAlias('year', 'y'); - - // PARSING - - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); - - addParseToken(['YYYYY', 'YYYYYY'], YEAR); - addParseToken('YYYY', function (input, array) { - array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input); - }); - addParseToken('YY', function (input, array) { - array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); - }); - - // HELPERS - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - - // HOOKS - - utils_hooks__hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - - // MOMENTS - - var getSetYear = makeGetSet('FullYear', false); - - function getIsLeapYear () { - return isLeapYear(this.year()); - } - - addFormatToken('w', ['ww', 2], 'wo', 'week'); - addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - - // ALIASES - - addUnitAlias('week', 'w'); - addUnitAlias('isoWeek', 'W'); - - // PARSING - - addRegexToken('w', match1to2); - addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); - addRegexToken('WW', match1to2, match2); - - addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); - }); - - // HELPERS - - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; - - - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } - - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } - - adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } - - // LOCALES - - function localeWeek (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - } - - var defaultLocaleWeek = { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }; - - function localeFirstDayOfWeek () { - return this._week.dow; - } - - function localeFirstDayOfYear () { - return this._week.doy; - } - - // MOMENTS - - function getSetWeek (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - function getSetISOWeek (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - - // ALIASES - - addUnitAlias('dayOfYear', 'DDD'); - - // PARSING - - addRegexToken('DDD', match1to3); - addRegexToken('DDDD', match3); - addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); - }); - - // HELPERS - - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear; - if (d < firstDayOfWeek) { - d += 7; - } - - weekday = weekday != null ? 1 * weekday : firstDayOfWeek; - - dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday; - - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; - } - - // MOMENTS - - function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - } - - // Pick the first defined of two or three arguments. - function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; - } - - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()]; - } - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } - - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function configFromArray (config) { - var i, date, input = [], currentDate, yearToUse; - - if (config._d) { - return; - } - - currentDate = currentDateArray(config); - - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } - - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse)) { - getParsingFlags(config)._overflowDayOfYear = true; - } - - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } - - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } - - if (config._nextDay) { - config._a[HOUR] = 24; - } - } - - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year); - week = defaults(w.w, 1); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } - - utils_hooks__hooks.ISO_8601 = function () {}; - - // date from string and format string - function configFromStringAndFormat(config) { - // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === utils_hooks__hooks.ISO_8601) { - configFromISO(config); - return; - } - - config._a = []; - getParsingFlags(config).empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } - else { - getParsingFlags(config).unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); - } - } - - // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } - - // clear _12h flag if hour is <= 12 - if (getParsingFlags(config).bigHour === true && - config._a[HOUR] <= 12 && - config._a[HOUR] > 0) { - getParsingFlags(config).bigHour = undefined; - } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); - - configFromArray(config); - checkOverflow(config); - } - - - function meridiemFixWrap (locale, hour, meridiem) { - var isPm; - - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // this is not supposed to happen - return hour; - } - } - - function configFromStringAndArray(config) { - var tempConfig, - bestMoment, - - scoreToBeat, - i, - currentScore; - - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; - } - - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); - - if (!valid__isValid(tempConfig)) { - continue; - } - - // if there is any input that was not parsed add a penalty for that format - currentScore += getParsingFlags(tempConfig).charsLeftOver; - - //or tokens - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - - getParsingFlags(tempConfig).score = currentScore; - - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } - - extend(config, bestMoment || tempConfig); - } - - function configFromObject(config) { - if (config._d) { - return; - } - - var i = normalizeObjectUnits(config._i); - config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond]; - - configFromArray(config); - } - - function createFromConfig (config) { - var res = new Moment(checkOverflow(prepareConfig(config))); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } - - return res; - } - - function prepareConfig (config) { - var input = config._i, - format = config._f; - - config._locale = config._locale || locale_locales__getLocale(config._l); - - if (input === null || (format === undefined && input === '')) { - return valid__createInvalid({nullInput: true}); - } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } - - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else if (isDate(input)) { - config._d = input; - } else { - configFromInput(config); - } - - return config; - } - - function configFromInput(config) { - var input = config._i; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if (typeof input === 'string') { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (typeof(input) === 'object') { - configFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - utils_hooks__hooks.createFromInputFallback(config); - } - } - - function createLocalOrUTC (input, format, locale, strict, isUTC) { - var c = {}; - - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - - return createFromConfig(c); - } - - function local__createLocal (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); - } - - var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function () { - var other = local__createLocal.apply(null, arguments); - return other < this ? this : other; - } - ); - - var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function () { - var other = local__createLocal.apply(null, arguments); - return other > this ? this : other; - } - ); - - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return local__createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } - - // TODO: Use [].sort instead? - function min () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - } - - function max () { - var args = [].slice.call(arguments, 0); - - return pickBy('isAfter', args); - } - - function Duration (duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = locale_locales__getLocale(); - - this._bubble(); - } - - function isDuration (obj) { - return obj instanceof Duration; - } - - function offset (token, separator) { - addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(); - var sign = '+'; - if (offset < 0) { - offset = -offset; - sign = '-'; - } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); - }); - } - - offset('Z', ':'); - offset('ZZ', ''); - - // PARSING - - addRegexToken('Z', matchOffset); - addRegexToken('ZZ', matchOffset); - addParseToken(['Z', 'ZZ'], function (input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(input); - }); - - // HELPERS - - // timezone chunker - // '+10:00' > ['10', '00'] - // '-1530' > ['-15', '30'] - var chunkOffset = /([\+\-]|\d\d)/gi; - - function offsetFromString(string) { - var matches = ((string || '').match(matchOffset) || []); - var chunk = matches[matches.length - 1] || []; - var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - var minutes = +(parts[1] * 60) + toInt(parts[2]); - - return parts[0] === '+' ? minutes : -minutes; - } - - // Return a moment from input, that is local/utc/zone equivalent to model. - function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - utils_hooks__hooks.updateOffset(res, false); - return res; - } else { - return local__createLocal(input).local(); - } - } - - function getDateOffset (m) { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset() / 15) * 15; - } - - // HOOKS - - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - utils_hooks__hooks.updateOffset = function () {}; - - // MOMENTS - - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - function getSetOffset (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = offsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - utils_hooks__hooks.updateOffset(this, true); - this._changeInProgress = null; - } - } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); - } - } - - function getSetZone (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } - - this.utcOffset(input, keepLocalTime); - - return this; - } else { - return -this.utcOffset(); - } - } - - function setOffsetToUTC (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - } - - function setOffsetToLocal (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - - if (keepLocalTime) { - this.subtract(getDateOffset(this), 'm'); - } - } - return this; - } - - function setOffsetToParsedOffset () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(offsetFromString(this._i)); - } - return this; - } - - function hasAlignedHourOffset (input) { - input = input ? local__createLocal(input).utcOffset() : 0; - - return (this.utcOffset() - input) % 60 === 0; - } - - function isDaylightSavingTime () { - return ( - this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset() - ); - } - - function isDaylightSavingTimeShifted () { - if (typeof this._isDSTShifted !== 'undefined') { - return this._isDSTShifted; - } - - var c = {}; - - copyConfig(c, this); - c = prepareConfig(c); - - if (c._a) { - var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a); - this._isDSTShifted = this.isValid() && - compareArrays(c._a, other.toArray()) > 0; - } else { - this._isDSTShifted = false; - } - - return this._isDSTShifted; - } - - function isLocal () { - return !this._isUTC; - } - - function isUtcOffset () { - return this._isUTC; - } - - function isUtc () { - return this._isUTC && this._offset === 0; - } - - var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/; - - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; - - function create__createDuration (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - diffRes; - - if (isDuration(input)) { - duration = { - ms : input._milliseconds, - d : input._days, - M : input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : 0, - d : toInt(match[DATE]) * sign, - h : toInt(match[HOUR]) * sign, - m : toInt(match[MINUTE]) * sign, - s : toInt(match[SECOND]) * sign, - ms : toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = create__isoRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : parseIso(match[2], sign), - M : parseIso(match[3], sign), - d : parseIso(match[4], sign), - h : parseIso(match[5], sign), - m : parseIso(match[6], sign), - s : parseIso(match[7], sign), - w : parseIso(match[8], sign) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)); - - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - - ret = new Duration(duration); - - if (isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } - - return ret; - } - - create__createDuration.fn = Duration.prototype; - - function parseIso (inp, sign) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - } - - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; - } - - function momentsDifference(base, other) { - var res; - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - - return res; - } - - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = create__createDuration(val, period); - add_subtract__addSubtract(this, dur, direction); - return this; - }; - } - - function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); - } - if (months) { - setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - utils_hooks__hooks.updateOffset(mom, days || months); - } - } - - var add_subtract__add = createAdder(1, 'add'); - var add_subtract__subtract = createAdder(-1, 'subtract'); - - function moment_calendar__calendar (time, formats) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're local/utc/offset or not. - var now = time || local__createLocal(), - sod = cloneWithOffset(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(formats && formats[format] || this.localeData().calendar(format, this, local__createLocal(now))); - } - - function clone () { - return new Moment(this); - } - - function isAfter (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this > +input; - } else { - inputMs = isMoment(input) ? +input : +local__createLocal(input); - return inputMs < +this.clone().startOf(units); - } - } - - function isBefore (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this < +input; - } else { - inputMs = isMoment(input) ? +input : +local__createLocal(input); - return +this.clone().endOf(units) < inputMs; - } - } - - function isBetween (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - } - - function isSame (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this === +input; - } else { - inputMs = +local__createLocal(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - } - - function diff (input, units, asFloat) { - var that = cloneWithOffset(input, this), - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4, - delta, output; - - units = normalizeUnits(units); - - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - delta = this - that; - output = units === 'second' ? delta / 1e3 : // 1000 - units === 'minute' ? delta / 6e4 : // 1000 * 60 - units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - delta; - } - return asFloat ? output : absFloor(output); - } - - function monthDiff (a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; - - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } - - return -(wholeMonthDiff + adjust); - } - - utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; - - function toString () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - } - - function moment_format__toISOString () { - var m = this.clone().utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } - - function format (inputString) { - var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat); - return this.localeData().postformat(output); - } - - function from (time, withoutSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - } - - function fromNow (withoutSuffix) { - return this.from(local__createLocal(), withoutSuffix); - } - - function to (time, withoutSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); - } - - function toNow (withoutSuffix) { - return this.to(local__createLocal(), withoutSuffix); - } - - function locale (key) { - var newLocaleData; - - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = locale_locales__getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - } - - var lang = deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ); - - function localeData () { - return this._locale; - } - - function startOf (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - } - - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } - if (units === 'isoWeek') { - this.isoWeekday(1); - } - - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } - - return this; - } - - function endOf (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - } - - function to_type__valueOf () { - return +this._d - ((this._offset || 0) * 60000); - } - - function unix () { - return Math.floor(+this / 1000); - } - - function toDate () { - return this._offset ? new Date(+this) : this._d; - } - - function toArray () { - var m = this; - return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; - } - - function toObject () { - var m = this; - return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds() - }; - } - - function moment_valid__isValid () { - return valid__isValid(this); - } - - function parsingFlags () { - return extend({}, getParsingFlags(this)); - } - - function invalidAt () { - return getParsingFlags(this).overflow; - } - - addFormatToken(0, ['gg', 2], 0, function () { - return this.weekYear() % 100; - }); - - addFormatToken(0, ['GG', 2], 0, function () { - return this.isoWeekYear() % 100; - }); - - function addWeekYearFormatToken (token, getter) { - addFormatToken(0, [token, token.length], 0, getter); - } - - addWeekYearFormatToken('gggg', 'weekYear'); - addWeekYearFormatToken('ggggg', 'weekYear'); - addWeekYearFormatToken('GGGG', 'isoWeekYear'); - addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - - // ALIASES - - addUnitAlias('weekYear', 'gg'); - addUnitAlias('isoWeekYear', 'GG'); - - // PARSING - - addRegexToken('G', matchSigned); - addRegexToken('g', matchSigned); - addRegexToken('GG', match1to2, match2); - addRegexToken('gg', match1to2, match2); - addRegexToken('GGGG', match1to4, match4); - addRegexToken('gggg', match1to4, match4); - addRegexToken('GGGGG', match1to6, match6); - addRegexToken('ggggg', match1to6, match6); - - addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { - week[token.substr(0, 2)] = toInt(input); - }); - - addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = utils_hooks__hooks.parseTwoDigitYear(input); - }); - - // HELPERS - - function weeksInYear(year, dow, doy) { - return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week; - } - - // MOMENTS - - function getSetWeekYear (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - } - - function getSetISOWeekYear (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - } - - function getISOWeeksInYear () { - return weeksInYear(this.year(), 1, 4); - } - - function getWeeksInYear () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - } - - addFormatToken('Q', 0, 0, 'quarter'); - - // ALIASES - - addUnitAlias('quarter', 'Q'); - - // PARSING - - addRegexToken('Q', match1); - addParseToken('Q', function (input, array) { - array[MONTH] = (toInt(input) - 1) * 3; - }); - - // MOMENTS - - function getSetQuarter (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - } - - addFormatToken('D', ['DD', 2], 'Do', 'date'); - - // ALIASES - - addUnitAlias('date', 'D'); - - // PARSING - - addRegexToken('D', match1to2); - addRegexToken('DD', match1to2, match2); - addRegexToken('Do', function (isStrict, locale) { - return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; - }); - - addParseToken(['D', 'DD'], DATE); - addParseToken('Do', function (input, array) { - array[DATE] = toInt(input.match(match1to2)[0], 10); - }); - - // MOMENTS - - var getSetDayOfMonth = makeGetSet('Date', true); - - addFormatToken('d', 0, 'do', 'day'); - - addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); - }); - - addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); - }); - - addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); - }); - - addFormatToken('e', 0, 0, 'weekday'); - addFormatToken('E', 0, 0, 'isoWeekday'); - - // ALIASES - - addUnitAlias('day', 'd'); - addUnitAlias('weekday', 'e'); - addUnitAlias('isoWeekday', 'E'); - - // PARSING - - addRegexToken('d', match1to2); - addRegexToken('e', match1to2); - addRegexToken('E', match1to2); - addRegexToken('dd', matchWord); - addRegexToken('ddd', matchWord); - addRegexToken('dddd', matchWord); - - addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) { - var weekday = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; - } - }); - - addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); - }); - - // HELPERS - - function parseWeekday(input, locale) { - if (typeof input !== 'string') { - return input; - } - - if (!isNaN(input)) { - return parseInt(input, 10); - } - - input = locale.weekdaysParse(input); - if (typeof input === 'number') { - return input; - } - - return null; - } - - // LOCALES - - var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); - function localeWeekdays (m) { - return this._weekdays[m.day()]; - } - - var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); - function localeWeekdaysShort (m) { - return this._weekdaysShort[m.day()]; - } - - var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); - function localeWeekdaysMin (m) { - return this._weekdaysMin[m.day()]; - } - - function localeWeekdaysParse (weekdayName) { - var i, mom, regex; - - this._weekdaysParse = this._weekdaysParse || []; - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = local__createLocal([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - } - - // MOMENTS - - function getSetDayOfWeek (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - } - - function getSetLocaleDayOfWeek (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - } - - function getSetISODayOfWeek (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - } - - addFormatToken('H', ['HH', 2], 0, 'hour'); - addFormatToken('h', ['hh', 2], 0, function () { - return this.hours() % 12 || 12; - }); - - function meridiem (token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); - }); - } - - meridiem('a', true); - meridiem('A', false); - - // ALIASES - - addUnitAlias('hour', 'h'); - - // PARSING - - function matchMeridiem (isStrict, locale) { - return locale._meridiemParse; - } - - addRegexToken('a', matchMeridiem); - addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('HH', match1to2, match2); - addRegexToken('hh', match1to2, match2); - - addParseToken(['H', 'HH'], HOUR); - addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; - }); - addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; - }); - - // LOCALES - - function localeIsPM (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - } - - var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; - function localeMeridiem (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - } - - - // MOMENTS - - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - var getSetHour = makeGetSet('Hours', true); - - addFormatToken('m', ['mm', 2], 0, 'minute'); - - // ALIASES - - addUnitAlias('minute', 'm'); - - // PARSING - - addRegexToken('m', match1to2); - addRegexToken('mm', match1to2, match2); - addParseToken(['m', 'mm'], MINUTE); - - // MOMENTS - - var getSetMinute = makeGetSet('Minutes', false); - - addFormatToken('s', ['ss', 2], 0, 'second'); - - // ALIASES - - addUnitAlias('second', 's'); - - // PARSING - - addRegexToken('s', match1to2); - addRegexToken('ss', match1to2, match2); - addParseToken(['s', 'ss'], SECOND); - - // MOMENTS - - var getSetSecond = makeGetSet('Seconds', false); - - addFormatToken('S', 0, 0, function () { - return ~~(this.millisecond() / 100); - }); - - addFormatToken(0, ['SS', 2], 0, function () { - return ~~(this.millisecond() / 10); - }); - - addFormatToken(0, ['SSS', 3], 0, 'millisecond'); - addFormatToken(0, ['SSSS', 4], 0, function () { - return this.millisecond() * 10; - }); - addFormatToken(0, ['SSSSS', 5], 0, function () { - return this.millisecond() * 100; - }); - addFormatToken(0, ['SSSSSS', 6], 0, function () { - return this.millisecond() * 1000; - }); - addFormatToken(0, ['SSSSSSS', 7], 0, function () { - return this.millisecond() * 10000; - }); - addFormatToken(0, ['SSSSSSSS', 8], 0, function () { - return this.millisecond() * 100000; - }); - addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { - return this.millisecond() * 1000000; - }); - - - // ALIASES - - addUnitAlias('millisecond', 'ms'); - - // PARSING - - addRegexToken('S', match1to3, match1); - addRegexToken('SS', match1to3, match2); - addRegexToken('SSS', match1to3, match3); - - var token; - for (token = 'SSSS'; token.length <= 9; token += 'S') { - addRegexToken(token, matchUnsigned); - } - - function parseMs(input, array) { - array[MILLISECOND] = toInt(('0.' + input) * 1000); - } - - for (token = 'S'; token.length <= 9; token += 'S') { - addParseToken(token, parseMs); - } - // MOMENTS - - var getSetMillisecond = makeGetSet('Milliseconds', false); - - addFormatToken('z', 0, 0, 'zoneAbbr'); - addFormatToken('zz', 0, 0, 'zoneName'); - - // MOMENTS - - function getZoneAbbr () { - return this._isUTC ? 'UTC' : ''; - } - - function getZoneName () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - } - - var momentPrototype__proto = Moment.prototype; - - momentPrototype__proto.add = add_subtract__add; - momentPrototype__proto.calendar = moment_calendar__calendar; - momentPrototype__proto.clone = clone; - momentPrototype__proto.diff = diff; - momentPrototype__proto.endOf = endOf; - momentPrototype__proto.format = format; - momentPrototype__proto.from = from; - momentPrototype__proto.fromNow = fromNow; - momentPrototype__proto.to = to; - momentPrototype__proto.toNow = toNow; - momentPrototype__proto.get = getSet; - momentPrototype__proto.invalidAt = invalidAt; - momentPrototype__proto.isAfter = isAfter; - momentPrototype__proto.isBefore = isBefore; - momentPrototype__proto.isBetween = isBetween; - momentPrototype__proto.isSame = isSame; - momentPrototype__proto.isValid = moment_valid__isValid; - momentPrototype__proto.lang = lang; - momentPrototype__proto.locale = locale; - momentPrototype__proto.localeData = localeData; - momentPrototype__proto.max = prototypeMax; - momentPrototype__proto.min = prototypeMin; - momentPrototype__proto.parsingFlags = parsingFlags; - momentPrototype__proto.set = getSet; - momentPrototype__proto.startOf = startOf; - momentPrototype__proto.subtract = add_subtract__subtract; - momentPrototype__proto.toArray = toArray; - momentPrototype__proto.toObject = toObject; - momentPrototype__proto.toDate = toDate; - momentPrototype__proto.toISOString = moment_format__toISOString; - momentPrototype__proto.toJSON = moment_format__toISOString; - momentPrototype__proto.toString = toString; - momentPrototype__proto.unix = unix; - momentPrototype__proto.valueOf = to_type__valueOf; - - // Year - momentPrototype__proto.year = getSetYear; - momentPrototype__proto.isLeapYear = getIsLeapYear; - - // Week Year - momentPrototype__proto.weekYear = getSetWeekYear; - momentPrototype__proto.isoWeekYear = getSetISOWeekYear; - - // Quarter - momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter; - - // Month - momentPrototype__proto.month = getSetMonth; - momentPrototype__proto.daysInMonth = getDaysInMonth; - - // Week - momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek; - momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek; - momentPrototype__proto.weeksInYear = getWeeksInYear; - momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear; - - // Day - momentPrototype__proto.date = getSetDayOfMonth; - momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek; - momentPrototype__proto.weekday = getSetLocaleDayOfWeek; - momentPrototype__proto.isoWeekday = getSetISODayOfWeek; - momentPrototype__proto.dayOfYear = getSetDayOfYear; - - // Hour - momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour; - - // Minute - momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute; - - // Second - momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond; - - // Millisecond - momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond; - - // Offset - momentPrototype__proto.utcOffset = getSetOffset; - momentPrototype__proto.utc = setOffsetToUTC; - momentPrototype__proto.local = setOffsetToLocal; - momentPrototype__proto.parseZone = setOffsetToParsedOffset; - momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset; - momentPrototype__proto.isDST = isDaylightSavingTime; - momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted; - momentPrototype__proto.isLocal = isLocal; - momentPrototype__proto.isUtcOffset = isUtcOffset; - momentPrototype__proto.isUtc = isUtc; - momentPrototype__proto.isUTC = isUtc; - - // Timezone - momentPrototype__proto.zoneAbbr = getZoneAbbr; - momentPrototype__proto.zoneName = getZoneName; - - // Deprecations - momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); - momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); - momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); - momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone); - - var momentPrototype = momentPrototype__proto; - - function moment__createUnix (input) { - return local__createLocal(input * 1000); - } - - function moment__createInZone () { - return local__createLocal.apply(null, arguments).parseZone(); - } - - var defaultCalendar = { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }; - - function locale_calendar__calendar (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.call(mom, now) : output; - } - - var defaultLongDateFormat = { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' - }; - - function longDateFormat (key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; - - if (format || !formatUpper) { - return format; - } - - this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - - return this._longDateFormat[key]; - } - - var defaultInvalidDate = 'Invalid date'; - - function invalidDate () { - return this._invalidDate; - } - - var defaultOrdinal = '%d'; - var defaultOrdinalParse = /\d{1,2}/; - - function ordinal (number) { - return this._ordinal.replace('%d', number); - } - - function preParsePostFormat (string) { - return string; - } - - var defaultRelativeTime = { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }; - - function relative__relativeTime (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - } - - function pastFuture (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - } - - function locale_set__set (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); - } - - var prototype__proto = Locale.prototype; - - prototype__proto._calendar = defaultCalendar; - prototype__proto.calendar = locale_calendar__calendar; - prototype__proto._longDateFormat = defaultLongDateFormat; - prototype__proto.longDateFormat = longDateFormat; - prototype__proto._invalidDate = defaultInvalidDate; - prototype__proto.invalidDate = invalidDate; - prototype__proto._ordinal = defaultOrdinal; - prototype__proto.ordinal = ordinal; - prototype__proto._ordinalParse = defaultOrdinalParse; - prototype__proto.preparse = preParsePostFormat; - prototype__proto.postformat = preParsePostFormat; - prototype__proto._relativeTime = defaultRelativeTime; - prototype__proto.relativeTime = relative__relativeTime; - prototype__proto.pastFuture = pastFuture; - prototype__proto.set = locale_set__set; - - // Month - prototype__proto.months = localeMonths; - prototype__proto._months = defaultLocaleMonths; - prototype__proto.monthsShort = localeMonthsShort; - prototype__proto._monthsShort = defaultLocaleMonthsShort; - prototype__proto.monthsParse = localeMonthsParse; - - // Week - prototype__proto.week = localeWeek; - prototype__proto._week = defaultLocaleWeek; - prototype__proto.firstDayOfYear = localeFirstDayOfYear; - prototype__proto.firstDayOfWeek = localeFirstDayOfWeek; - - // Day of Week - prototype__proto.weekdays = localeWeekdays; - prototype__proto._weekdays = defaultLocaleWeekdays; - prototype__proto.weekdaysMin = localeWeekdaysMin; - prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin; - prototype__proto.weekdaysShort = localeWeekdaysShort; - prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort; - prototype__proto.weekdaysParse = localeWeekdaysParse; - - // Hours - prototype__proto.isPM = localeIsPM; - prototype__proto._meridiemParse = defaultLocaleMeridiemParse; - prototype__proto.meridiem = localeMeridiem; - - function lists__get (format, index, field, setter) { - var locale = locale_locales__getLocale(); - var utc = create_utc__createUTC().set(setter, index); - return locale[field](utc, format); - } - - function list (format, index, field, count, setter) { - if (typeof format === 'number') { - index = format; - format = undefined; - } - - format = format || ''; - - if (index != null) { - return lists__get(format, index, field, setter); - } - - var i; - var out = []; - for (i = 0; i < count; i++) { - out[i] = lists__get(format, i, field, setter); - } - return out; - } - - function lists__listMonths (format, index) { - return list(format, index, 'months', 12, 'month'); - } - - function lists__listMonthsShort (format, index) { - return list(format, index, 'monthsShort', 12, 'month'); - } - - function lists__listWeekdays (format, index) { - return list(format, index, 'weekdays', 7, 'day'); - } - - function lists__listWeekdaysShort (format, index) { - return list(format, index, 'weekdaysShort', 7, 'day'); - } - - function lists__listWeekdaysMin (format, index) { - return list(format, index, 'weekdaysMin', 7, 'day'); - } - - locale_locales__getSetGlobalLocale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - // Side effect imports - utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale); - utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale); - - var mathAbs = Math.abs; - - function duration_abs__abs () { - var data = this._data; - - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); - - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); - - return this; - } - - function duration_add_subtract__addSubtract (duration, input, value, direction) { - var other = create__createDuration(input, value); - - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; - - return duration._bubble(); - } - - // supports only 2.0-style add(1, 's') or add(duration) - function duration_add_subtract__add (input, value) { - return duration_add_subtract__addSubtract(this, input, value, 1); - } - - // supports only 2.0-style subtract(1, 's') or subtract(duration) - function duration_add_subtract__subtract (input, value) { - return duration_add_subtract__addSubtract(this, input, value, -1); - } - - function absCeil (number) { - if (number < 0) { - return Math.floor(number); - } else { - return Math.ceil(number); - } - } - - function bubble () { - var milliseconds = this._milliseconds; - var days = this._days; - var months = this._months; - var data = this._data; - var seconds, minutes, hours, years, monthsFromDays; - - // if we have a mix of positive and negative values, bubble down first - // check: https://github.com/moment/moment/issues/2166 - if (!((milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0))) { - milliseconds += absCeil(monthsToDays(months) + days) * 864e5; - days = 0; - months = 0; - } - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; - - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; - - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; - - hours = absFloor(minutes / 60); - data.hours = hours % 24; - - days += absFloor(hours / 24); - - // convert days to months - monthsFromDays = absFloor(daysToMonths(days)); - months += monthsFromDays; - days -= absCeil(monthsToDays(monthsFromDays)); - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - data.days = days; - data.months = months; - data.years = years; - - return this; - } - - function daysToMonths (days) { - // 400 years have 146097 days (taking into account leap year rules) - // 400 years have 12 months === 4800 - return days * 4800 / 146097; - } - - function monthsToDays (months) { - // the reverse of daysToMonths - return months * 146097 / 4800; - } - - function as (units) { - var days; - var months; - var milliseconds = this._milliseconds; - - units = normalizeUnits(units); - - if (units === 'month' || units === 'year') { - days = this._days + milliseconds / 864e5; - months = this._months + daysToMonths(days); - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(monthsToDays(this._months)); - switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 1440 + milliseconds / 6e4; - case 'second' : return days * 86400 + milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 864e5) + milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - } - - // TODO: Use this.as('ms')? - function duration_as__valueOf () { - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); - } - - function makeAs (alias) { - return function () { - return this.as(alias); - }; - } - - var asMilliseconds = makeAs('ms'); - var asSeconds = makeAs('s'); - var asMinutes = makeAs('m'); - var asHours = makeAs('h'); - var asDays = makeAs('d'); - var asWeeks = makeAs('w'); - var asMonths = makeAs('M'); - var asYears = makeAs('y'); - - function duration_get__get (units) { - units = normalizeUnits(units); - return this[units + 's'](); - } - - function makeGetter(name) { - return function () { - return this._data[name]; - }; - } - - var milliseconds = makeGetter('milliseconds'); - var seconds = makeGetter('seconds'); - var minutes = makeGetter('minutes'); - var hours = makeGetter('hours'); - var days = makeGetter('days'); - var months = makeGetter('months'); - var years = makeGetter('years'); - - function weeks () { - return absFloor(this.days() / 7); - } - - var round = Math.round; - var thresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }; - - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } - - function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) { - var duration = create__createDuration(posNegDuration).abs(); - var seconds = round(duration.as('s')); - var minutes = round(duration.as('m')); - var hours = round(duration.as('h')); - var days = round(duration.as('d')); - var months = round(duration.as('M')); - var years = round(duration.as('y')); - - var a = seconds < thresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < thresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < thresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < thresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < thresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; - - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); - } - - // This function allows you to set a threshold for relative time strings - function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return thresholds[threshold]; - } - thresholds[threshold] = limit; - return true; - } - - function humanize (withSuffix) { - var locale = this.localeData(); - var output = duration_humanize__relativeTime(this, !withSuffix, locale); - - if (withSuffix) { - output = locale.pastFuture(+this, output); - } - - return locale.postformat(output); - } - - var iso_string__abs = Math.abs; - - function iso_string__toISOString() { - // for ISO strings we do not use the normal bubbling rules: - // * milliseconds bubble up until they become hours - // * days do not bubble at all - // * months bubble up until they become years - // This is because there is no context-free conversion between hours and days - // (think of clock changes) - // and also not between days and months (28-31 days per month) - var seconds = iso_string__abs(this._milliseconds) / 1000; - var days = iso_string__abs(this._days); - var months = iso_string__abs(this._months); - var minutes, hours, years; - - // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); - seconds %= 60; - minutes %= 60; - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var Y = years; - var M = months; - var D = days; - var h = hours; - var m = minutes; - var s = seconds; - var total = this.asSeconds(); - - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - - return (total < 0 ? '-' : '') + - 'P' + - (Y ? Y + 'Y' : '') + - (M ? M + 'M' : '') + - (D ? D + 'D' : '') + - ((h || m || s) ? 'T' : '') + - (h ? h + 'H' : '') + - (m ? m + 'M' : '') + - (s ? s + 'S' : ''); - } - - var duration_prototype__proto = Duration.prototype; - - duration_prototype__proto.abs = duration_abs__abs; - duration_prototype__proto.add = duration_add_subtract__add; - duration_prototype__proto.subtract = duration_add_subtract__subtract; - duration_prototype__proto.as = as; - duration_prototype__proto.asMilliseconds = asMilliseconds; - duration_prototype__proto.asSeconds = asSeconds; - duration_prototype__proto.asMinutes = asMinutes; - duration_prototype__proto.asHours = asHours; - duration_prototype__proto.asDays = asDays; - duration_prototype__proto.asWeeks = asWeeks; - duration_prototype__proto.asMonths = asMonths; - duration_prototype__proto.asYears = asYears; - duration_prototype__proto.valueOf = duration_as__valueOf; - duration_prototype__proto._bubble = bubble; - duration_prototype__proto.get = duration_get__get; - duration_prototype__proto.milliseconds = milliseconds; - duration_prototype__proto.seconds = seconds; - duration_prototype__proto.minutes = minutes; - duration_prototype__proto.hours = hours; - duration_prototype__proto.days = days; - duration_prototype__proto.weeks = weeks; - duration_prototype__proto.months = months; - duration_prototype__proto.years = years; - duration_prototype__proto.humanize = humanize; - duration_prototype__proto.toISOString = iso_string__toISOString; - duration_prototype__proto.toString = iso_string__toISOString; - duration_prototype__proto.toJSON = iso_string__toISOString; - duration_prototype__proto.locale = locale; - duration_prototype__proto.localeData = localeData; - - // Deprecations - duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString); - duration_prototype__proto.lang = lang; - - // Side effect imports - - addFormatToken('X', 0, 0, 'unix'); - addFormatToken('x', 0, 0, 'valueOf'); - - // PARSING - - addRegexToken('x', matchSigned); - addRegexToken('X', matchTimestamp); - addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input, 10) * 1000); - }); - addParseToken('x', function (input, array, config) { - config._d = new Date(toInt(input)); - }); - - // Side effect imports - - - utils_hooks__hooks.version = '2.10.6'; - - setHookCallback(local__createLocal); - - utils_hooks__hooks.fn = momentPrototype; - utils_hooks__hooks.min = min; - utils_hooks__hooks.max = max; - utils_hooks__hooks.utc = create_utc__createUTC; - utils_hooks__hooks.unix = moment__createUnix; - utils_hooks__hooks.months = lists__listMonths; - utils_hooks__hooks.isDate = isDate; - utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale; - utils_hooks__hooks.invalid = valid__createInvalid; - utils_hooks__hooks.duration = create__createDuration; - utils_hooks__hooks.isMoment = isMoment; - utils_hooks__hooks.weekdays = lists__listWeekdays; - utils_hooks__hooks.parseZone = moment__createInZone; - utils_hooks__hooks.localeData = locale_locales__getLocale; - utils_hooks__hooks.isDuration = isDuration; - utils_hooks__hooks.monthsShort = lists__listMonthsShort; - utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; - utils_hooks__hooks.defineLocale = defineLocale; - utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; - utils_hooks__hooks.normalizeUnits = normalizeUnits; - utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; - - var _moment = utils_hooks__hooks; - - return _moment; - -})); \ No newline at end of file diff --git a/elgg_clean/bower_components/moment/src/lib/create/check-overflow.js b/elgg_clean/bower_components/moment/src/lib/create/check-overflow.js deleted file mode 100644 index 88a62ae5..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/check-overflow.js +++ /dev/null @@ -1,28 +0,0 @@ -import { daysInMonth } from '../units/month'; -import { YEAR, MONTH, DATE, HOUR, MINUTE, SECOND, MILLISECOND } from '../units/constants'; -import getParsingFlags from '../create/parsing-flags'; - -export default function checkOverflow (m) { - var overflow; - var a = m._a; - - if (a && getParsingFlags(m).overflow === -2) { - overflow = - a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : - a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : - a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : - a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : - a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : - a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - - getParsingFlags(m).overflow = overflow; - } - - return m; -} - diff --git a/elgg_clean/bower_components/moment/src/lib/create/date-from-array.js b/elgg_clean/bower_components/moment/src/lib/create/date-from-array.js deleted file mode 100644 index 349eebcc..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/date-from-array.js +++ /dev/null @@ -1,19 +0,0 @@ -export function createDate (y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); - - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; -} - -export function createUTCDate (y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; -} diff --git a/elgg_clean/bower_components/moment/src/lib/create/from-anything.js b/elgg_clean/bower_components/moment/src/lib/create/from-anything.js deleted file mode 100644 index 5a69dc55..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/from-anything.js +++ /dev/null @@ -1,96 +0,0 @@ -import isArray from '../utils/is-array'; -import isDate from '../utils/is-date'; -import map from '../utils/map'; -import { createInvalid } from './valid'; -import { Moment, isMoment } from '../moment/constructor'; -import { getLocale } from '../locale/locales'; -import { hooks } from '../utils/hooks'; -import checkOverflow from './check-overflow'; - -import { configFromStringAndArray } from './from-string-and-array'; -import { configFromStringAndFormat } from './from-string-and-format'; -import { configFromString } from './from-string'; -import { configFromArray } from './from-array'; -import { configFromObject } from './from-object'; - -function createFromConfig (config) { - var res = new Moment(checkOverflow(prepareConfig(config))); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } - - return res; -} - -export function prepareConfig (config) { - var input = config._i, - format = config._f; - - config._locale = config._locale || getLocale(config._l); - - if (input === null || (format === undefined && input === '')) { - return createInvalid({nullInput: true}); - } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } - - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else if (isDate(input)) { - config._d = input; - } else { - configFromInput(config); - } - - return config; -} - -function configFromInput(config) { - var input = config._i; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if (typeof input === 'string') { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (typeof(input) === 'object') { - configFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - hooks.createFromInputFallback(config); - } -} - -export function createLocalOrUTC (input, format, locale, strict, isUTC) { - var c = {}; - - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - - return createFromConfig(c); -} diff --git a/elgg_clean/bower_components/moment/src/lib/create/from-array.js b/elgg_clean/bower_components/moment/src/lib/create/from-array.js deleted file mode 100644 index c4239cb7..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/from-array.js +++ /dev/null @@ -1,124 +0,0 @@ -import { createDate, createUTCDate } from './date-from-array'; -import { daysInYear } from '../units/year'; -import { weekOfYear } from '../units/week'; -import { dayOfYearFromWeeks } from '../units/day-of-year'; -import { YEAR, MONTH, DATE, HOUR, MINUTE, SECOND, MILLISECOND } from '../units/constants'; -import { createLocal } from './local'; -import defaults from '../utils/defaults'; -import getParsingFlags from './parsing-flags'; - -function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()]; - } - return [now.getFullYear(), now.getMonth(), now.getDate()]; -} - -// convert an array to a date. -// the array should mirror the parameters below -// note: all values past the year are optional and will default to the lowest possible value. -// [year, month, day , hour, minute, second, millisecond] -export function configFromArray (config) { - var i, date, input = [], currentDate, yearToUse; - - if (config._d) { - return; - } - - currentDate = currentDateArray(config); - - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } - - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse)) { - getParsingFlags(config)._overflowDayOfYear = true; - } - - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } - - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } - - if (config._nextDay) { - config._a[HOUR] = 24; - } -} - -function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(createLocal(), dow, doy).year); - week = defaults(w.w, 1); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; -} diff --git a/elgg_clean/bower_components/moment/src/lib/create/from-object.js b/elgg_clean/bower_components/moment/src/lib/create/from-object.js deleted file mode 100644 index af8e082f..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/from-object.js +++ /dev/null @@ -1,13 +0,0 @@ -import { normalizeObjectUnits } from '../units/aliases'; -import { configFromArray } from './from-array'; - -export function configFromObject(config) { - if (config._d) { - return; - } - - var i = normalizeObjectUnits(config._i); - config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond]; - - configFromArray(config); -} diff --git a/elgg_clean/bower_components/moment/src/lib/create/from-string-and-array.js b/elgg_clean/bower_components/moment/src/lib/create/from-string-and-array.js deleted file mode 100644 index 1d8a7a80..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/from-string-and-array.js +++ /dev/null @@ -1,50 +0,0 @@ -import { copyConfig } from '../moment/constructor'; -import { configFromStringAndFormat } from './from-string-and-format'; -import getParsingFlags from './parsing-flags'; -import { isValid } from './valid'; -import extend from '../utils/extend'; - -// date from string and array of format strings -export function configFromStringAndArray(config) { - var tempConfig, - bestMoment, - - scoreToBeat, - i, - currentScore; - - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; - } - - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); - - if (!isValid(tempConfig)) { - continue; - } - - // if there is any input that was not parsed add a penalty for that format - currentScore += getParsingFlags(tempConfig).charsLeftOver; - - //or tokens - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - - getParsingFlags(tempConfig).score = currentScore; - - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } - - extend(config, bestMoment || tempConfig); -} diff --git a/elgg_clean/bower_components/moment/src/lib/create/from-string-and-format.js b/elgg_clean/bower_components/moment/src/lib/create/from-string-and-format.js deleted file mode 100644 index ae48b903..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/from-string-and-format.js +++ /dev/null @@ -1,102 +0,0 @@ -import { configFromISO } from './from-string'; -import { configFromArray } from './from-array'; -import { getParseRegexForToken } from '../parse/regex'; -import { addTimeToArrayFromToken } from '../parse/token'; -import { expandFormat, formatTokenFunctions, formattingTokens } from '../format/format'; -import checkOverflow from './check-overflow'; -import { HOUR } from '../units/constants'; -import { hooks } from '../utils/hooks'; -import getParsingFlags from './parsing-flags'; - -// constant that refers to the ISO standard -hooks.ISO_8601 = function () {}; - -// date from string and format string -export function configFromStringAndFormat(config) { - // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === hooks.ISO_8601) { - configFromISO(config); - return; - } - - config._a = []; - getParsingFlags(config).empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } - else { - getParsingFlags(config).unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); - } - } - - // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } - - // clear _12h flag if hour is <= 12 - if (getParsingFlags(config).bigHour === true && - config._a[HOUR] <= 12 && - config._a[HOUR] > 0) { - getParsingFlags(config).bigHour = undefined; - } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); - - configFromArray(config); - checkOverflow(config); -} - - -function meridiemFixWrap (locale, hour, meridiem) { - var isPm; - - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // this is not supposed to happen - return hour; - } -} diff --git a/elgg_clean/bower_components/moment/src/lib/create/from-string.js b/elgg_clean/bower_components/moment/src/lib/create/from-string.js deleted file mode 100644 index 4a7163b2..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/from-string.js +++ /dev/null @@ -1,83 +0,0 @@ -import { matchOffset } from '../parse/regex'; -import { configFromStringAndFormat } from './from-string-and-format'; -import { hooks } from '../utils/hooks'; -import { deprecate } from '../utils/deprecate'; -import getParsingFlags from './parsing-flags'; - -// iso 8601 regex -// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) -var isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - -var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] -]; - -// iso time formats and regexes -var isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] -]; - -var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; - -// date from iso format -export function configFromISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); - - if (match) { - getParsingFlags(config).iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - config._f = isoDates[i][0]; - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - // match[6] should be 'T' or space - config._f += (match[6] || ' ') + isoTimes[i][0]; - break; - } - } - if (string.match(matchOffset)) { - config._f += 'Z'; - } - configFromStringAndFormat(config); - } else { - config._isValid = false; - } -} - -// date from iso format or fallback -export function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); - - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } - - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - hooks.createFromInputFallback(config); - } -} - -hooks.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } -); diff --git a/elgg_clean/bower_components/moment/src/lib/create/local.js b/elgg_clean/bower_components/moment/src/lib/create/local.js deleted file mode 100644 index 88c1e269..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/local.js +++ /dev/null @@ -1,5 +0,0 @@ -import { createLocalOrUTC } from './from-anything'; - -export function createLocal (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); -} diff --git a/elgg_clean/bower_components/moment/src/lib/create/parsing-flags.js b/elgg_clean/bower_components/moment/src/lib/create/parsing-flags.js deleted file mode 100644 index 2bfbcb34..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/parsing-flags.js +++ /dev/null @@ -1,22 +0,0 @@ -function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false - }; -} - -export default function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; -} diff --git a/elgg_clean/bower_components/moment/src/lib/create/utc.js b/elgg_clean/bower_components/moment/src/lib/create/utc.js deleted file mode 100644 index 96139530..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/utc.js +++ /dev/null @@ -1,5 +0,0 @@ -import { createLocalOrUTC } from './from-anything'; - -export function createUTC (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); -} diff --git a/elgg_clean/bower_components/moment/src/lib/create/valid.js b/elgg_clean/bower_components/moment/src/lib/create/valid.js deleted file mode 100644 index ad56bfe0..00000000 --- a/elgg_clean/bower_components/moment/src/lib/create/valid.js +++ /dev/null @@ -1,37 +0,0 @@ -import extend from '../utils/extend'; -import { createUTC } from './utc'; -import getParsingFlags from '../create/parsing-flags'; - -export function isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m); - m._isValid = !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated; - - if (m._strict) { - m._isValid = m._isValid && - flags.charsLeftOver === 0 && - flags.unusedTokens.length === 0 && - flags.bigHour === undefined; - } - } - return m._isValid; -} - -export function createInvalid (flags) { - var m = createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } - else { - getParsingFlags(m).userInvalidated = true; - } - - return m; -} diff --git a/elgg_clean/bower_components/moment/src/lib/duration/abs.js b/elgg_clean/bower_components/moment/src/lib/duration/abs.js deleted file mode 100644 index 103a4cf9..00000000 --- a/elgg_clean/bower_components/moment/src/lib/duration/abs.js +++ /dev/null @@ -1,18 +0,0 @@ -var mathAbs = Math.abs; - -export function abs () { - var data = this._data; - - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); - - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); - - return this; -} diff --git a/elgg_clean/bower_components/moment/src/lib/duration/add-subtract.js b/elgg_clean/bower_components/moment/src/lib/duration/add-subtract.js deleted file mode 100644 index 3b44e186..00000000 --- a/elgg_clean/bower_components/moment/src/lib/duration/add-subtract.js +++ /dev/null @@ -1,21 +0,0 @@ -import { createDuration } from './create'; - -function addSubtract (duration, input, value, direction) { - var other = createDuration(input, value); - - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; - - return duration._bubble(); -} - -// supports only 2.0-style add(1, 's') or add(duration) -export function add (input, value) { - return addSubtract(this, input, value, 1); -} - -// supports only 2.0-style subtract(1, 's') or subtract(duration) -export function subtract (input, value) { - return addSubtract(this, input, value, -1); -} diff --git a/elgg_clean/bower_components/moment/src/lib/duration/as.js b/elgg_clean/bower_components/moment/src/lib/duration/as.js deleted file mode 100644 index 03ecd6da..00000000 --- a/elgg_clean/bower_components/moment/src/lib/duration/as.js +++ /dev/null @@ -1,55 +0,0 @@ -import { daysToMonths, monthsToDays } from './bubble'; -import { normalizeUnits } from '../units/aliases'; -import toInt from '../utils/to-int'; - -export function as (units) { - var days; - var months; - var milliseconds = this._milliseconds; - - units = normalizeUnits(units); - - if (units === 'month' || units === 'year') { - days = this._days + milliseconds / 864e5; - months = this._months + daysToMonths(days); - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(monthsToDays(this._months)); - switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 1440 + milliseconds / 6e4; - case 'second' : return days * 86400 + milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 864e5) + milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } -} - -// TODO: Use this.as('ms')? -export function valueOf () { - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); -} - -function makeAs (alias) { - return function () { - return this.as(alias); - }; -} - -export var asMilliseconds = makeAs('ms'); -export var asSeconds = makeAs('s'); -export var asMinutes = makeAs('m'); -export var asHours = makeAs('h'); -export var asDays = makeAs('d'); -export var asWeeks = makeAs('w'); -export var asMonths = makeAs('M'); -export var asYears = makeAs('y'); diff --git a/elgg_clean/bower_components/moment/src/lib/duration/bubble.js b/elgg_clean/bower_components/moment/src/lib/duration/bubble.js deleted file mode 100644 index 0c4a336e..00000000 --- a/elgg_clean/bower_components/moment/src/lib/duration/bubble.js +++ /dev/null @@ -1,61 +0,0 @@ -import absFloor from '../utils/abs-floor'; -import absCeil from '../utils/abs-ceil'; -import { createUTCDate } from '../create/date-from-array'; - -export function bubble () { - var milliseconds = this._milliseconds; - var days = this._days; - var months = this._months; - var data = this._data; - var seconds, minutes, hours, years, monthsFromDays; - - // if we have a mix of positive and negative values, bubble down first - // check: https://github.com/moment/moment/issues/2166 - if (!((milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0))) { - milliseconds += absCeil(monthsToDays(months) + days) * 864e5; - days = 0; - months = 0; - } - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; - - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; - - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; - - hours = absFloor(minutes / 60); - data.hours = hours % 24; - - days += absFloor(hours / 24); - - // convert days to months - monthsFromDays = absFloor(daysToMonths(days)); - months += monthsFromDays; - days -= absCeil(monthsToDays(monthsFromDays)); - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - data.days = days; - data.months = months; - data.years = years; - - return this; -} - -export function daysToMonths (days) { - // 400 years have 146097 days (taking into account leap year rules) - // 400 years have 12 months === 4800 - return days * 4800 / 146097; -} - -export function monthsToDays (months) { - // the reverse of daysToMonths - return months * 146097 / 4800; -} diff --git a/elgg_clean/bower_components/moment/src/lib/duration/constructor.js b/elgg_clean/bower_components/moment/src/lib/duration/constructor.js deleted file mode 100644 index 884c6f8c..00000000 --- a/elgg_clean/bower_components/moment/src/lib/duration/constructor.js +++ /dev/null @@ -1,41 +0,0 @@ -import { normalizeObjectUnits } from '../units/aliases'; -import { getLocale } from '../locale/locales'; - -export function Duration (duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = getLocale(); - - this._bubble(); -} - -export function isDuration (obj) { - return obj instanceof Duration; -} diff --git a/elgg_clean/bower_components/moment/src/lib/duration/create.js b/elgg_clean/bower_components/moment/src/lib/duration/create.js deleted file mode 100644 index 15f05dea..00000000 --- a/elgg_clean/bower_components/moment/src/lib/duration/create.js +++ /dev/null @@ -1,113 +0,0 @@ -import { Duration, isDuration } from './constructor'; -import toInt from '../utils/to-int'; -import hasOwnProp from '../utils/has-own-prop'; -import { DATE, HOUR, MINUTE, SECOND, MILLISECOND } from '../units/constants'; -import { cloneWithOffset } from '../units/offset'; -import { createLocal } from '../create/local'; - -// ASP.NET json date format regex -var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/; - -// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html -// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere -var isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; - -export function createDuration (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - diffRes; - - if (isDuration(input)) { - duration = { - ms : input._milliseconds, - d : input._days, - M : input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : 0, - d : toInt(match[DATE]) * sign, - h : toInt(match[HOUR]) * sign, - m : toInt(match[MINUTE]) * sign, - s : toInt(match[SECOND]) * sign, - ms : toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : parseIso(match[2], sign), - M : parseIso(match[3], sign), - d : parseIso(match[4], sign), - h : parseIso(match[5], sign), - m : parseIso(match[6], sign), - s : parseIso(match[7], sign), - w : parseIso(match[8], sign) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); - - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - - ret = new Duration(duration); - - if (isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } - - return ret; -} - -createDuration.fn = Duration.prototype; - -function parseIso (inp, sign) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; -} - -function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; -} - -function momentsDifference(base, other) { - var res; - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - - return res; -} diff --git a/elgg_clean/bower_components/moment/src/lib/duration/duration.js b/elgg_clean/bower_components/moment/src/lib/duration/duration.js deleted file mode 100644 index 24440bb2..00000000 --- a/elgg_clean/bower_components/moment/src/lib/duration/duration.js +++ /dev/null @@ -1,12 +0,0 @@ -// Side effect imports -import './prototype'; - -import { createDuration } from './create'; -import { isDuration } from './constructor'; -import { getSetRelativeTimeThreshold } from './humanize'; - -export { - createDuration, - isDuration, - getSetRelativeTimeThreshold -}; diff --git a/elgg_clean/bower_components/moment/src/lib/duration/get.js b/elgg_clean/bower_components/moment/src/lib/duration/get.js deleted file mode 100644 index 6dafacdd..00000000 --- a/elgg_clean/bower_components/moment/src/lib/duration/get.js +++ /dev/null @@ -1,25 +0,0 @@ -import { normalizeUnits } from '../units/aliases'; -import absFloor from '../utils/abs-floor'; - -export function get (units) { - units = normalizeUnits(units); - return this[units + 's'](); -} - -function makeGetter(name) { - return function () { - return this._data[name]; - }; -} - -export var milliseconds = makeGetter('milliseconds'); -export var seconds = makeGetter('seconds'); -export var minutes = makeGetter('minutes'); -export var hours = makeGetter('hours'); -export var days = makeGetter('days'); -export var months = makeGetter('months'); -export var years = makeGetter('years'); - -export function weeks () { - return absFloor(this.days() / 7); -} diff --git a/elgg_clean/bower_components/moment/src/lib/duration/humanize.js b/elgg_clean/bower_components/moment/src/lib/duration/humanize.js deleted file mode 100644 index d6dd83b0..00000000 --- a/elgg_clean/bower_components/moment/src/lib/duration/humanize.js +++ /dev/null @@ -1,64 +0,0 @@ -import { createDuration } from './create'; - -var round = Math.round; -var thresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year -}; - -// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize -function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); -} - -function relativeTime (posNegDuration, withoutSuffix, locale) { - var duration = createDuration(posNegDuration).abs(); - var seconds = round(duration.as('s')); - var minutes = round(duration.as('m')); - var hours = round(duration.as('h')); - var days = round(duration.as('d')); - var months = round(duration.as('M')); - var years = round(duration.as('y')); - - var a = seconds < thresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < thresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < thresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < thresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < thresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; - - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); -} - -// This function allows you to set a threshold for relative time strings -export function getSetRelativeTimeThreshold (threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return thresholds[threshold]; - } - thresholds[threshold] = limit; - return true; -} - -export function humanize (withSuffix) { - var locale = this.localeData(); - var output = relativeTime(this, !withSuffix, locale); - - if (withSuffix) { - output = locale.pastFuture(+this, output); - } - - return locale.postformat(output); -} diff --git a/elgg_clean/bower_components/moment/src/lib/duration/iso-string.js b/elgg_clean/bower_components/moment/src/lib/duration/iso-string.js deleted file mode 100644 index f33a968d..00000000 --- a/elgg_clean/bower_components/moment/src/lib/duration/iso-string.js +++ /dev/null @@ -1,52 +0,0 @@ -import absFloor from '../utils/abs-floor'; -var abs = Math.abs; - -export function toISOString() { - // for ISO strings we do not use the normal bubbling rules: - // * milliseconds bubble up until they become hours - // * days do not bubble at all - // * months bubble up until they become years - // This is because there is no context-free conversion between hours and days - // (think of clock changes) - // and also not between days and months (28-31 days per month) - var seconds = abs(this._milliseconds) / 1000; - var days = abs(this._days); - var months = abs(this._months); - var minutes, hours, years; - - // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); - seconds %= 60; - minutes %= 60; - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var Y = years; - var M = months; - var D = days; - var h = hours; - var m = minutes; - var s = seconds; - var total = this.asSeconds(); - - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - - return (total < 0 ? '-' : '') + - 'P' + - (Y ? Y + 'Y' : '') + - (M ? M + 'M' : '') + - (D ? D + 'D' : '') + - ((h || m || s) ? 'T' : '') + - (h ? h + 'H' : '') + - (m ? m + 'M' : '') + - (s ? s + 'S' : ''); -} diff --git a/elgg_clean/bower_components/moment/src/lib/duration/prototype.js b/elgg_clean/bower_components/moment/src/lib/duration/prototype.js deleted file mode 100644 index 0257ff9b..00000000 --- a/elgg_clean/bower_components/moment/src/lib/duration/prototype.js +++ /dev/null @@ -1,48 +0,0 @@ -import { Duration } from './constructor'; - -var proto = Duration.prototype; - -import { abs } from './abs'; -import { add, subtract } from './add-subtract'; -import { as, asMilliseconds, asSeconds, asMinutes, asHours, asDays, asWeeks, asMonths, asYears, valueOf } from './as'; -import { bubble } from './bubble'; -import { get, milliseconds, seconds, minutes, hours, days, months, years, weeks } from './get'; -import { humanize } from './humanize'; -import { toISOString } from './iso-string'; -import { lang, locale, localeData } from '../moment/locale'; - -proto.abs = abs; -proto.add = add; -proto.subtract = subtract; -proto.as = as; -proto.asMilliseconds = asMilliseconds; -proto.asSeconds = asSeconds; -proto.asMinutes = asMinutes; -proto.asHours = asHours; -proto.asDays = asDays; -proto.asWeeks = asWeeks; -proto.asMonths = asMonths; -proto.asYears = asYears; -proto.valueOf = valueOf; -proto._bubble = bubble; -proto.get = get; -proto.milliseconds = milliseconds; -proto.seconds = seconds; -proto.minutes = minutes; -proto.hours = hours; -proto.days = days; -proto.weeks = weeks; -proto.months = months; -proto.years = years; -proto.humanize = humanize; -proto.toISOString = toISOString; -proto.toString = toISOString; -proto.toJSON = toISOString; -proto.locale = locale; -proto.localeData = localeData; - -// Deprecations -import { deprecate } from '../utils/deprecate'; - -proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString); -proto.lang = lang; diff --git a/elgg_clean/bower_components/moment/src/lib/format/format.js b/elgg_clean/bower_components/moment/src/lib/format/format.js deleted file mode 100644 index 5378170b..00000000 --- a/elgg_clean/bower_components/moment/src/lib/format/format.js +++ /dev/null @@ -1,92 +0,0 @@ -import zeroFill from '../utils/zero-fill'; - -export var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; - -var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - -var formatFunctions = {}; - -export var formatTokenFunctions = {}; - -// token: 'M' -// padded: ['MM', 2] -// ordinal: 'Mo' -// callback: function () { this.month() + 1 } -export function addFormatToken (token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); - }; - } -} - -function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); -} - -function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } - - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; -} - -// format date using native date object -export function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } - - format = expandFormat(format, m.localeData()); - formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); - - return formatFunctions[format](m); -} - -export function expandFormat(format, locale) { - var i = 5; - - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } - - return format; -} - diff --git a/elgg_clean/bower_components/moment/src/lib/locale/calendar.js b/elgg_clean/bower_components/moment/src/lib/locale/calendar.js deleted file mode 100644 index 22545b96..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/calendar.js +++ /dev/null @@ -1,13 +0,0 @@ -export var defaultCalendar = { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' -}; - -export function calendar (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.call(mom, now) : output; -} diff --git a/elgg_clean/bower_components/moment/src/lib/locale/constructor.js b/elgg_clean/bower_components/moment/src/lib/locale/constructor.js deleted file mode 100644 index 2c17b5d0..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/constructor.js +++ /dev/null @@ -1,2 +0,0 @@ -export function Locale() { -} diff --git a/elgg_clean/bower_components/moment/src/lib/locale/en.js b/elgg_clean/bower_components/moment/src/lib/locale/en.js deleted file mode 100644 index 20964cd9..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/en.js +++ /dev/null @@ -1,15 +0,0 @@ -import './prototype'; -import { getSetGlobalLocale } from './locales'; -import toInt from '../utils/to-int'; - -getSetGlobalLocale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } -}); diff --git a/elgg_clean/bower_components/moment/src/lib/locale/formats.js b/elgg_clean/bower_components/moment/src/lib/locale/formats.js deleted file mode 100644 index 6d83b039..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/formats.js +++ /dev/null @@ -1,23 +0,0 @@ -export var defaultLongDateFormat = { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' -}; - -export function longDateFormat (key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; - - if (format || !formatUpper) { - return format; - } - - this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - - return this._longDateFormat[key]; -} diff --git a/elgg_clean/bower_components/moment/src/lib/locale/invalid.js b/elgg_clean/bower_components/moment/src/lib/locale/invalid.js deleted file mode 100644 index e9096339..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/invalid.js +++ /dev/null @@ -1,5 +0,0 @@ -export var defaultInvalidDate = 'Invalid date'; - -export function invalidDate () { - return this._invalidDate; -} diff --git a/elgg_clean/bower_components/moment/src/lib/locale/lists.js b/elgg_clean/bower_components/moment/src/lib/locale/lists.js deleted file mode 100644 index ea0161ab..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/lists.js +++ /dev/null @@ -1,48 +0,0 @@ -import { getLocale } from './locales'; -import { createUTC } from '../create/utc'; - -function get (format, index, field, setter) { - var locale = getLocale(); - var utc = createUTC().set(setter, index); - return locale[field](utc, format); -} - -function list (format, index, field, count, setter) { - if (typeof format === 'number') { - index = format; - format = undefined; - } - - format = format || ''; - - if (index != null) { - return get(format, index, field, setter); - } - - var i; - var out = []; - for (i = 0; i < count; i++) { - out[i] = get(format, i, field, setter); - } - return out; -} - -export function listMonths (format, index) { - return list(format, index, 'months', 12, 'month'); -} - -export function listMonthsShort (format, index) { - return list(format, index, 'monthsShort', 12, 'month'); -} - -export function listWeekdays (format, index) { - return list(format, index, 'weekdays', 7, 'day'); -} - -export function listWeekdaysShort (format, index) { - return list(format, index, 'weekdaysShort', 7, 'day'); -} - -export function listWeekdaysMin (format, index) { - return list(format, index, 'weekdaysMin', 7, 'day'); -} diff --git a/elgg_clean/bower_components/moment/src/lib/locale/locale.js b/elgg_clean/bower_components/moment/src/lib/locale/locale.js deleted file mode 100644 index 2fc3c46f..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/locale.js +++ /dev/null @@ -1,35 +0,0 @@ -// Side effect imports -import './prototype'; - -import { - getSetGlobalLocale, - defineLocale, - getLocale -} from './locales'; - -import { - listMonths, - listMonthsShort, - listWeekdays, - listWeekdaysShort, - listWeekdaysMin -} from './lists'; - -export { - getSetGlobalLocale, - defineLocale, - getLocale, - listMonths, - listMonthsShort, - listWeekdays, - listWeekdaysShort, - listWeekdaysMin -}; - -import { deprecate } from '../utils/deprecate'; -import { hooks } from '../utils/hooks'; - -hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); -hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); - -import './en'; diff --git a/elgg_clean/bower_components/moment/src/lib/locale/locales.js b/elgg_clean/bower_components/moment/src/lib/locale/locales.js deleted file mode 100644 index a32e5ace..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/locales.js +++ /dev/null @@ -1,117 +0,0 @@ -import isArray from '../utils/is-array'; -import compareArrays from '../utils/compare-arrays'; -import { Locale } from './constructor'; - -// internal storage for locale config files -var locales = {}; -var globalLocale; - -function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; -} - -// pick the locale from the array -// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each -// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root -function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; -} - -function loadLocale(name) { - var oldLocale = null; - // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && typeof module !== 'undefined' && - module && module.exports) { - try { - oldLocale = globalLocale._abbr; - require('./locale/' + name); - // because defineLocale currently also sets the global locale, we - // want to undo that for lazy loaded locales - getSetGlobalLocale(oldLocale); - } catch (e) { } - } - return locales[name]; -} - -// This function will load locale and then set the global locale. If -// no arguments are passed in, it will simply return the current global -// locale key. -export function getSetGlobalLocale (key, values) { - var data; - if (key) { - if (typeof values === 'undefined') { - data = getLocale(key); - } - else { - data = defineLocale(key, values); - } - - if (data) { - // moment.duration._locale = moment._locale = data; - globalLocale = data; - } - } - - return globalLocale._abbr; -} - -export function defineLocale (name, values) { - if (values !== null) { - values.abbr = name; - locales[name] = locales[name] || new Locale(); - locales[name].set(values); - - // backwards compat for now: also set the locale - getSetGlobalLocale(name); - - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } -} - -// returns locale data -export function getLocale (key) { - var locale; - - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } - - if (!key) { - return globalLocale; - } - - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } - - return chooseLocale(key); -} diff --git a/elgg_clean/bower_components/moment/src/lib/locale/ordinal.js b/elgg_clean/bower_components/moment/src/lib/locale/ordinal.js deleted file mode 100644 index 0028aca0..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/ordinal.js +++ /dev/null @@ -1,7 +0,0 @@ -export var defaultOrdinal = '%d'; -export var defaultOrdinalParse = /\d{1,2}/; - -export function ordinal (number) { - return this._ordinal.replace('%d', number); -} - diff --git a/elgg_clean/bower_components/moment/src/lib/locale/pre-post-format.js b/elgg_clean/bower_components/moment/src/lib/locale/pre-post-format.js deleted file mode 100644 index 10ed2058..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/pre-post-format.js +++ /dev/null @@ -1,3 +0,0 @@ -export function preParsePostFormat (string) { - return string; -} diff --git a/elgg_clean/bower_components/moment/src/lib/locale/prototype.js b/elgg_clean/bower_components/moment/src/lib/locale/prototype.js deleted file mode 100644 index ed02d4f3..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/prototype.js +++ /dev/null @@ -1,70 +0,0 @@ -import { Locale } from './constructor'; - -var proto = Locale.prototype; - -import { defaultCalendar, calendar } from './calendar'; -import { defaultLongDateFormat, longDateFormat } from './formats'; -import { defaultInvalidDate, invalidDate } from './invalid'; -import { defaultOrdinal, ordinal, defaultOrdinalParse } from './ordinal'; -import { preParsePostFormat } from './pre-post-format'; -import { defaultRelativeTime, relativeTime, pastFuture } from './relative'; -import { set } from './set'; - -proto._calendar = defaultCalendar; -proto.calendar = calendar; -proto._longDateFormat = defaultLongDateFormat; -proto.longDateFormat = longDateFormat; -proto._invalidDate = defaultInvalidDate; -proto.invalidDate = invalidDate; -proto._ordinal = defaultOrdinal; -proto.ordinal = ordinal; -proto._ordinalParse = defaultOrdinalParse; -proto.preparse = preParsePostFormat; -proto.postformat = preParsePostFormat; -proto._relativeTime = defaultRelativeTime; -proto.relativeTime = relativeTime; -proto.pastFuture = pastFuture; -proto.set = set; - -// Month -import { - localeMonthsParse, - defaultLocaleMonths, localeMonths, - defaultLocaleMonthsShort, localeMonthsShort -} from '../units/month'; - -proto.months = localeMonths; -proto._months = defaultLocaleMonths; -proto.monthsShort = localeMonthsShort; -proto._monthsShort = defaultLocaleMonthsShort; -proto.monthsParse = localeMonthsParse; - -// Week -import { localeWeek, defaultLocaleWeek, localeFirstDayOfYear, localeFirstDayOfWeek } from '../units/week'; -proto.week = localeWeek; -proto._week = defaultLocaleWeek; -proto.firstDayOfYear = localeFirstDayOfYear; -proto.firstDayOfWeek = localeFirstDayOfWeek; - -// Day of Week -import { - localeWeekdaysParse, - defaultLocaleWeekdays, localeWeekdays, - defaultLocaleWeekdaysMin, localeWeekdaysMin, - defaultLocaleWeekdaysShort, localeWeekdaysShort -} from '../units/day-of-week'; - -proto.weekdays = localeWeekdays; -proto._weekdays = defaultLocaleWeekdays; -proto.weekdaysMin = localeWeekdaysMin; -proto._weekdaysMin = defaultLocaleWeekdaysMin; -proto.weekdaysShort = localeWeekdaysShort; -proto._weekdaysShort = defaultLocaleWeekdaysShort; -proto.weekdaysParse = localeWeekdaysParse; - -// Hours -import { localeIsPM, defaultLocaleMeridiemParse, localeMeridiem } from '../units/hour'; - -proto.isPM = localeIsPM; -proto._meridiemParse = defaultLocaleMeridiemParse; -proto.meridiem = localeMeridiem; diff --git a/elgg_clean/bower_components/moment/src/lib/locale/relative.js b/elgg_clean/bower_components/moment/src/lib/locale/relative.js deleted file mode 100644 index 5986a675..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/relative.js +++ /dev/null @@ -1,27 +0,0 @@ -export var defaultRelativeTime = { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' -}; - -export function relativeTime (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); -} - -export function pastFuture (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); -} diff --git a/elgg_clean/bower_components/moment/src/lib/locale/set.js b/elgg_clean/bower_components/moment/src/lib/locale/set.js deleted file mode 100644 index 32db2ad7..00000000 --- a/elgg_clean/bower_components/moment/src/lib/locale/set.js +++ /dev/null @@ -1,14 +0,0 @@ -export function set (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/add-subtract.js b/elgg_clean/bower_components/moment/src/lib/moment/add-subtract.js deleted file mode 100644 index ebfe674b..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/add-subtract.js +++ /dev/null @@ -1,46 +0,0 @@ -import { get, set } from './get-set'; -import { setMonth } from '../units/month'; -import { createDuration } from '../duration/create'; -import { deprecateSimple } from '../utils/deprecate'; -import { hooks } from '../utils/hooks'; - -// TODO: remove 'name' arg after deprecation is removed -function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = createDuration(val, period); - addSubtract(this, dur, direction); - return this; - }; -} - -export function addSubtract (mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - set(mom, 'Date', get(mom, 'Date') + days * isAdding); - } - if (months) { - setMonth(mom, get(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - hooks.updateOffset(mom, days || months); - } -} - -export var add = createAdder(1, 'add'); -export var subtract = createAdder(-1, 'subtract'); - diff --git a/elgg_clean/bower_components/moment/src/lib/moment/calendar.js b/elgg_clean/bower_components/moment/src/lib/moment/calendar.js deleted file mode 100644 index c9df8031..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/calendar.js +++ /dev/null @@ -1,17 +0,0 @@ -import { createLocal } from '../create/local'; -import { cloneWithOffset } from '../units/offset'; - -export function calendar (time, formats) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're local/utc/offset or not. - var now = time || createLocal(), - sod = cloneWithOffset(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(formats && formats[format] || this.localeData().calendar(format, this, createLocal(now))); -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/clone.js b/elgg_clean/bower_components/moment/src/lib/moment/clone.js deleted file mode 100644 index d96b328b..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/clone.js +++ /dev/null @@ -1,5 +0,0 @@ -import { Moment } from './constructor'; - -export function clone () { - return new Moment(this); -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/compare.js b/elgg_clean/bower_components/moment/src/lib/moment/compare.js deleted file mode 100644 index b6634737..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/compare.js +++ /dev/null @@ -1,43 +0,0 @@ -import { isMoment } from './constructor'; -import { normalizeUnits } from '../units/aliases'; -import { createLocal } from '../create/local'; - -export function isAfter (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : createLocal(input); - return +this > +input; - } else { - inputMs = isMoment(input) ? +input : +createLocal(input); - return inputMs < +this.clone().startOf(units); - } -} - -export function isBefore (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : createLocal(input); - return +this < +input; - } else { - inputMs = isMoment(input) ? +input : +createLocal(input); - return +this.clone().endOf(units) < inputMs; - } -} - -export function isBetween (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); -} - -export function isSame (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : createLocal(input); - return +this === +input; - } else { - inputMs = +createLocal(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/constructor.js b/elgg_clean/bower_components/moment/src/lib/moment/constructor.js deleted file mode 100644 index f5f3da0f..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/constructor.js +++ /dev/null @@ -1,73 +0,0 @@ -import { hooks } from '../utils/hooks'; -import hasOwnProp from '../utils/has-own-prop'; -import getParsingFlags from '../create/parsing-flags'; - -// Plugins that add properties should also add the key here (null value), -// so we can properly clone ourselves. -var momentProperties = hooks.momentProperties = []; - -export function copyConfig(to, from) { - var i, prop, val; - - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = getParsingFlags(from); - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } - - return to; -} - -var updateInProgress = false; - -// Moment prototype object -export function Moment(config) { - copyConfig(this, config); - this._d = new Date(config._d != null ? config._d.getTime() : NaN); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - hooks.updateOffset(this); - updateInProgress = false; - } -} - -export function isMoment (obj) { - return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/diff.js b/elgg_clean/bower_components/moment/src/lib/moment/diff.js deleted file mode 100644 index 2c16d1dc..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/diff.js +++ /dev/null @@ -1,49 +0,0 @@ -import absFloor from '../utils/abs-floor'; -import { cloneWithOffset } from '../units/offset'; -import { normalizeUnits } from '../units/aliases'; - -export function diff (input, units, asFloat) { - var that = cloneWithOffset(input, this), - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4, - delta, output; - - units = normalizeUnits(units); - - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - delta = this - that; - output = units === 'second' ? delta / 1e3 : // 1000 - units === 'minute' ? delta / 6e4 : // 1000 * 60 - units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - delta; - } - return asFloat ? output : absFloor(output); -} - -function monthDiff (a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; - - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } - - return -(wholeMonthDiff + adjust); -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/format.js b/elgg_clean/bower_components/moment/src/lib/moment/format.js deleted file mode 100644 index 4939f389..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/format.js +++ /dev/null @@ -1,27 +0,0 @@ -import { formatMoment } from '../format/format'; -import { hooks } from '../utils/hooks'; - -hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; - -export function toString () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); -} - -export function toISOString () { - var m = this.clone().utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } -} - -export function format (inputString) { - var output = formatMoment(this, inputString || hooks.defaultFormat); - return this.localeData().postformat(output); -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/from.js b/elgg_clean/bower_components/moment/src/lib/moment/from.js deleted file mode 100644 index c6a5449f..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/from.js +++ /dev/null @@ -1,13 +0,0 @@ -import { createDuration } from '../duration/create'; -import { createLocal } from '../create/local'; - -export function from (time, withoutSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); -} - -export function fromNow (withoutSuffix) { - return this.from(createLocal(), withoutSuffix); -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/get-set.js b/elgg_clean/bower_components/moment/src/lib/moment/get-set.js deleted file mode 100644 index 0f2be604..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/get-set.js +++ /dev/null @@ -1,39 +0,0 @@ -import { normalizeUnits } from '../units/aliases'; -import { hooks } from '../utils/hooks'; - -export function makeGetSet (unit, keepTime) { - return function (value) { - if (value != null) { - set(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; - } else { - return get(this, unit); - } - }; -} - -export function get (mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); -} - -export function set (mom, unit, value) { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); -} - -// MOMENTS - -export function getSet (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - return this[units](value); - } - } - return this; -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/locale.js b/elgg_clean/bower_components/moment/src/lib/moment/locale.js deleted file mode 100644 index fb46e656..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/locale.js +++ /dev/null @@ -1,34 +0,0 @@ -import { getLocale } from '../locale/locales'; -import { deprecate } from '../utils/deprecate'; - -// If passed a locale key, it will set the locale for this -// instance. Otherwise, it will return the locale configuration -// variables for this instance. -export function locale (key) { - var newLocaleData; - - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } -} - -export var lang = deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } -); - -export function localeData () { - return this._locale; -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/min-max.js b/elgg_clean/bower_components/moment/src/lib/moment/min-max.js deleted file mode 100644 index 912cbfe7..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/min-max.js +++ /dev/null @@ -1,54 +0,0 @@ -import { deprecate } from '../utils/deprecate'; -import isArray from '../utils/is-array'; -import { createLocal } from '../create/local'; - -export var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function () { - var other = createLocal.apply(null, arguments); - return other < this ? this : other; - } - ); - -export var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function () { - var other = createLocal.apply(null, arguments); - return other > this ? this : other; - } -); - -// Pick a moment m from moments so that m[fn](other) is true for all -// other. This relies on the function fn to be transitive. -// -// moments should either be an array of moment objects or an array, whose -// first element is an array of moment objects. -function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; - } - } - return res; -} - -// TODO: Use [].sort instead? -export function min () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); -} - -export function max () { - var args = [].slice.call(arguments, 0); - - return pickBy('isAfter', args); -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/moment.js b/elgg_clean/bower_components/moment/src/lib/moment/moment.js deleted file mode 100644 index cf73b9f7..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/moment.js +++ /dev/null @@ -1,26 +0,0 @@ -import { createLocal } from '../create/local'; -import { createUTC } from '../create/utc'; -import { createInvalid } from '../create/valid'; -import { isMoment } from './constructor'; -import { min, max } from './min-max'; -import momentPrototype from './prototype'; - -function createUnix (input) { - return createLocal(input * 1000); -} - -function createInZone () { - return createLocal.apply(null, arguments).parseZone(); -} - -export { - min, - max, - isMoment, - createUTC, - createUnix, - createLocal, - createInZone, - createInvalid, - momentPrototype -}; diff --git a/elgg_clean/bower_components/moment/src/lib/moment/prototype.js b/elgg_clean/bower_components/moment/src/lib/moment/prototype.js deleted file mode 100644 index d17f743a..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/prototype.js +++ /dev/null @@ -1,145 +0,0 @@ -import { Moment } from './constructor'; - -var proto = Moment.prototype; - -import { add, subtract } from './add-subtract'; -import { calendar } from './calendar'; -import { clone } from './clone'; -import { isBefore, isBetween, isSame, isAfter } from './compare'; -import { diff } from './diff'; -import { format, toString, toISOString } from './format'; -import { from, fromNow } from './from'; -import { to, toNow } from './to'; -import { getSet } from './get-set'; -import { locale, localeData, lang } from './locale'; -import { prototypeMin, prototypeMax } from './min-max'; -import { startOf, endOf } from './start-end-of'; -import { valueOf, toDate, toArray, toObject, unix } from './to-type'; -import { isValid, parsingFlags, invalidAt } from './valid'; - -proto.add = add; -proto.calendar = calendar; -proto.clone = clone; -proto.diff = diff; -proto.endOf = endOf; -proto.format = format; -proto.from = from; -proto.fromNow = fromNow; -proto.to = to; -proto.toNow = toNow; -proto.get = getSet; -proto.invalidAt = invalidAt; -proto.isAfter = isAfter; -proto.isBefore = isBefore; -proto.isBetween = isBetween; -proto.isSame = isSame; -proto.isValid = isValid; -proto.lang = lang; -proto.locale = locale; -proto.localeData = localeData; -proto.max = prototypeMax; -proto.min = prototypeMin; -proto.parsingFlags = parsingFlags; -proto.set = getSet; -proto.startOf = startOf; -proto.subtract = subtract; -proto.toArray = toArray; -proto.toObject = toObject; -proto.toDate = toDate; -proto.toISOString = toISOString; -proto.toJSON = toISOString; -proto.toString = toString; -proto.unix = unix; -proto.valueOf = valueOf; - -// Year -import { getSetYear, getIsLeapYear } from '../units/year'; -proto.year = getSetYear; -proto.isLeapYear = getIsLeapYear; - -// Week Year -import { getSetWeekYear, getSetISOWeekYear, getWeeksInYear, getISOWeeksInYear } from '../units/week-year'; -proto.weekYear = getSetWeekYear; -proto.isoWeekYear = getSetISOWeekYear; - -// Quarter -import { getSetQuarter } from '../units/quarter'; -proto.quarter = proto.quarters = getSetQuarter; - -// Month -import { getSetMonth, getDaysInMonth } from '../units/month'; -proto.month = getSetMonth; -proto.daysInMonth = getDaysInMonth; - -// Week -import { getSetWeek, getSetISOWeek } from '../units/week'; -proto.week = proto.weeks = getSetWeek; -proto.isoWeek = proto.isoWeeks = getSetISOWeek; -proto.weeksInYear = getWeeksInYear; -proto.isoWeeksInYear = getISOWeeksInYear; - -// Day -import { getSetDayOfMonth } from '../units/day-of-month'; -import { getSetDayOfWeek, getSetISODayOfWeek, getSetLocaleDayOfWeek } from '../units/day-of-week'; -import { getSetDayOfYear } from '../units/day-of-year'; -proto.date = getSetDayOfMonth; -proto.day = proto.days = getSetDayOfWeek; -proto.weekday = getSetLocaleDayOfWeek; -proto.isoWeekday = getSetISODayOfWeek; -proto.dayOfYear = getSetDayOfYear; - -// Hour -import { getSetHour } from '../units/hour'; -proto.hour = proto.hours = getSetHour; - -// Minute -import { getSetMinute } from '../units/minute'; -proto.minute = proto.minutes = getSetMinute; - -// Second -import { getSetSecond } from '../units/second'; -proto.second = proto.seconds = getSetSecond; - -// Millisecond -import { getSetMillisecond } from '../units/millisecond'; -proto.millisecond = proto.milliseconds = getSetMillisecond; - -// Offset -import { - getSetOffset, - setOffsetToUTC, - setOffsetToLocal, - setOffsetToParsedOffset, - hasAlignedHourOffset, - isDaylightSavingTime, - isDaylightSavingTimeShifted, - getSetZone, - isLocal, - isUtcOffset, - isUtc -} from '../units/offset'; -proto.utcOffset = getSetOffset; -proto.utc = setOffsetToUTC; -proto.local = setOffsetToLocal; -proto.parseZone = setOffsetToParsedOffset; -proto.hasAlignedHourOffset = hasAlignedHourOffset; -proto.isDST = isDaylightSavingTime; -proto.isDSTShifted = isDaylightSavingTimeShifted; -proto.isLocal = isLocal; -proto.isUtcOffset = isUtcOffset; -proto.isUtc = isUtc; -proto.isUTC = isUtc; - -// Timezone -import { getZoneAbbr, getZoneName } from '../units/timezone'; -proto.zoneAbbr = getZoneAbbr; -proto.zoneName = getZoneName; - -// Deprecations -import { deprecate } from '../utils/deprecate'; -proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); -proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); -proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); -proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone); - -export default proto; diff --git a/elgg_clean/bower_components/moment/src/lib/moment/start-end-of.js b/elgg_clean/bower_components/moment/src/lib/moment/start-end-of.js deleted file mode 100644 index 193c8b4a..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/start-end-of.js +++ /dev/null @@ -1,52 +0,0 @@ -import { normalizeUnits } from '../units/aliases'; - -export function startOf (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - } - - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } - if (units === 'isoWeek') { - this.isoWeekday(1); - } - - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } - - return this; -} - -export function endOf (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/to-type.js b/elgg_clean/bower_components/moment/src/lib/moment/to-type.js deleted file mode 100644 index 3008d95e..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/to-type.js +++ /dev/null @@ -1,29 +0,0 @@ -export function valueOf () { - return +this._d - ((this._offset || 0) * 60000); -} - -export function unix () { - return Math.floor(+this / 1000); -} - -export function toDate () { - return this._offset ? new Date(+this) : this._d; -} - -export function toArray () { - var m = this; - return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; -} - -export function toObject () { - var m = this; - return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds() - }; -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/to.js b/elgg_clean/bower_components/moment/src/lib/moment/to.js deleted file mode 100644 index d9eccfde..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/to.js +++ /dev/null @@ -1,13 +0,0 @@ -import { createDuration } from '../duration/create'; -import { createLocal } from '../create/local'; - -export function to (time, withoutSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); -} - -export function toNow (withoutSuffix) { - return this.to(createLocal(), withoutSuffix); -} diff --git a/elgg_clean/bower_components/moment/src/lib/moment/valid.js b/elgg_clean/bower_components/moment/src/lib/moment/valid.js deleted file mode 100644 index 6c007429..00000000 --- a/elgg_clean/bower_components/moment/src/lib/moment/valid.js +++ /dev/null @@ -1,15 +0,0 @@ -import { isValid as _isValid } from '../create/valid'; -import extend from '../utils/extend'; -import getParsingFlags from '../create/parsing-flags'; - -export function isValid () { - return _isValid(this); -} - -export function parsingFlags () { - return extend({}, getParsingFlags(this)); -} - -export function invalidAt () { - return getParsingFlags(this).overflow; -} diff --git a/elgg_clean/bower_components/moment/src/lib/parse/regex.js b/elgg_clean/bower_components/moment/src/lib/parse/regex.js deleted file mode 100644 index 9e7d6788..00000000 --- a/elgg_clean/bower_components/moment/src/lib/parse/regex.js +++ /dev/null @@ -1,51 +0,0 @@ -export var match1 = /\d/; // 0 - 9 -export var match2 = /\d\d/; // 00 - 99 -export var match3 = /\d{3}/; // 000 - 999 -export var match4 = /\d{4}/; // 0000 - 9999 -export var match6 = /[+-]?\d{6}/; // -999999 - 999999 -export var match1to2 = /\d\d?/; // 0 - 99 -export var match1to3 = /\d{1,3}/; // 0 - 999 -export var match1to4 = /\d{1,4}/; // 0 - 9999 -export var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 - -export var matchUnsigned = /\d+/; // 0 - inf -export var matchSigned = /[+-]?\d+/; // -inf - inf - -export var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z - -export var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 - -// any word (or two) characters or numbers including two/three word month in arabic. -export var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; - -import hasOwnProp from '../utils/has-own-prop'; - -var regexes = {}; - -function isFunction (sth) { - // https://github.com/moment/moment/issues/2325 - return typeof sth === 'function' && - Object.prototype.toString.call(sth) === '[object Function]'; -} - - -export function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; -} - -export function getParseRegexForToken (token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } - - return regexes[token](config._strict, config._locale); -} - -// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript -function unescapeFormat(s) { - return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); -} diff --git a/elgg_clean/bower_components/moment/src/lib/parse/token.js b/elgg_clean/bower_components/moment/src/lib/parse/token.js deleted file mode 100644 index 781b9cf3..00000000 --- a/elgg_clean/bower_components/moment/src/lib/parse/token.js +++ /dev/null @@ -1,32 +0,0 @@ -import hasOwnProp from '../utils/has-own-prop'; -import toInt from '../utils/to-int'; - -var tokens = {}; - -export function addParseToken (token, callback) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (typeof callback === 'number') { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } -} - -export function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); -} - -export function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } -} diff --git a/elgg_clean/bower_components/moment/src/lib/units/aliases.js b/elgg_clean/bower_components/moment/src/lib/units/aliases.js deleted file mode 100644 index 4ad51338..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/aliases.js +++ /dev/null @@ -1,29 +0,0 @@ -import hasOwnProp from '../utils/has-own-prop'; - -var aliases = {}; - -export function addUnitAlias (unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; -} - -export function normalizeUnits(units) { - return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; -} - -export function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; -} diff --git a/elgg_clean/bower_components/moment/src/lib/units/constants.js b/elgg_clean/bower_components/moment/src/lib/units/constants.js deleted file mode 100644 index 588e70db..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/constants.js +++ /dev/null @@ -1,7 +0,0 @@ -export var YEAR = 0; -export var MONTH = 1; -export var DATE = 2; -export var HOUR = 3; -export var MINUTE = 4; -export var SECOND = 5; -export var MILLISECOND = 6; diff --git a/elgg_clean/bower_components/moment/src/lib/units/day-of-month.js b/elgg_clean/bower_components/moment/src/lib/units/day-of-month.js deleted file mode 100644 index dc32acc2..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/day-of-month.js +++ /dev/null @@ -1,32 +0,0 @@ -import { makeGetSet } from '../moment/get-set'; -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match1to2, match2 } from '../parse/regex'; -import { addParseToken } from '../parse/token'; -import { DATE } from './constants'; -import toInt from '../utils/to-int'; - -// FORMATTING - -addFormatToken('D', ['DD', 2], 'Do', 'date'); - -// ALIASES - -addUnitAlias('date', 'D'); - -// PARSING - -addRegexToken('D', match1to2); -addRegexToken('DD', match1to2, match2); -addRegexToken('Do', function (isStrict, locale) { - return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; -}); - -addParseToken(['D', 'DD'], DATE); -addParseToken('Do', function (input, array) { - array[DATE] = toInt(input.match(match1to2)[0], 10); -}); - -// MOMENTS - -export var getSetDayOfMonth = makeGetSet('Date', true); diff --git a/elgg_clean/bower_components/moment/src/lib/units/day-of-week.js b/elgg_clean/bower_components/moment/src/lib/units/day-of-week.js deleted file mode 100644 index a82f1263..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/day-of-week.js +++ /dev/null @@ -1,134 +0,0 @@ -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match1to2, matchWord } from '../parse/regex'; -import { addWeekParseToken } from '../parse/token'; -import toInt from '../utils/to-int'; -import { createLocal } from '../create/local'; -import getParsingFlags from '../create/parsing-flags'; - -// FORMATTING - -addFormatToken('d', 0, 'do', 'day'); - -addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); -}); - -addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); -}); - -addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); -}); - -addFormatToken('e', 0, 0, 'weekday'); -addFormatToken('E', 0, 0, 'isoWeekday'); - -// ALIASES - -addUnitAlias('day', 'd'); -addUnitAlias('weekday', 'e'); -addUnitAlias('isoWeekday', 'E'); - -// PARSING - -addRegexToken('d', match1to2); -addRegexToken('e', match1to2); -addRegexToken('E', match1to2); -addRegexToken('dd', matchWord); -addRegexToken('ddd', matchWord); -addRegexToken('dddd', matchWord); - -addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) { - var weekday = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; - } -}); - -addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); -}); - -// HELPERS - -function parseWeekday(input, locale) { - if (typeof input !== 'string') { - return input; - } - - if (!isNaN(input)) { - return parseInt(input, 10); - } - - input = locale.weekdaysParse(input); - if (typeof input === 'number') { - return input; - } - - return null; -} - -// LOCALES - -export var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); -export function localeWeekdays (m) { - return this._weekdays[m.day()]; -} - -export var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); -export function localeWeekdaysShort (m) { - return this._weekdaysShort[m.day()]; -} - -export var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); -export function localeWeekdaysMin (m) { - return this._weekdaysMin[m.day()]; -} - -export function localeWeekdaysParse (weekdayName) { - var i, mom, regex; - - this._weekdaysParse = this._weekdaysParse || []; - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = createLocal([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } -} - -// MOMENTS - -export function getSetDayOfWeek (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } -} - -export function getSetLocaleDayOfWeek (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); -} - -export function getSetISODayOfWeek (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); -} diff --git a/elgg_clean/bower_components/moment/src/lib/units/day-of-year.js b/elgg_clean/bower_components/moment/src/lib/units/day-of-year.js deleted file mode 100644 index 0c34fa39..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/day-of-year.js +++ /dev/null @@ -1,49 +0,0 @@ -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match3, match1to3 } from '../parse/regex'; -import { daysInYear } from './year'; -import { createUTCDate } from '../create/date-from-array'; -import { addParseToken } from '../parse/token'; -import toInt from '../utils/to-int'; - -// FORMATTING - -addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - -// ALIASES - -addUnitAlias('dayOfYear', 'DDD'); - -// PARSING - -addRegexToken('DDD', match1to3); -addRegexToken('DDDD', match3); -addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); -}); - -// HELPERS - -//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday -export function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear; - if (d < firstDayOfWeek) { - d += 7; - } - - weekday = weekday != null ? 1 * weekday : firstDayOfWeek; - - dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday; - - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; -} - -// MOMENTS - -export function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); -} diff --git a/elgg_clean/bower_components/moment/src/lib/units/hour.js b/elgg_clean/bower_components/moment/src/lib/units/hour.js deleted file mode 100644 index 356c74d2..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/hour.js +++ /dev/null @@ -1,77 +0,0 @@ -import { makeGetSet } from '../moment/get-set'; -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match1to2, match2 } from '../parse/regex'; -import { addParseToken } from '../parse/token'; -import { HOUR } from './constants'; -import toInt from '../utils/to-int'; -import getParsingFlags from '../create/parsing-flags'; - -// FORMATTING - -addFormatToken('H', ['HH', 2], 0, 'hour'); -addFormatToken('h', ['hh', 2], 0, function () { - return this.hours() % 12 || 12; -}); - -function meridiem (token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); - }); -} - -meridiem('a', true); -meridiem('A', false); - -// ALIASES - -addUnitAlias('hour', 'h'); - -// PARSING - -function matchMeridiem (isStrict, locale) { - return locale._meridiemParse; -} - -addRegexToken('a', matchMeridiem); -addRegexToken('A', matchMeridiem); -addRegexToken('H', match1to2); -addRegexToken('h', match1to2); -addRegexToken('HH', match1to2, match2); -addRegexToken('hh', match1to2, match2); - -addParseToken(['H', 'HH'], HOUR); -addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; -}); -addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; -}); - -// LOCALES - -export function localeIsPM (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); -} - -export var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; -export function localeMeridiem (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } -} - - -// MOMENTS - -// Setting the hour should keep the time, because the user explicitly -// specified which hour he wants. So trying to maintain the same hour (in -// a new timezone) makes sense. Adding/subtracting hours does not follow -// this rule. -export var getSetHour = makeGetSet('Hours', true); diff --git a/elgg_clean/bower_components/moment/src/lib/units/millisecond.js b/elgg_clean/bower_components/moment/src/lib/units/millisecond.js deleted file mode 100644 index 134d88ee..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/millisecond.js +++ /dev/null @@ -1,64 +0,0 @@ -import { makeGetSet } from '../moment/get-set'; -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match1, match2, match3, match1to3, matchUnsigned } from '../parse/regex'; -import { addParseToken } from '../parse/token'; -import { MILLISECOND } from './constants'; -import toInt from '../utils/to-int'; - -// FORMATTING - -addFormatToken('S', 0, 0, function () { - return ~~(this.millisecond() / 100); -}); - -addFormatToken(0, ['SS', 2], 0, function () { - return ~~(this.millisecond() / 10); -}); - -addFormatToken(0, ['SSS', 3], 0, 'millisecond'); -addFormatToken(0, ['SSSS', 4], 0, function () { - return this.millisecond() * 10; -}); -addFormatToken(0, ['SSSSS', 5], 0, function () { - return this.millisecond() * 100; -}); -addFormatToken(0, ['SSSSSS', 6], 0, function () { - return this.millisecond() * 1000; -}); -addFormatToken(0, ['SSSSSSS', 7], 0, function () { - return this.millisecond() * 10000; -}); -addFormatToken(0, ['SSSSSSSS', 8], 0, function () { - return this.millisecond() * 100000; -}); -addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { - return this.millisecond() * 1000000; -}); - - -// ALIASES - -addUnitAlias('millisecond', 'ms'); - -// PARSING - -addRegexToken('S', match1to3, match1); -addRegexToken('SS', match1to3, match2); -addRegexToken('SSS', match1to3, match3); - -var token; -for (token = 'SSSS'; token.length <= 9; token += 'S') { - addRegexToken(token, matchUnsigned); -} - -function parseMs(input, array) { - array[MILLISECOND] = toInt(('0.' + input) * 1000); -} - -for (token = 'S'; token.length <= 9; token += 'S') { - addParseToken(token, parseMs); -} -// MOMENTS - -export var getSetMillisecond = makeGetSet('Milliseconds', false); diff --git a/elgg_clean/bower_components/moment/src/lib/units/minute.js b/elgg_clean/bower_components/moment/src/lib/units/minute.js deleted file mode 100644 index e9473b86..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/minute.js +++ /dev/null @@ -1,24 +0,0 @@ -import { makeGetSet } from '../moment/get-set'; -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match1to2, match2 } from '../parse/regex'; -import { addParseToken } from '../parse/token'; -import { MINUTE } from './constants'; - -// FORMATTING - -addFormatToken('m', ['mm', 2], 0, 'minute'); - -// ALIASES - -addUnitAlias('minute', 'm'); - -// PARSING - -addRegexToken('m', match1to2); -addRegexToken('mm', match1to2, match2); -addParseToken(['m', 'mm'], MINUTE); - -// MOMENTS - -export var getSetMinute = makeGetSet('Minutes', false); diff --git a/elgg_clean/bower_components/moment/src/lib/units/month.js b/elgg_clean/bower_components/moment/src/lib/units/month.js deleted file mode 100644 index 63d18b47..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/month.js +++ /dev/null @@ -1,129 +0,0 @@ -import { get } from '../moment/get-set'; -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match1to2, match2, matchWord } from '../parse/regex'; -import { addParseToken } from '../parse/token'; -import { hooks } from '../utils/hooks'; -import { MONTH } from './constants'; -import toInt from '../utils/to-int'; -import { createUTC } from '../create/utc'; -import getParsingFlags from '../create/parsing-flags'; - -export function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); -} - -// FORMATTING - -addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; -}); - -addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); -}); - -addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); -}); - -// ALIASES - -addUnitAlias('month', 'M'); - -// PARSING - -addRegexToken('M', match1to2); -addRegexToken('MM', match1to2, match2); -addRegexToken('MMM', matchWord); -addRegexToken('MMMM', matchWord); - -addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; -}); - -addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } -}); - -// LOCALES - -export var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); -export function localeMonths (m) { - return this._months[m.month()]; -} - -export var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); -export function localeMonthsShort (m) { - return this._monthsShort[m.month()]; -} - -export function localeMonthsParse (monthName, format, strict) { - var i, mom, regex; - - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } - - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } -} - -// MOMENTS - -export function setMonth (mom, value) { - var dayOfMonth; - - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } - - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; -} - -export function getSetMonth (value) { - if (value != null) { - setMonth(this, value); - hooks.updateOffset(this, true); - return this; - } else { - return get(this, 'Month'); - } -} - -export function getDaysInMonth () { - return daysInMonth(this.year(), this.month()); -} diff --git a/elgg_clean/bower_components/moment/src/lib/units/offset.js b/elgg_clean/bower_components/moment/src/lib/units/offset.js deleted file mode 100644 index 33288c0b..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/offset.js +++ /dev/null @@ -1,213 +0,0 @@ -import zeroFill from '../utils/zero-fill'; -import { createDuration } from '../duration/create'; -import { addSubtract } from '../moment/add-subtract'; -import { isMoment, copyConfig } from '../moment/constructor'; -import { addFormatToken } from '../format/format'; -import { addRegexToken, matchOffset } from '../parse/regex'; -import { addParseToken } from '../parse/token'; -import { createLocal } from '../create/local'; -import { prepareConfig } from '../create/from-anything'; -import { createUTC } from '../create/utc'; -import isDate from '../utils/is-date'; -import toInt from '../utils/to-int'; -import compareArrays from '../utils/compare-arrays'; -import { hooks } from '../utils/hooks'; - -// FORMATTING - -function offset (token, separator) { - addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(); - var sign = '+'; - if (offset < 0) { - offset = -offset; - sign = '-'; - } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); - }); -} - -offset('Z', ':'); -offset('ZZ', ''); - -// PARSING - -addRegexToken('Z', matchOffset); -addRegexToken('ZZ', matchOffset); -addParseToken(['Z', 'ZZ'], function (input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(input); -}); - -// HELPERS - -// timezone chunker -// '+10:00' > ['10', '00'] -// '-1530' > ['-15', '30'] -var chunkOffset = /([\+\-]|\d\d)/gi; - -function offsetFromString(string) { - var matches = ((string || '').match(matchOffset) || []); - var chunk = matches[matches.length - 1] || []; - var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - var minutes = +(parts[1] * 60) + toInt(parts[2]); - - return parts[0] === '+' ? minutes : -minutes; -} - -// Return a moment from input, that is local/utc/zone equivalent to model. -export function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (isMoment(input) || isDate(input) ? +input : +createLocal(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - hooks.updateOffset(res, false); - return res; - } else { - return createLocal(input).local(); - } -} - -function getDateOffset (m) { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset() / 15) * 15; -} - -// HOOKS - -// This function will be called whenever a moment is mutated. -// It is intended to keep the offset in sync with the timezone. -hooks.updateOffset = function () {}; - -// MOMENTS - -// keepLocalTime = true means only change the timezone, without -// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> -// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset -// +0200, so we adjust the time as needed, to be valid. -// -// Keeping the time actually adds/subtracts (one hour) -// from the actual represented time. That is why we call updateOffset -// a second time. In case it wants us to change the offset again -// _changeInProgress == true case, then we have to adjust, because -// there is no such time in the given timezone. -export function getSetOffset (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = offsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addSubtract(this, createDuration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - hooks.updateOffset(this, true); - this._changeInProgress = null; - } - } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); - } -} - -export function getSetZone (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } - - this.utcOffset(input, keepLocalTime); - - return this; - } else { - return -this.utcOffset(); - } -} - -export function setOffsetToUTC (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); -} - -export function setOffsetToLocal (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - - if (keepLocalTime) { - this.subtract(getDateOffset(this), 'm'); - } - } - return this; -} - -export function setOffsetToParsedOffset () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(offsetFromString(this._i)); - } - return this; -} - -export function hasAlignedHourOffset (input) { - input = input ? createLocal(input).utcOffset() : 0; - - return (this.utcOffset() - input) % 60 === 0; -} - -export function isDaylightSavingTime () { - return ( - this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset() - ); -} - -export function isDaylightSavingTimeShifted () { - if (typeof this._isDSTShifted !== 'undefined') { - return this._isDSTShifted; - } - - var c = {}; - - copyConfig(c, this); - c = prepareConfig(c); - - if (c._a) { - var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = this.isValid() && - compareArrays(c._a, other.toArray()) > 0; - } else { - this._isDSTShifted = false; - } - - return this._isDSTShifted; -} - -export function isLocal () { - return !this._isUTC; -} - -export function isUtcOffset () { - return this._isUTC; -} - -export function isUtc () { - return this._isUTC && this._offset === 0; -} diff --git a/elgg_clean/bower_components/moment/src/lib/units/quarter.js b/elgg_clean/bower_components/moment/src/lib/units/quarter.js deleted file mode 100644 index d383f561..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/quarter.js +++ /dev/null @@ -1,27 +0,0 @@ -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match1 } from '../parse/regex'; -import { addParseToken } from '../parse/token'; -import { MONTH } from './constants'; -import toInt from '../utils/to-int'; - -// FORMATTING - -addFormatToken('Q', 0, 0, 'quarter'); - -// ALIASES - -addUnitAlias('quarter', 'Q'); - -// PARSING - -addRegexToken('Q', match1); -addParseToken('Q', function (input, array) { - array[MONTH] = (toInt(input) - 1) * 3; -}); - -// MOMENTS - -export function getSetQuarter (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); -} diff --git a/elgg_clean/bower_components/moment/src/lib/units/second.js b/elgg_clean/bower_components/moment/src/lib/units/second.js deleted file mode 100644 index 118fe308..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/second.js +++ /dev/null @@ -1,24 +0,0 @@ -import { makeGetSet } from '../moment/get-set'; -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match1to2, match2 } from '../parse/regex'; -import { addParseToken } from '../parse/token'; -import { SECOND } from './constants'; - -// FORMATTING - -addFormatToken('s', ['ss', 2], 0, 'second'); - -// ALIASES - -addUnitAlias('second', 's'); - -// PARSING - -addRegexToken('s', match1to2); -addRegexToken('ss', match1to2, match2); -addParseToken(['s', 'ss'], SECOND); - -// MOMENTS - -export var getSetSecond = makeGetSet('Seconds', false); diff --git a/elgg_clean/bower_components/moment/src/lib/units/timestamp.js b/elgg_clean/bower_components/moment/src/lib/units/timestamp.js deleted file mode 100644 index a49e1e4b..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/timestamp.js +++ /dev/null @@ -1,20 +0,0 @@ -import { addFormatToken } from '../format/format'; -import { addRegexToken, matchTimestamp, matchSigned } from '../parse/regex'; -import { addParseToken } from '../parse/token'; -import toInt from '../utils/to-int'; - -// FORMATTING - -addFormatToken('X', 0, 0, 'unix'); -addFormatToken('x', 0, 0, 'valueOf'); - -// PARSING - -addRegexToken('x', matchSigned); -addRegexToken('X', matchTimestamp); -addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input, 10) * 1000); -}); -addParseToken('x', function (input, array, config) { - config._d = new Date(toInt(input)); -}); diff --git a/elgg_clean/bower_components/moment/src/lib/units/timezone.js b/elgg_clean/bower_components/moment/src/lib/units/timezone.js deleted file mode 100644 index 20c81cd2..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/timezone.js +++ /dev/null @@ -1,16 +0,0 @@ -import { addFormatToken } from '../format/format'; - -// FORMATTING - -addFormatToken('z', 0, 0, 'zoneAbbr'); -addFormatToken('zz', 0, 0, 'zoneName'); - -// MOMENTS - -export function getZoneAbbr () { - return this._isUTC ? 'UTC' : ''; -} - -export function getZoneName () { - return this._isUTC ? 'Coordinated Universal Time' : ''; -} diff --git a/elgg_clean/bower_components/moment/src/lib/units/units.js b/elgg_clean/bower_components/moment/src/lib/units/units.js deleted file mode 100644 index 6f45f1c0..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/units.js +++ /dev/null @@ -1,20 +0,0 @@ -// Side effect imports -import './day-of-month'; -import './day-of-week'; -import './day-of-year'; -import './hour'; -import './millisecond'; -import './minute'; -import './month'; -import './offset'; -import './quarter'; -import './second'; -import './timestamp'; -import './timezone'; -import './week-year'; -import './week'; -import './year'; - -import { normalizeUnits } from './aliases'; - -export { normalizeUnits }; diff --git a/elgg_clean/bower_components/moment/src/lib/units/week-year.js b/elgg_clean/bower_components/moment/src/lib/units/week-year.js deleted file mode 100644 index 8ecfce75..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/week-year.js +++ /dev/null @@ -1,78 +0,0 @@ -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex'; -import { addWeekParseToken } from '../parse/token'; -import { weekOfYear } from './week'; -import toInt from '../utils/to-int'; -import { hooks } from '../utils/hooks'; -import { createLocal } from '../create/local'; - -// FORMATTING - -addFormatToken(0, ['gg', 2], 0, function () { - return this.weekYear() % 100; -}); - -addFormatToken(0, ['GG', 2], 0, function () { - return this.isoWeekYear() % 100; -}); - -function addWeekYearFormatToken (token, getter) { - addFormatToken(0, [token, token.length], 0, getter); -} - -addWeekYearFormatToken('gggg', 'weekYear'); -addWeekYearFormatToken('ggggg', 'weekYear'); -addWeekYearFormatToken('GGGG', 'isoWeekYear'); -addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - -// ALIASES - -addUnitAlias('weekYear', 'gg'); -addUnitAlias('isoWeekYear', 'GG'); - -// PARSING - -addRegexToken('G', matchSigned); -addRegexToken('g', matchSigned); -addRegexToken('GG', match1to2, match2); -addRegexToken('gg', match1to2, match2); -addRegexToken('GGGG', match1to4, match4); -addRegexToken('gggg', match1to4, match4); -addRegexToken('GGGGG', match1to6, match6); -addRegexToken('ggggg', match1to6, match6); - -addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { - week[token.substr(0, 2)] = toInt(input); -}); - -addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = hooks.parseTwoDigitYear(input); -}); - -// HELPERS - -function weeksInYear(year, dow, doy) { - return weekOfYear(createLocal([year, 11, 31 + dow - doy]), dow, doy).week; -} - -// MOMENTS - -export function getSetWeekYear (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); -} - -export function getSetISOWeekYear (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); -} - -export function getISOWeeksInYear () { - return weeksInYear(this.year(), 1, 4); -} - -export function getWeeksInYear () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); -} diff --git a/elgg_clean/bower_components/moment/src/lib/units/week.js b/elgg_clean/bower_components/moment/src/lib/units/week.js deleted file mode 100644 index 178f6b55..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/week.js +++ /dev/null @@ -1,88 +0,0 @@ -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match1to2, match2 } from '../parse/regex'; -import { addWeekParseToken } from '../parse/token'; -import toInt from '../utils/to-int'; -import { createLocal } from '../create/local'; - -// FORMATTING - -addFormatToken('w', ['ww', 2], 'wo', 'week'); -addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - -// ALIASES - -addUnitAlias('week', 'w'); -addUnitAlias('isoWeek', 'W'); - -// PARSING - -addRegexToken('w', match1to2); -addRegexToken('ww', match1to2, match2); -addRegexToken('W', match1to2); -addRegexToken('WW', match1to2, match2); - -addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); -}); - -// HELPERS - -// firstDayOfWeek 0 = sun, 6 = sat -// the day of the week that starts the week -// (usually sunday or monday) -// firstDayOfWeekOfYear 0 = sun, 6 = sat -// the first week is the week that contains the first -// of this day of the week -// (eg. ISO weeks use thursday (4)) -export function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; - - - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } - - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } - - adjustedMoment = createLocal(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; -} - -// LOCALES - -export function localeWeek (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; -} - -export var defaultLocaleWeek = { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. -}; - -export function localeFirstDayOfWeek () { - return this._week.dow; -} - -export function localeFirstDayOfYear () { - return this._week.doy; -} - -// MOMENTS - -export function getSetWeek (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); -} - -export function getSetISOWeek (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); -} diff --git a/elgg_clean/bower_components/moment/src/lib/units/year.js b/elgg_clean/bower_components/moment/src/lib/units/year.js deleted file mode 100644 index cc32b55b..00000000 --- a/elgg_clean/bower_components/moment/src/lib/units/year.js +++ /dev/null @@ -1,62 +0,0 @@ -import { makeGetSet } from '../moment/get-set'; -import { addFormatToken } from '../format/format'; -import { addUnitAlias } from './aliases'; -import { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex'; -import { addParseToken } from '../parse/token'; -import { hooks } from '../utils/hooks'; -import { YEAR } from './constants'; -import toInt from '../utils/to-int'; - -// FORMATTING - -addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; -}); - -addFormatToken(0, ['YYYY', 4], 0, 'year'); -addFormatToken(0, ['YYYYY', 5], 0, 'year'); -addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - -// ALIASES - -addUnitAlias('year', 'y'); - -// PARSING - -addRegexToken('Y', matchSigned); -addRegexToken('YY', match1to2, match2); -addRegexToken('YYYY', match1to4, match4); -addRegexToken('YYYYY', match1to6, match6); -addRegexToken('YYYYYY', match1to6, match6); - -addParseToken(['YYYYY', 'YYYYYY'], YEAR); -addParseToken('YYYY', function (input, array) { - array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); -}); -addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); -}); - -// HELPERS - -export function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; -} - -function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; -} - -// HOOKS - -hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); -}; - -// MOMENTS - -export var getSetYear = makeGetSet('FullYear', false); - -export function getIsLeapYear () { - return isLeapYear(this.year()); -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/abs-ceil.js b/elgg_clean/bower_components/moment/src/lib/utils/abs-ceil.js deleted file mode 100644 index 7cf93290..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/abs-ceil.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function absCeil (number) { - if (number < 0) { - return Math.floor(number); - } else { - return Math.ceil(number); - } -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/abs-floor.js b/elgg_clean/bower_components/moment/src/lib/utils/abs-floor.js deleted file mode 100644 index 8ba13183..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/abs-floor.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function absFloor (number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/compare-arrays.js b/elgg_clean/bower_components/moment/src/lib/utils/compare-arrays.js deleted file mode 100644 index 2eb274be..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/compare-arrays.js +++ /dev/null @@ -1,16 +0,0 @@ -import toInt from './to-int'; - -// compare two arrays, return the number of differences -export default function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/defaults.js b/elgg_clean/bower_components/moment/src/lib/utils/defaults.js deleted file mode 100644 index 45c5e879..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/defaults.js +++ /dev/null @@ -1,10 +0,0 @@ -// Pick the first defined of two or three arguments. -export default function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/deprecate.js b/elgg_clean/bower_components/moment/src/lib/utils/deprecate.js deleted file mode 100644 index df4286b8..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/deprecate.js +++ /dev/null @@ -1,32 +0,0 @@ -import extend from './extend'; -import { hooks } from './hooks'; - -function warn(msg) { - if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } -} - -export function deprecate(msg, fn) { - var firstTime = true; - - return extend(function () { - if (firstTime) { - warn(msg + '\n' + (new Error()).stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); -} - -var deprecations = {}; - -export function deprecateSimple(name, msg) { - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } -} - -hooks.suppressDeprecationWarnings = false; - diff --git a/elgg_clean/bower_components/moment/src/lib/utils/extend.js b/elgg_clean/bower_components/moment/src/lib/utils/extend.js deleted file mode 100644 index ba74a0bf..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/extend.js +++ /dev/null @@ -1,19 +0,0 @@ -import hasOwnProp from './has-own-prop'; - -export default function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/has-own-prop.js b/elgg_clean/bower_components/moment/src/lib/utils/has-own-prop.js deleted file mode 100644 index 4d2403cc..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/has-own-prop.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/hooks.js b/elgg_clean/bower_components/moment/src/lib/utils/hooks.js deleted file mode 100644 index 02a5bd3d..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/hooks.js +++ /dev/null @@ -1,13 +0,0 @@ -export { hooks, setHookCallback }; - -var hookCallback; - -function hooks () { - return hookCallback.apply(null, arguments); -} - -// This is done to register the method called with moment() -// without creating circular dependencies. -function setHookCallback (callback) { - hookCallback = callback; -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/is-array.js b/elgg_clean/bower_components/moment/src/lib/utils/is-array.js deleted file mode 100644 index 46bd6c68..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/is-array.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/is-date.js b/elgg_clean/bower_components/moment/src/lib/utils/is-date.js deleted file mode 100644 index 69c4d0e9..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/is-date.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function isDate(input) { - return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/map.js b/elgg_clean/bower_components/moment/src/lib/utils/map.js deleted file mode 100644 index 1cbc5639..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/map.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/to-int.js b/elgg_clean/bower_components/moment/src/lib/utils/to-int.js deleted file mode 100644 index fb489416..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/to-int.js +++ /dev/null @@ -1,12 +0,0 @@ -import absFloor from './abs-floor'; - -export default function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - - return value; -} diff --git a/elgg_clean/bower_components/moment/src/lib/utils/zero-fill.js b/elgg_clean/bower_components/moment/src/lib/utils/zero-fill.js deleted file mode 100644 index 7009ec90..00000000 --- a/elgg_clean/bower_components/moment/src/lib/utils/zero-fill.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function zeroFill(number, targetLength, forceSign) { - var absNumber = '' + Math.abs(number), - zerosToFill = targetLength - absNumber.length, - sign = number >= 0; - return (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; -} diff --git a/elgg_clean/bower_components/moment/src/locale/af.js b/elgg_clean/bower_components/moment/src/locale/af.js deleted file mode 100644 index 13b8d7b1..00000000 --- a/elgg_clean/bower_components/moment/src/locale/af.js +++ /dev/null @@ -1,63 +0,0 @@ -//! moment.js locale configuration -//! locale : afrikaans (af) -//! author : Werner Mollentze : https://github.com/wernerm - -import moment from '../moment'; - -export default moment.defineLocale('af', { - months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), - weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), - weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), - meridiemParse: /vm|nm/i, - isPM : function (input) { - return /^nm$/i.test(input); - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'vm' : 'VM'; - } else { - return isLower ? 'nm' : 'NM'; - } - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Vandag om] LT', - nextDay : '[Môre om] LT', - nextWeek : 'dddd [om] LT', - lastDay : '[Gister om] LT', - lastWeek : '[Laas] dddd [om] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'oor %s', - past : '%s gelede', - s : '\'n paar sekondes', - m : '\'n minuut', - mm : '%d minute', - h : '\'n uur', - hh : '%d ure', - d : '\'n dag', - dd : '%d dae', - M : '\'n maand', - MM : '%d maande', - y : '\'n jaar', - yy : '%d jaar' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter - }, - week : { - dow : 1, // Maandag is die eerste dag van die week. - doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - } -}); diff --git a/elgg_clean/bower_components/moment/src/locale/ar-ma.js b/elgg_clean/bower_components/moment/src/locale/ar-ma.js deleted file mode 100644 index fe79651b..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ar-ma.js +++ /dev/null @@ -1,50 +0,0 @@ -//! moment.js locale configuration -//! locale : Moroccan Arabic (ar-ma) -//! author : ElFadili Yassine : https://github.com/ElFadiliY -//! author : Abdel Said : https://github.com/abdelsaid - -import moment from '../moment'; - -export default moment.defineLocale('ar-ma', { - months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ar-sa.js b/elgg_clean/bower_components/moment/src/locale/ar-sa.js deleted file mode 100644 index d32b0cea..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ar-sa.js +++ /dev/null @@ -1,94 +0,0 @@ -//! moment.js locale configuration -//! locale : Arabic Saudi Arabia (ar-sa) -//! author : Suhail Alkowaileet : https://github.com/xsoh - -import moment from '../moment'; - -var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' -}, numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' -}; - -export default moment.defineLocale('ar-sa', { - months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - preparse: function (string) { - return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ar-tn.js b/elgg_clean/bower_components/moment/src/locale/ar-tn.js deleted file mode 100644 index 5dd0edba..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ar-tn.js +++ /dev/null @@ -1,48 +0,0 @@ -//! moment.js locale configuration -//! locale : Tunisian Arabic (ar-tn) - -import moment from '../moment'; - -export default moment.defineLocale('ar-tn', { - months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات' - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ar.js b/elgg_clean/bower_components/moment/src/locale/ar.js deleted file mode 100644 index e8555a08..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ar.js +++ /dev/null @@ -1,127 +0,0 @@ -//! moment.js locale configuration -//! Locale: Arabic (ar) -//! Author: Abdel Said: https://github.com/abdelsaid -//! Changes in months, weekdays: Ahmed Elkhatib -//! Native plural forms: forabi https://github.com/forabi - -import moment from '../moment'; - -var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' -}, numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' -}, pluralForm = function (n) { - return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; -}, plurals = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] -}, pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; -}, months = [ - 'كانون الثاني يناير', - 'شباط فبراير', - 'آذار مارس', - 'نيسان أبريل', - 'أيار مايو', - 'حزيران يونيو', - 'تموز يوليو', - 'آب أغسطس', - 'أيلول سبتمبر', - 'تشرين الأول أكتوبر', - 'تشرين الثاني نوفمبر', - 'كانون الأول ديسمبر' -]; - -export default moment.defineLocale('ar', { - months : months, - monthsShort : months, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/\u200FM/\u200FYYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize('s'), - m : pluralize('m'), - mm : pluralize('m'), - h : pluralize('h'), - hh : pluralize('h'), - d : pluralize('d'), - dd : pluralize('d'), - M : pluralize('M'), - MM : pluralize('M'), - y : pluralize('y'), - yy : pluralize('y') - }, - preparse: function (string) { - return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/az.js b/elgg_clean/bower_components/moment/src/locale/az.js deleted file mode 100644 index b30c12d8..00000000 --- a/elgg_clean/bower_components/moment/src/locale/az.js +++ /dev/null @@ -1,95 +0,0 @@ -//! moment.js locale configuration -//! locale : azerbaijani (az) -//! author : topchiyev : https://github.com/topchiyev - -import moment from '../moment'; - -var suffixes = { - 1: '-inci', - 5: '-inci', - 8: '-inci', - 70: '-inci', - 80: '-inci', - 2: '-nci', - 7: '-nci', - 20: '-nci', - 50: '-nci', - 3: '-üncü', - 4: '-üncü', - 100: '-üncü', - 6: '-ncı', - 9: '-uncu', - 10: '-uncu', - 30: '-uncu', - 60: '-ıncı', - 90: '-ıncı' -}; - -export default moment.defineLocale('az', { - months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), - monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), - weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), - weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), - weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[sabah saat] LT', - nextWeek : '[gələn həftə] dddd [saat] LT', - lastDay : '[dünən] LT', - lastWeek : '[keçən həftə] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s əvvəl', - s : 'birneçə saniyyə', - m : 'bir dəqiqə', - mm : '%d dəqiqə', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir il', - yy : '%d il' - }, - meridiemParse: /gecə|səhər|gündüz|axşam/, - isPM : function (input) { - return /^(gündüz|axşam)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'gecə'; - } else if (hour < 12) { - return 'səhər'; - } else if (hour < 17) { - return 'gündüz'; - } else { - return 'axşam'; - } - }, - ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + '-ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/be.js b/elgg_clean/bower_components/moment/src/locale/be.js deleted file mode 100644 index 54e7e4a0..00000000 --- a/elgg_clean/bower_components/moment/src/locale/be.js +++ /dev/null @@ -1,138 +0,0 @@ -//! moment.js locale configuration -//! locale : belarusian (be) -//! author : Dmitry Demidov : https://github.com/demidov91 -//! author: Praleska: http://praleska.pro/ -//! Author : Menelion Elensúle : https://github.com/Oire - -import moment from '../moment'; - -function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); -} -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', - 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', - 'dd': 'дзень_дні_дзён', - 'MM': 'месяц_месяцы_месяцаў', - 'yy': 'год_гады_гадоў' - }; - if (key === 'm') { - return withoutSuffix ? 'хвіліна' : 'хвіліну'; - } - else if (key === 'h') { - return withoutSuffix ? 'гадзіна' : 'гадзіну'; - } - else { - return number + ' ' + plural(format[key], +number); - } -} -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), - 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; -} -function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), - 'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_') - }, - nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; -} - -export default moment.defineLocale('be', { - months : monthsCaseReplace, - monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), - weekdays : weekdaysCaseReplace, - weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., HH:mm', - LLLL : 'dddd, D MMMM YYYY г., HH:mm' - }, - calendar : { - sameDay: '[Сёння ў] LT', - nextDay: '[Заўтра ў] LT', - lastDay: '[Учора ў] LT', - nextWeek: function () { - return '[У] dddd [ў] LT'; - }, - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return '[У мінулую] dddd [ў] LT'; - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'праз %s', - past : '%s таму', - s : 'некалькі секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : relativeTimeWithPlural, - hh : relativeTimeWithPlural, - d : 'дзень', - dd : relativeTimeWithPlural, - M : 'месяц', - MM : relativeTimeWithPlural, - y : 'год', - yy : relativeTimeWithPlural - }, - meridiemParse: /ночы|раніцы|дня|вечара/, - isPM : function (input) { - return /^(дня|вечара)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночы'; - } else if (hour < 12) { - return 'раніцы'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечара'; - } - }, - ordinalParse: /\d{1,2}-(і|ы|га)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; - case 'D': - return number + '-га'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/bg.js b/elgg_clean/bower_components/moment/src/locale/bg.js deleted file mode 100644 index d017ae56..00000000 --- a/elgg_clean/bower_components/moment/src/locale/bg.js +++ /dev/null @@ -1,81 +0,0 @@ -//! moment.js locale configuration -//! locale : bulgarian (bg) -//! author : Krasen Borisov : https://github.com/kraz - -import moment from '../moment'; - -export default moment.defineLocale('bg', { - months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), - weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'след %s', - past : 'преди %s', - s : 'няколко секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дни', - M : 'месец', - MM : '%d месеца', - y : 'година', - yy : '%d години' - }, - ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/bn.js b/elgg_clean/bower_components/moment/src/locale/bn.js deleted file mode 100644 index c5893dd7..00000000 --- a/elgg_clean/bower_components/moment/src/locale/bn.js +++ /dev/null @@ -1,104 +0,0 @@ -//! moment.js locale configuration -//! locale : Bengali (bn) -//! author : Kaushik Gandhi : https://github.com/kaushikgandhi - -import moment from '../moment'; - -var symbolMap = { - '1': '১', - '2': '২', - '3': '৩', - '4': '৪', - '5': '৫', - '6': '৬', - '7': '৭', - '8': '৮', - '9': '৯', - '0': '০' -}, -numberMap = { - '১': '1', - '২': '2', - '৩': '3', - '৪': '4', - '৫': '5', - '৬': '6', - '৭': '7', - '৮': '8', - '৯': '9', - '০': '0' -}; - -export default moment.defineLocale('bn', { - months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), - monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'), - weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split('_'), - weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split('_'), - weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'), - longDateFormat : { - LT : 'A h:mm সময়', - LTS : 'A h:mm:ss সময়', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm সময়', - LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' - }, - calendar : { - sameDay : '[আজ] LT', - nextDay : '[আগামীকাল] LT', - nextWeek : 'dddd, LT', - lastDay : '[গতকাল] LT', - lastWeek : '[গত] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s পরে', - past : '%s আগে', - s : 'কএক সেকেন্ড', - m : 'এক মিনিট', - mm : '%d মিনিট', - h : 'এক ঘন্টা', - hh : '%d ঘন্টা', - d : 'এক দিন', - dd : '%d দিন', - M : 'এক মাস', - MM : '%d মাস', - y : 'এক বছর', - yy : '%d বছর' - }, - preparse: function (string) { - return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /রাত|সকাল|দুপুর|বিকেল|রাত/, - isPM: function (input) { - return /^(দুপুর|বিকেল|রাত)$/.test(input); - }, - //Bengali is a vast language its spoken - //in different forms in various parts of the world. - //I have just generalized with most common one used - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'রাত'; - } else if (hour < 10) { - return 'সকাল'; - } else if (hour < 17) { - return 'দুপুর'; - } else if (hour < 20) { - return 'বিকেল'; - } else { - return 'রাত'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/bo.js b/elgg_clean/bower_components/moment/src/locale/bo.js deleted file mode 100644 index 6da128dd..00000000 --- a/elgg_clean/bower_components/moment/src/locale/bo.js +++ /dev/null @@ -1,101 +0,0 @@ -//! moment.js locale configuration -//! locale : tibetan (bo) -//! author : Thupten N. Chakrishar : https://github.com/vajradog - -import moment from '../moment'; - -var symbolMap = { - '1': '༡', - '2': '༢', - '3': '༣', - '4': '༤', - '5': '༥', - '6': '༦', - '7': '༧', - '8': '༨', - '9': '༩', - '0': '༠' -}, -numberMap = { - '༡': '1', - '༢': '2', - '༣': '3', - '༤': '4', - '༥': '5', - '༦': '6', - '༧': '7', - '༨': '8', - '༩': '9', - '༠': '0' -}; - -export default moment.defineLocale('bo', { - months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), - weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm', - LLLL : 'dddd, D MMMM YYYY, A h:mm' - }, - calendar : { - sameDay : '[དི་རིང] LT', - nextDay : '[སང་ཉིན] LT', - nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', - lastDay : '[ཁ་སང] LT', - lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ལ་', - past : '%s སྔན་ལ', - s : 'ལམ་སང', - m : 'སྐར་མ་གཅིག', - mm : '%d སྐར་མ', - h : 'ཆུ་ཚོད་གཅིག', - hh : '%d ཆུ་ཚོད', - d : 'ཉིན་གཅིག', - dd : '%d ཉིན་', - M : 'ཟླ་བ་གཅིག', - MM : '%d ཟླ་བ', - y : 'ལོ་གཅིག', - yy : '%d ལོ' - }, - preparse: function (string) { - return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, - isPM: function (input) { - return /^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'མཚན་མོ'; - } else if (hour < 10) { - return 'ཞོགས་ཀས'; - } else if (hour < 17) { - return 'ཉིན་གུང'; - } else if (hour < 20) { - return 'དགོང་དག'; - } else { - return 'མཚན་མོ'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/br.js b/elgg_clean/bower_components/moment/src/locale/br.js deleted file mode 100644 index f95afb38..00000000 --- a/elgg_clean/bower_components/moment/src/locale/br.js +++ /dev/null @@ -1,98 +0,0 @@ -//! moment.js locale configuration -//! locale : breton (br) -//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou - -import moment from '../moment'; - -function relativeTimeWithMutation(number, withoutSuffix, key) { - var format = { - 'mm': 'munutenn', - 'MM': 'miz', - 'dd': 'devezh' - }; - return number + ' ' + mutation(format[key], number); -} -function specialMutationForYears(number) { - switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; - } -} -function lastNumber(number) { - if (number > 9) { - return lastNumber(number % 10); - } - return number; -} -function mutation(text, number) { - if (number === 2) { - return softMutation(text); - } - return text; -} -function softMutation(text) { - var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' - }; - if (mutationTable[text.charAt(0)] === undefined) { - return text; - } - return mutationTable[text.charAt(0)] + text.substring(1); -} - -export default moment.defineLocale('br', { - months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), - monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), - weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), - weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), - weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), - longDateFormat : { - LT : 'h[e]mm A', - LTS : 'h[e]mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [a viz] MMMM YYYY', - LLL : 'D [a viz] MMMM YYYY h[e]mm A', - LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' - }, - calendar : { - sameDay : '[Hiziv da] LT', - nextDay : '[Warc\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'a-benn %s', - past : '%s \'zo', - s : 'un nebeud segondennoù', - m : 'ur vunutenn', - mm : relativeTimeWithMutation, - h : 'un eur', - hh : '%d eur', - d : 'un devezh', - dd : relativeTimeWithMutation, - M : 'ur miz', - MM : relativeTimeWithMutation, - y : 'ur bloaz', - yy : specialMutationForYears - }, - ordinalParse: /\d{1,2}(añ|vet)/, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/bs.js b/elgg_clean/bower_components/moment/src/locale/bs.js deleted file mode 100644 index 8ac94f08..00000000 --- a/elgg_clean/bower_components/moment/src/locale/bs.js +++ /dev/null @@ -1,132 +0,0 @@ -//! moment.js locale configuration -//! locale : bosnian (bs) -//! author : Nedim Cholich : https://github.com/frontyard -//! based on (hr) translation by Bojan Marković - -import moment from '../moment'; - -function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } -} - -export default moment.defineLocale('bs', { - months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'dan', - dd : translate, - M : 'mjesec', - MM : translate, - y : 'godinu', - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ca.js b/elgg_clean/bower_components/moment/src/locale/ca.js deleted file mode 100644 index d0c1a45c..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ca.js +++ /dev/null @@ -1,70 +0,0 @@ -//! moment.js locale configuration -//! locale : catalan (ca) -//! author : Juan G. Hurtado : https://github.com/juanghurtado - -import moment from '../moment'; - -export default moment.defineLocale('ca', { - months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), - monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'), - weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), - weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), - weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'LT:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd D MMMM YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'fa %s', - s : 'uns segons', - m : 'un minut', - mm : '%d minuts', - h : 'una hora', - hh : '%d hores', - d : 'un dia', - dd : '%d dies', - M : 'un mes', - MM : '%d mesos', - y : 'un any', - yy : '%d anys' - }, - ordinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal : function (number, period) { - var output = (number === 1) ? 'r' : - (number === 2) ? 'n' : - (number === 3) ? 'r' : - (number === 4) ? 't' : 'è'; - if (period === 'w' || period === 'W') { - output = 'a'; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/cs.js b/elgg_clean/bower_components/moment/src/locale/cs.js deleted file mode 100644 index 57b750ba..00000000 --- a/elgg_clean/bower_components/moment/src/locale/cs.js +++ /dev/null @@ -1,148 +0,0 @@ -//! moment.js locale configuration -//! locale : czech (cs) -//! author : petrbela : https://github.com/petrbela - -import moment from '../moment'; - -var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), - monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); -function plural(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); -} -function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; - } - break; - } -} - -export default moment.defineLocale('cs', { - months : months, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), - weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), - weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), - weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[dnes v] LT', - nextDay: '[zítra v] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; - } - }, - lastDay: '[včera v] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'před %s', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinalParse : /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/cv.js b/elgg_clean/bower_components/moment/src/locale/cv.js deleted file mode 100644 index f1cafe14..00000000 --- a/elgg_clean/bower_components/moment/src/locale/cv.js +++ /dev/null @@ -1,53 +0,0 @@ -//! moment.js locale configuration -//! locale : chuvash (cv) -//! author : Anatoly Mironov : https://github.com/mirontoli - -import moment from '../moment'; - -export default moment.defineLocale('cv', { - months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), - monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), - weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), - weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), - weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' - }, - calendar : { - sameDay: '[Паян] LT [сехетре]', - nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ӗнер] LT [сехетре]', - nextWeek: '[Ҫитес] dddd LT [сехетре]', - lastWeek: '[Иртнӗ] dddd LT [сехетре]', - sameElse: 'L' - }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; - return output + affix; - }, - past : '%s каялла', - s : 'пӗр-ик ҫеккунт', - m : 'пӗр минут', - mm : '%d минут', - h : 'пӗр сехет', - hh : '%d сехет', - d : 'пӗр кун', - dd : '%d кун', - M : 'пӗр уйӑх', - MM : '%d уйӑх', - y : 'пӗр ҫул', - yy : '%d ҫул' - }, - ordinalParse: /\d{1,2}-мӗш/, - ordinal : '%d-мӗш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/elgg_clean/bower_components/moment/src/locale/cy.js b/elgg_clean/bower_components/moment/src/locale/cy.js deleted file mode 100644 index b674ba42..00000000 --- a/elgg_clean/bower_components/moment/src/locale/cy.js +++ /dev/null @@ -1,70 +0,0 @@ -//! moment.js locale configuration -//! locale : Welsh (cy) -//! author : Robert Allen - -import moment from '../moment'; - -export default moment.defineLocale('cy', { - months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), - monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), - weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), - weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), - weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), - // time formats are the same as en-gb - longDateFormat: { - LT: 'HH:mm', - LTS : 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[Heddiw am] LT', - nextDay: '[Yfory am] LT', - nextWeek: 'dddd [am] LT', - lastDay: '[Ddoe am] LT', - lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'mewn %s', - past: '%s yn ôl', - s: 'ychydig eiliadau', - m: 'munud', - mm: '%d munud', - h: 'awr', - hh: '%d awr', - d: 'diwrnod', - dd: '%d diwrnod', - M: 'mis', - MM: '%d mis', - y: 'blwyddyn', - yy: '%d flynedd' - }, - ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, - // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh - ordinal: function (number) { - var b = number, - output = '', - lookup = [ - '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed - 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed - ]; - if (b > 20) { - if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { - output = 'fed'; // not 30ain, 70ain or 90ain - } else { - output = 'ain'; - } - } else if (b > 0) { - output = lookup[b]; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/da.js b/elgg_clean/bower_components/moment/src/locale/da.js deleted file mode 100644 index a98c4bcd..00000000 --- a/elgg_clean/bower_components/moment/src/locale/da.js +++ /dev/null @@ -1,51 +0,0 @@ -//! moment.js locale configuration -//! locale : danish (da) -//! author : Ulrik Nielsen : https://github.com/mrbase - -import moment from '../moment'; - -export default moment.defineLocale('da', { - months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd [d.] D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[I dag kl.] LT', - nextDay : '[I morgen kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[I går kl.] LT', - lastWeek : '[sidste] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'få sekunder', - m : 'et minut', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dage', - M : 'en måned', - MM : '%d måneder', - y : 'et år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/de-at.js b/elgg_clean/bower_components/moment/src/locale/de-at.js deleted file mode 100644 index 5a28e7f3..00000000 --- a/elgg_clean/bower_components/moment/src/locale/de-at.js +++ /dev/null @@ -1,67 +0,0 @@ -//! moment.js locale configuration -//! locale : austrian german (de-at) -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -//! author : Martin Groller : https://github.com/MadMG - -import moment from '../moment'; - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; -} - -export default moment.defineLocale('de-at', { - months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[Morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[Gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/de.js b/elgg_clean/bower_components/moment/src/locale/de.js deleted file mode 100644 index 205d6839..00000000 --- a/elgg_clean/bower_components/moment/src/locale/de.js +++ /dev/null @@ -1,66 +0,0 @@ -//! moment.js locale configuration -//! locale : german (de) -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire - -import moment from '../moment'; - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; -} - -export default moment.defineLocale('de', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[Morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[Gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/el.js b/elgg_clean/bower_components/moment/src/locale/el.js deleted file mode 100644 index 83a34218..00000000 --- a/elgg_clean/bower_components/moment/src/locale/el.js +++ /dev/null @@ -1,85 +0,0 @@ -//! moment.js locale configuration -//! locale : modern greek (el) -//! author : Aggelos Karalias : https://github.com/mehiel - -import moment from '../moment'; - -export default moment.defineLocale('el', { - monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), - monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), - months : function (momentToFormat, format) { - if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' - return this._monthsGenitiveEl[momentToFormat.month()]; - } else { - return this._monthsNominativeEl[momentToFormat.month()]; - } - }, - monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), - weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), - weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), - weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'μμ' : 'ΜΜ'; - } else { - return isLower ? 'πμ' : 'ΠΜ'; - } - }, - isPM : function (input) { - return ((input + '').toLowerCase()[0] === 'μ'); - }, - meridiemParse : /[ΠΜ]\.?Μ?\.?/i, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : function () { - switch (this.day()) { - case 6: - return '[το προηγούμενο] dddd [{}] LT'; - default: - return '[την προηγούμενη] dddd [{}] LT'; - } - }, - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendarEl[key], - hours = mom && mom.hours(); - if (typeof output === 'function') { - output = output.apply(mom); - } - return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); - }, - relativeTime : { - future : 'σε %s', - past : '%s πριν', - s : 'λίγα δευτερόλεπτα', - m : 'ένα λεπτό', - mm : '%d λεπτά', - h : 'μία ώρα', - hh : '%d ώρες', - d : 'μία μέρα', - dd : '%d μέρες', - M : 'ένας μήνας', - MM : '%d μήνες', - y : 'ένας χρόνος', - yy : '%d χρόνια' - }, - ordinalParse: /\d{1,2}η/, - ordinal: '%dη', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/en-au.js b/elgg_clean/bower_components/moment/src/locale/en-au.js deleted file mode 100644 index 13c4702d..00000000 --- a/elgg_clean/bower_components/moment/src/locale/en-au.js +++ /dev/null @@ -1,57 +0,0 @@ -//! moment.js locale configuration -//! locale : australian english (en-au) - -import moment from '../moment'; - -export default moment.defineLocale('en-au', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/en-ca.js b/elgg_clean/bower_components/moment/src/locale/en-ca.js deleted file mode 100644 index 9273cf69..00000000 --- a/elgg_clean/bower_components/moment/src/locale/en-ca.js +++ /dev/null @@ -1,54 +0,0 @@ -//! moment.js locale configuration -//! locale : canadian english (en-ca) -//! author : Jonathan Abourbih : https://github.com/jonbca - -import moment from '../moment'; - -export default moment.defineLocale('en-ca', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'YYYY-MM-DD', - LL : 'D MMMM, YYYY', - LLL : 'D MMMM, YYYY h:mm A', - LLLL : 'dddd, D MMMM, YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/en-gb.js b/elgg_clean/bower_components/moment/src/locale/en-gb.js deleted file mode 100644 index 82a643fc..00000000 --- a/elgg_clean/bower_components/moment/src/locale/en-gb.js +++ /dev/null @@ -1,58 +0,0 @@ -//! moment.js locale configuration -//! locale : great britain english (en-gb) -//! author : Chris Gedrim : https://github.com/chrisgedrim - -import moment from '../moment'; - -export default moment.defineLocale('en-gb', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - ordinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/eo.js b/elgg_clean/bower_components/moment/src/locale/eo.js deleted file mode 100644 index d36d5700..00000000 --- a/elgg_clean/bower_components/moment/src/locale/eo.js +++ /dev/null @@ -1,64 +0,0 @@ -//! moment.js locale configuration -//! locale : esperanto (eo) -//! author : Colin Dean : https://github.com/colindean -//! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. -//! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! - -import moment from '../moment'; - -export default moment.defineLocale('eo', { - months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), - weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'), - weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D[-an de] MMMM, YYYY', - LLL : 'D[-an de] MMMM, YYYY HH:mm', - LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm' - }, - meridiemParse: /[ap]\.t\.m/i, - isPM: function (input) { - return input.charAt(0).toLowerCase() === 'p'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'p.t.m.' : 'P.T.M.'; - } else { - return isLower ? 'a.t.m.' : 'A.T.M.'; - } - }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'je %s', - past : 'antaŭ %s', - s : 'sekundoj', - m : 'minuto', - mm : '%d minutoj', - h : 'horo', - hh : '%d horoj', - d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo - dd : '%d tagoj', - M : 'monato', - MM : '%d monatoj', - y : 'jaro', - yy : '%d jaroj' - }, - ordinalParse: /\d{1,2}a/, - ordinal : '%da', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/es.js b/elgg_clean/bower_components/moment/src/locale/es.js deleted file mode 100644 index f9faafe9..00000000 --- a/elgg_clean/bower_components/moment/src/locale/es.js +++ /dev/null @@ -1,70 +0,0 @@ -//! moment.js locale configuration -//! locale : spanish (es) -//! author : Julio Napurí : https://github.com/julionc - -import moment from '../moment'; - -var monthsShortDot = 'Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.'.split('_'), - monthsShort = 'Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic'.split('_'); - -export default moment.defineLocale('es', { - months : 'Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - weekdays : 'Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado'.split('_'), - weekdaysShort : 'Dom._Lun._Mar._Mié._Jue._Vie._Sáb.'.split('_'), - weekdaysMin : 'Do_Lu_Ma_Mi_Ju_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - ordinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/et.js b/elgg_clean/bower_components/moment/src/locale/et.js deleted file mode 100644 index 401ab574..00000000 --- a/elgg_clean/bower_components/moment/src/locale/et.js +++ /dev/null @@ -1,71 +0,0 @@ -//! moment.js locale configuration -//! locale : estonian (et) -//! author : Henry Kehlmann : https://github.com/madhenry -//! improvements : Illimar Tambek : https://github.com/ragulka - -import moment from '../moment'; - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - 'm' : ['ühe minuti', 'üks minut'], - 'mm': [number + ' minuti', number + ' minutit'], - 'h' : ['ühe tunni', 'tund aega', 'üks tund'], - 'hh': [number + ' tunni', number + ' tundi'], - 'd' : ['ühe päeva', 'üks päev'], - 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], - 'MM': [number + ' kuu', number + ' kuud'], - 'y' : ['ühe aasta', 'aasta', 'üks aasta'], - 'yy': [number + ' aasta', number + ' aastat'] - }; - if (withoutSuffix) { - return format[key][2] ? format[key][2] : format[key][1]; - } - return isFuture ? format[key][0] : format[key][1]; -} - -export default moment.defineLocale('et', { - months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), - monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), - weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), - weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), - weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s pärast', - past : '%s tagasi', - s : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : '%d päeva', - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/eu.js b/elgg_clean/bower_components/moment/src/locale/eu.js deleted file mode 100644 index 08a006c8..00000000 --- a/elgg_clean/bower_components/moment/src/locale/eu.js +++ /dev/null @@ -1,55 +0,0 @@ -//! moment.js locale configuration -//! locale : euskara (eu) -//! author : Eneko Illarramendi : https://github.com/eillarra - -import moment from '../moment'; - -export default moment.defineLocale('eu', { - months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), - monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), - weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), - weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), - weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY[ko] MMMM[ren] D[a]', - LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', - LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - l : 'YYYY-M-D', - ll : 'YYYY[ko] MMM D[a]', - lll : 'YYYY[ko] MMM D[a] HH:mm', - llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' - }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' - }, - relativeTime : { - future : '%s barru', - past : 'duela %s', - s : 'segundo batzuk', - m : 'minutu bat', - mm : '%d minutu', - h : 'ordu bat', - hh : '%d ordu', - d : 'egun bat', - dd : '%d egun', - M : 'hilabete bat', - MM : '%d hilabete', - y : 'urte bat', - yy : '%d urte' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/fa.js b/elgg_clean/bower_components/moment/src/locale/fa.js deleted file mode 100644 index 96e670ba..00000000 --- a/elgg_clean/bower_components/moment/src/locale/fa.js +++ /dev/null @@ -1,96 +0,0 @@ -//! moment.js locale configuration -//! locale : Persian (fa) -//! author : Ebrahim Byagowi : https://github.com/ebraminio - -import moment from '../moment'; - -var symbolMap = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰' -}, numberMap = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0' -}; - -export default moment.defineLocale('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - meridiemParse: /قبل از ظهر|بعد از ظهر/, - isPM: function (input) { - return /بعد از ظهر/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'قبل از ظهر'; - } else { - return 'بعد از ظهر'; - } - }, - calendar : { - sameDay : '[امروز ساعت] LT', - nextDay : '[فردا ساعت] LT', - nextWeek : 'dddd [ساعت] LT', - lastDay : '[دیروز ساعت] LT', - lastWeek : 'dddd [پیش] [ساعت] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'در %s', - past : '%s پیش', - s : 'چندین ثانیه', - m : 'یک دقیقه', - mm : '%d دقیقه', - h : 'یک ساعت', - hh : '%d ساعت', - d : 'یک روز', - dd : '%d روز', - M : 'یک ماه', - MM : '%d ماه', - y : 'یک سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/[۰-۹]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - ordinalParse: /\d{1,2}م/, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/fi.js b/elgg_clean/bower_components/moment/src/locale/fi.js deleted file mode 100644 index ed929409..00000000 --- a/elgg_clean/bower_components/moment/src/locale/fi.js +++ /dev/null @@ -1,98 +0,0 @@ -//! moment.js locale configuration -//! locale : finnish (fi) -//! author : Tarmo Aidantausta : https://github.com/bleadof - -import moment from '../moment'; - -var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), - numbersFuture = [ - 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbersPast[7], numbersPast[8], numbersPast[9] - ]; -function translate(number, withoutSuffix, key, isFuture) { - var result = ''; - switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; - } - result = verbalNumber(number, isFuture) + ' ' + result; - return result; -} -function verbalNumber(number, isFuture) { - return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; -} - -export default moment.defineLocale('fi', { - months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), - monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), - weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), - weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), - weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'Do MMMM[ta] YYYY', - LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', - LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', - l : 'D.M.YYYY', - ll : 'Do MMM YYYY', - lll : 'Do MMM YYYY, [klo] HH.mm', - llll : 'ddd, Do MMM YYYY, [klo] HH.mm' - }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s päästä', - past : '%s sitten', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/fo.js b/elgg_clean/bower_components/moment/src/locale/fo.js deleted file mode 100644 index 2425fc95..00000000 --- a/elgg_clean/bower_components/moment/src/locale/fo.js +++ /dev/null @@ -1,51 +0,0 @@ -//! moment.js locale configuration -//! locale : faroese (fo) -//! author : Ragnar Johannesen : https://github.com/ragnar123 - -import moment from '../moment'; - -export default moment.defineLocale('fo', { - months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), - weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), - weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D. MMMM, YYYY HH:mm' - }, - calendar : { - sameDay : '[Í dag kl.] LT', - nextDay : '[Í morgin kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[Í gjár kl.] LT', - lastWeek : '[síðstu] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'um %s', - past : '%s síðani', - s : 'fá sekund', - m : 'ein minutt', - mm : '%d minuttir', - h : 'ein tími', - hh : '%d tímar', - d : 'ein dagur', - dd : '%d dagar', - M : 'ein mánaði', - MM : '%d mánaðir', - y : 'eitt ár', - yy : '%d ár' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/fr-ca.js b/elgg_clean/bower_components/moment/src/locale/fr-ca.js deleted file mode 100644 index 9294b666..00000000 --- a/elgg_clean/bower_components/moment/src/locale/fr-ca.js +++ /dev/null @@ -1,49 +0,0 @@ -//! moment.js locale configuration -//! locale : canadian french (fr-ca) -//! author : Jonathan Abourbih : https://github.com/jonbca - -import moment from '../moment'; - -export default moment.defineLocale('fr-ca', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Aujourd\'hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - ordinalParse: /\d{1,2}(er|e)/, - ordinal : function (number) { - return number + (number === 1 ? 'er' : 'e'); - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/fr.js b/elgg_clean/bower_components/moment/src/locale/fr.js deleted file mode 100644 index deb2f631..00000000 --- a/elgg_clean/bower_components/moment/src/locale/fr.js +++ /dev/null @@ -1,53 +0,0 @@ -//! moment.js locale configuration -//! locale : french (fr) -//! author : John Fischer : https://github.com/jfroffice - -import moment from '../moment'; - -export default moment.defineLocale('fr', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Aujourd\'hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - ordinalParse: /\d{1,2}(er|)/, - ordinal : function (number) { - return number + (number === 1 ? 'er' : ''); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/fy.js b/elgg_clean/bower_components/moment/src/locale/fy.js deleted file mode 100644 index 7c8af617..00000000 --- a/elgg_clean/bower_components/moment/src/locale/fy.js +++ /dev/null @@ -1,62 +0,0 @@ -//! moment.js locale configuration -//! locale : frisian (fy) -//! author : Robin van der Vliet : https://github.com/robin0van0der0v - -import moment from '../moment'; - -var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); - -export default moment.defineLocale('fy', { - months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), - weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), - weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[hjoed om] LT', - nextDay: '[moarn om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[juster om] LT', - lastWeek: '[ôfrûne] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'oer %s', - past : '%s lyn', - s : 'in pear sekonden', - m : 'ien minút', - mm : '%d minuten', - h : 'ien oere', - hh : '%d oeren', - d : 'ien dei', - dd : '%d dagen', - M : 'ien moanne', - MM : '%d moannen', - y : 'ien jier', - yy : '%d jierren' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/gl.js b/elgg_clean/bower_components/moment/src/locale/gl.js deleted file mode 100644 index 02c652c0..00000000 --- a/elgg_clean/bower_components/moment/src/locale/gl.js +++ /dev/null @@ -1,66 +0,0 @@ -//! moment.js locale configuration -//! locale : galician (gl) -//! author : Juan G. Hurtado : https://github.com/juanghurtado - -import moment from '../moment'; - -export default moment.defineLocale('gl', { - months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'), - monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'), - weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'), - weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.'.split('_'), - weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd D MMMM YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; - }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : function (str) { - if (str === 'uns segundos') { - return 'nuns segundos'; - } - return 'en ' + str; - }, - past : 'hai %s', - s : 'uns segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'unha hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un ano', - yy : '%d anos' - }, - ordinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/he.js b/elgg_clean/bower_components/moment/src/locale/he.js deleted file mode 100644 index e353158b..00000000 --- a/elgg_clean/bower_components/moment/src/locale/he.js +++ /dev/null @@ -1,73 +0,0 @@ -//! moment.js locale configuration -//! locale : Hebrew (he) -//! author : Tomer Cohen : https://github.com/tomer -//! author : Moshe Simantov : https://github.com/DevelopmentIL -//! author : Tal Ater : https://github.com/TalAter - -import moment from '../moment'; - -export default moment.defineLocale('he', { - months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), - monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), - weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), - weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), - weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [ב]MMMM YYYY', - LLL : 'D [ב]MMMM YYYY HH:mm', - LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', - l : 'D/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay : '[היום ב־]LT', - nextDay : '[מחר ב־]LT', - nextWeek : 'dddd [בשעה] LT', - lastDay : '[אתמול ב־]LT', - lastWeek : '[ביום] dddd [האחרון בשעה] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'בעוד %s', - past : 'לפני %s', - s : 'מספר שניות', - m : 'דקה', - mm : '%d דקות', - h : 'שעה', - hh : function (number) { - if (number === 2) { - return 'שעתיים'; - } - return number + ' שעות'; - }, - d : 'יום', - dd : function (number) { - if (number === 2) { - return 'יומיים'; - } - return number + ' ימים'; - }, - M : 'חודש', - MM : function (number) { - if (number === 2) { - return 'חודשיים'; - } - return number + ' חודשים'; - }, - y : 'שנה', - yy : function (number) { - if (number === 2) { - return 'שנתיים'; - } else if (number % 10 === 0 && number !== 10) { - return number + ' שנה'; - } - return number + ' שנים'; - } - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/hi.js b/elgg_clean/bower_components/moment/src/locale/hi.js deleted file mode 100644 index 07eae1d4..00000000 --- a/elgg_clean/bower_components/moment/src/locale/hi.js +++ /dev/null @@ -1,114 +0,0 @@ -//! moment.js locale configuration -//! locale : hindi (hi) -//! author : Mayank Singhal : https://github.com/mayanksinghal - -import moment from '../moment'; - -var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' -}, -numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' -}; - -export default moment.defineLocale('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm बजे', - LTS : 'A h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[कल] LT', - nextWeek : 'dddd, LT', - lastDay : '[कल] LT', - lastWeek : '[पिछले] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s में', - past : '%s पहले', - s : 'कुछ ही क्षण', - m : 'एक मिनट', - mm : '%d मिनट', - h : 'एक घंटा', - hh : '%d घंटे', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महीने', - MM : '%d महीने', - y : 'एक वर्ष', - yy : '%d वर्ष' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Hindi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. - meridiemParse: /रात|सुबह|दोपहर|शाम/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सुबह') { - return hour; - } else if (meridiem === 'दोपहर') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'शाम') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'रात'; - } else if (hour < 10) { - return 'सुबह'; - } else if (hour < 17) { - return 'दोपहर'; - } else if (hour < 20) { - return 'शाम'; - } else { - return 'रात'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/hr.js b/elgg_clean/bower_components/moment/src/locale/hr.js deleted file mode 100644 index 5dd529a4..00000000 --- a/elgg_clean/bower_components/moment/src/locale/hr.js +++ /dev/null @@ -1,131 +0,0 @@ -//! moment.js locale configuration -//! locale : hrvatski (hr) -//! author : Bojan Marković : https://github.com/bmarkovic - -import moment from '../moment'; - -function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } -} - -export default moment.defineLocale('hr', { - months : 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'), - monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'dan', - dd : translate, - M : 'mjesec', - MM : translate, - y : 'godinu', - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/hu.js b/elgg_clean/bower_components/moment/src/locale/hu.js deleted file mode 100644 index bc135092..00000000 --- a/elgg_clean/bower_components/moment/src/locale/hu.js +++ /dev/null @@ -1,100 +0,0 @@ -//! moment.js locale configuration -//! locale : hungarian (hu) -//! author : Adam Brunner : https://github.com/adambrunner - -import moment from '../moment'; - -var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); -function translate(number, withoutSuffix, key, isFuture) { - var num = number, - suffix; - switch (key) { - case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); - } - return ''; -} -function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; -} - -export default moment.defineLocale('hu', { - months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), - monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), - weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), - weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), - weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY. MMMM D.', - LLL : 'YYYY. MMMM D. H:mm', - LLLL : 'YYYY. MMMM D., dddd H:mm' - }, - meridiemParse: /de|du/i, - isPM: function (input) { - return input.charAt(1).toLowerCase() === 'u'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower === true ? 'de' : 'DE'; - } else { - return isLower === true ? 'du' : 'DU'; - } - }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { - return week.call(this, true); - }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { - return week.call(this, false); - }, - sameElse : 'L' - }, - relativeTime : { - future : '%s múlva', - past : '%s', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/hy-am.js b/elgg_clean/bower_components/moment/src/locale/hy-am.js deleted file mode 100644 index dd78e6a0..00000000 --- a/elgg_clean/bower_components/moment/src/locale/hy-am.js +++ /dev/null @@ -1,102 +0,0 @@ -//! moment.js locale configuration -//! locale : Armenian (hy-am) -//! author : Armendarabyan : https://github.com/armendarabyan - -import moment from '../moment'; - -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), - 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; -} -function monthsShortCaseReplace(m, format) { - var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'); - return monthsShort[m.month()]; -} -function weekdaysCaseReplace(m, format) { - var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'); - return weekdays[m.day()]; -} - -export default moment.defineLocale('hy-am', { - months : monthsCaseReplace, - monthsShort : monthsShortCaseReplace, - weekdays : weekdaysCaseReplace, - weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY թ.', - LLL : 'D MMMM YYYY թ., HH:mm', - LLLL : 'dddd, D MMMM YYYY թ., HH:mm' - }, - calendar : { - sameDay: '[այսօր] LT', - nextDay: '[վաղը] LT', - lastDay: '[երեկ] LT', - nextWeek: function () { - return 'dddd [օրը ժամը] LT'; - }, - lastWeek: function () { - return '[անցած] dddd [օրը ժամը] LT'; - }, - sameElse: 'L' - }, - relativeTime : { - future : '%s հետո', - past : '%s առաջ', - s : 'մի քանի վայրկյան', - m : 'րոպե', - mm : '%d րոպե', - h : 'ժամ', - hh : '%d ժամ', - d : 'օր', - dd : '%d օր', - M : 'ամիս', - MM : '%d ամիս', - y : 'տարի', - yy : '%d տարի' - }, - meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, - isPM: function (input) { - return /^(ցերեկվա|երեկոյան)$/.test(input); - }, - meridiem : function (hour) { - if (hour < 4) { - return 'գիշերվա'; - } else if (hour < 12) { - return 'առավոտվա'; - } else if (hour < 17) { - return 'ցերեկվա'; - } else { - return 'երեկոյան'; - } - }, - ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, - ordinal: function (number, period) { - switch (period) { - case 'DDD': - case 'w': - case 'W': - case 'DDDo': - if (number === 1) { - return number + '-ին'; - } - return number + '-րդ'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/id.js b/elgg_clean/bower_components/moment/src/locale/id.js deleted file mode 100644 index 7bf359f4..00000000 --- a/elgg_clean/bower_components/moment/src/locale/id.js +++ /dev/null @@ -1,74 +0,0 @@ -//! moment.js locale configuration -//! locale : Bahasa Indonesia (id) -//! author : Mohammad Satrio Utomo : https://github.com/tyok -//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan - -import moment from '../moment'; - -export default moment.defineLocale('id', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|siang|sore|malam/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'siang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sore' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'siang'; - } else if (hours < 19) { - return 'sore'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lalu', - s : 'beberapa detik', - m : 'semenit', - mm : '%d menit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/is.js b/elgg_clean/bower_components/moment/src/locale/is.js deleted file mode 100644 index 833907de..00000000 --- a/elgg_clean/bower_components/moment/src/locale/is.js +++ /dev/null @@ -1,118 +0,0 @@ -//! moment.js locale configuration -//! locale : icelandic (is) -//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik - -import moment from '../moment'; - -function plural(n) { - if (n % 100 === 11) { - return true; - } else if (n % 10 === 1) { - return false; - } - return true; -} -function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (plural(number)) { - if (withoutSuffix) { - return result + 'dagar'; - } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (plural(number)) { - if (withoutSuffix) { - return result + 'mánuðir'; - } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); - } -} - -export default moment.defineLocale('is', { - months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), - weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), - weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), - weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' - }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'eftir %s', - past : 'fyrir %s síðan', - s : translate, - m : translate, - mm : translate, - h : 'klukkustund', - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/it.js b/elgg_clean/bower_components/moment/src/locale/it.js deleted file mode 100644 index d2d764c5..00000000 --- a/elgg_clean/bower_components/moment/src/locale/it.js +++ /dev/null @@ -1,61 +0,0 @@ -//! moment.js locale configuration -//! locale : italian (it) -//! author : Lorenzo : https://github.com/aliem -//! author: Mattia Larentis: https://github.com/nostalgiaz - -import moment from '../moment'; - -export default moment.defineLocale('it', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'), - weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'), - weekdaysMin : 'D_L_Ma_Me_G_V_S'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[la scorsa] dddd [alle] LT'; - default: - return '[lo scorso] dddd [alle] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; - }, - past : '%s fa', - s : 'alcuni secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' - }, - ordinalParse : /\d{1,2}º/, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ja.js b/elgg_clean/bower_components/moment/src/locale/ja.js deleted file mode 100644 index 6cdc4fce..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ja.js +++ /dev/null @@ -1,56 +0,0 @@ -//! moment.js locale configuration -//! locale : japanese (ja) -//! author : LI Long : https://github.com/baryon - -import moment from '../moment'; - -export default moment.defineLocale('ja', { - months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), - weekdaysShort : '日_月_火_水_木_金_土'.split('_'), - weekdaysMin : '日_月_火_水_木_金_土'.split('_'), - longDateFormat : { - LT : 'Ah時m分', - LTS : 'Ah時m分s秒', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日Ah時m分', - LLLL : 'YYYY年M月D日Ah時m分 dddd' - }, - meridiemParse: /午前|午後/i, - isPM : function (input) { - return input === '午後'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return '午前'; - } else { - return '午後'; - } - }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : '[来週]dddd LT', - lastDay : '[昨日] LT', - lastWeek : '[前週]dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s後', - past : '%s前', - s : '数秒', - m : '1分', - mm : '%d分', - h : '1時間', - hh : '%d時間', - d : '1日', - dd : '%d日', - M : '1ヶ月', - MM : '%dヶ月', - y : '1年', - yy : '%d年' - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/jv.js b/elgg_clean/bower_components/moment/src/locale/jv.js deleted file mode 100644 index 8596944f..00000000 --- a/elgg_clean/bower_components/moment/src/locale/jv.js +++ /dev/null @@ -1,73 +0,0 @@ -//! moment.js locale configuration -//! locale : Boso Jowo (jv) -//! author : Rony Lantip : https://github.com/lantip -//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa - -import moment from '../moment'; - -export default moment.defineLocale('jv', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), - weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /enjing|siyang|sonten|ndalu/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'enjing') { - return hour; - } else if (meridiem === 'siyang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sonten' || meridiem === 'ndalu') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'enjing'; - } else if (hours < 15) { - return 'siyang'; - } else if (hours < 19) { - return 'sonten'; - } else { - return 'ndalu'; - } - }, - calendar : { - sameDay : '[Dinten puniko pukul] LT', - nextDay : '[Mbenjang pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kala wingi pukul] LT', - lastWeek : 'dddd [kepengker pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'wonten ing %s', - past : '%s ingkang kepengker', - s : 'sawetawis detik', - m : 'setunggal menit', - mm : '%d menit', - h : 'setunggal jam', - hh : '%d jam', - d : 'sedinten', - dd : '%d dinten', - M : 'sewulan', - MM : '%d wulan', - y : 'setaun', - yy : '%d taun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/elgg_clean/bower_components/moment/src/locale/ka.js b/elgg_clean/bower_components/moment/src/locale/ka.js deleted file mode 100644 index b1454b80..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ka.js +++ /dev/null @@ -1,94 +0,0 @@ -//! moment.js locale configuration -//! locale : Georgian (ka) -//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili - -import moment from '../moment'; - -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, - nounCase = (/D[oD] *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; -} -function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') - }, - nounCase = (/(წინა|შემდეგ)/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; -} - -export default moment.defineLocale('ka', { - months : monthsCaseReplace, - monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays : weekdaysCaseReplace, - weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), - weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, 'ში') : - s + 'ში'; - }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { - return s.replace(/(ი|ე)$/, 'ის წინ'); - } - if ((/წელი/).test(s)) { - return s.replace(/წელი$/, 'წლის წინ'); - } - }, - s : 'რამდენიმე წამი', - m : 'წუთი', - mm : '%d წუთი', - h : 'საათი', - hh : '%d საათი', - d : 'დღე', - dd : '%d დღე', - M : 'თვე', - MM : '%d თვე', - y : 'წელი', - yy : '%d წელი' - }, - ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, - ordinal : function (number) { - if (number === 0) { - return number; - } - if (number === 1) { - return number + '-ლი'; - } - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { - return 'მე-' + number; - } - return number + '-ე'; - }, - week : { - dow : 1, - doy : 7 - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/km.js b/elgg_clean/bower_components/moment/src/locale/km.js deleted file mode 100644 index 389d1f61..00000000 --- a/elgg_clean/bower_components/moment/src/locale/km.js +++ /dev/null @@ -1,49 +0,0 @@ -//! moment.js locale configuration -//! locale : khmer (km) -//! author : Kruy Vanna : https://github.com/kruyvanna - -import moment from '../moment'; - -export default moment.defineLocale('km', { - months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), - monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), - weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS : 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[ថ្ងៃនៈ ម៉ោង] LT', - nextDay: '[ស្អែក ម៉ោង] LT', - nextWeek: 'dddd [ម៉ោង] LT', - lastDay: '[ម្សិលមិញ ម៉ោង] LT', - lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L' - }, - relativeTime: { - future: '%sទៀត', - past: '%sមុន', - s: 'ប៉ុន្មានវិនាទី', - m: 'មួយនាទី', - mm: '%d នាទី', - h: 'មួយម៉ោង', - hh: '%d ម៉ោង', - d: 'មួយថ្ងៃ', - dd: '%d ថ្ងៃ', - M: 'មួយខែ', - MM: '%d ខែ', - y: 'មួយឆ្នាំ', - yy: '%d ឆ្នាំ' - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ko.js b/elgg_clean/bower_components/moment/src/locale/ko.js deleted file mode 100644 index 268e7827..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ko.js +++ /dev/null @@ -1,59 +0,0 @@ -//! moment.js locale configuration -//! locale : korean (ko) -//! -//! authors -//! -//! - Kyungwook, Park : https://github.com/kyungw00k -//! - Jeeeyul Lee <jeeeyul@gmail.com> - -import moment from '../moment'; - -export default moment.defineLocale('ko', { - months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), - weekdaysShort : '일_월_화_수_목_금_토'.split('_'), - weekdaysMin : '일_월_화_수_목_금_토'.split('_'), - longDateFormat : { - LT : 'A h시 m분', - LTS : 'A h시 m분 s초', - L : 'YYYY.MM.DD', - LL : 'YYYY년 MMMM D일', - LLL : 'YYYY년 MMMM D일 A h시 m분', - LLLL : 'YYYY년 MMMM D일 dddd A h시 m분' - }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s 후', - past : '%s 전', - s : '몇초', - ss : '%d초', - m : '일분', - mm : '%d분', - h : '한시간', - hh : '%d시간', - d : '하루', - dd : '%d일', - M : '한달', - MM : '%d달', - y : '일년', - yy : '%d년' - }, - ordinalParse : /\d{1,2}일/, - ordinal : '%d일', - meridiemParse : /오전|오후/, - isPM : function (token) { - return token === '오후'; - }, - meridiem : function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/lb.js b/elgg_clean/bower_components/moment/src/locale/lb.js deleted file mode 100644 index 3f20eeae..00000000 --- a/elgg_clean/bower_components/moment/src/locale/lb.js +++ /dev/null @@ -1,125 +0,0 @@ -//! moment.js locale configuration -//! locale : Luxembourgish (lb) -//! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz - -import moment from '../moment'; - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eng Minutt', 'enger Minutt'], - 'h': ['eng Stonn', 'enger Stonn'], - 'd': ['een Dag', 'engem Dag'], - 'M': ['ee Mount', 'engem Mount'], - 'y': ['ee Joer', 'engem Joer'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; -} -function processFutureTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'a ' + string; - } - return 'an ' + string; -} -function processPastTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'viru ' + string; - } - return 'virun ' + string; -} -/** - * Returns true if the word before the given number loses the '-n' ending. - * e.g. 'an 10 Deeg' but 'a 5 Deeg' - * - * @param number {integer} - * @returns {boolean} - */ -function eifelerRegelAppliesToNumber(number) { - number = parseInt(number, 10); - if (isNaN(number)) { - return false; - } - if (number < 0) { - // Negative Number --> always true - return true; - } else if (number < 10) { - // Only 1 digit - if (4 <= number && number <= 7) { - return true; - } - return false; - } else if (number < 100) { - // 2 digits - var lastDigit = number % 10, firstDigit = number / 10; - if (lastDigit === 0) { - return eifelerRegelAppliesToNumber(firstDigit); - } - return eifelerRegelAppliesToNumber(lastDigit); - } else if (number < 10000) { - // 3 or 4 digits --> recursively check first digit - while (number >= 10) { - number = number / 10; - } - return eifelerRegelAppliesToNumber(number); - } else { - // Anything larger than 4 digits: recursively check first n-3 digits - number = number / 1000; - return eifelerRegelAppliesToNumber(number); - } -} - -export default moment.defineLocale('lb', { - months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), - weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'H:mm [Auer]', - LTS: 'H:mm:ss [Auer]', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm [Auer]', - LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' - }, - calendar: { - sameDay: '[Haut um] LT', - sameElse: 'L', - nextDay: '[Muer um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gëschter um] LT', - lastWeek: function () { - // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule - switch (this.day()) { - case 2: - case 4: - return '[Leschten] dddd [um] LT'; - default: - return '[Leschte] dddd [um] LT'; - } - } - }, - relativeTime : { - future : processFutureTime, - past : processPastTime, - s : 'e puer Sekonnen', - m : processRelativeTime, - mm : '%d Minutten', - h : processRelativeTime, - hh : '%d Stonnen', - d : processRelativeTime, - dd : '%d Deeg', - M : processRelativeTime, - MM : '%d Méint', - y : processRelativeTime, - yy : '%d Joer' - }, - ordinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/lt.js b/elgg_clean/bower_components/moment/src/locale/lt.js deleted file mode 100644 index 6487c683..00000000 --- a/elgg_clean/bower_components/moment/src/locale/lt.js +++ /dev/null @@ -1,116 +0,0 @@ -//! moment.js locale configuration -//! locale : Lithuanian (lt) -//! author : Mindaugas Mozūras : https://github.com/mmozuras - -import moment from '../moment'; - -var units = { - 'm' : 'minutė_minutės_minutę', - 'mm': 'minutės_minučių_minutes', - 'h' : 'valanda_valandos_valandą', - 'hh': 'valandos_valandų_valandas', - 'd' : 'diena_dienos_dieną', - 'dd': 'dienos_dienų_dienas', - 'M' : 'mėnuo_mėnesio_mėnesį', - 'MM': 'mėnesiai_mėnesių_mėnesius', - 'y' : 'metai_metų_metus', - 'yy': 'metai_metų_metus' -}, -weekDays = 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'); -function translateSeconds(number, withoutSuffix, key, isFuture) { - if (withoutSuffix) { - return 'kelios sekundės'; - } else { - return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; - } -} -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), - 'accusative': 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; -} -function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); -} -function special(number) { - return number % 10 === 0 || (number > 10 && number < 20); -} -function forms(key) { - return units[key].split('_'); -} -function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - if (number === 1) { - return result + translateSingular(number, withoutSuffix, key[0], isFuture); - } else if (withoutSuffix) { - return result + (special(number) ? forms(key)[1] : forms(key)[0]); - } else { - if (isFuture) { - return result + forms(key)[1]; - } else { - return result + (special(number) ? forms(key)[1] : forms(key)[2]); - } - } -} -function relativeWeekDay(moment, format) { - var nominative = format.indexOf('dddd HH:mm') === -1, - weekDay = weekDays[moment.day()]; - return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + 'į'; -} - -export default moment.defineLocale('lt', { - months : monthsCaseReplace, - monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays : relativeWeekDay, - weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), - weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY [m.] MMMM D [d.]', - LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', - l : 'YYYY-MM-DD', - ll : 'YYYY [m.] MMMM D [d.]', - lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' - }, - calendar : { - sameDay : '[Šiandien] LT', - nextDay : '[Rytoj] LT', - nextWeek : 'dddd LT', - lastDay : '[Vakar] LT', - lastWeek : '[Praėjusį] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : 'po %s', - past : 'prieš %s', - s : translateSeconds, - m : translateSingular, - mm : translate, - h : translateSingular, - hh : translate, - d : translateSingular, - dd : translate, - M : translateSingular, - MM : translate, - y : translateSingular, - yy : translate - }, - ordinalParse: /\d{1,2}-oji/, - ordinal : function (number) { - return number + '-oji'; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/lv.js b/elgg_clean/bower_components/moment/src/locale/lv.js deleted file mode 100644 index 53aec40d..00000000 --- a/elgg_clean/bower_components/moment/src/locale/lv.js +++ /dev/null @@ -1,87 +0,0 @@ -//! moment.js locale configuration -//! locale : latvian (lv) -//! author : Kristaps Karlsons : https://github.com/skakri -//! author : Jānis Elmeris : https://github.com/JanisE - -import moment from '../moment'; - -var units = { - 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'h': 'stundas_stundām_stunda_stundas'.split('_'), - 'hh': 'stundas_stundām_stunda_stundas'.split('_'), - 'd': 'dienas_dienām_diena_dienas'.split('_'), - 'dd': 'dienas_dienām_diena_dienas'.split('_'), - 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'y': 'gada_gadiem_gads_gadi'.split('_'), - 'yy': 'gada_gadiem_gads_gadi'.split('_') -}; -/** - * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. - */ -function format(forms, number, withoutSuffix) { - if (withoutSuffix) { - // E.g. "21 minūte", "3 minūtes". - return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; - } else { - // E.g. "21 minūtes" as in "pēc 21 minūtes". - // E.g. "3 minūtēm" as in "pēc 3 minūtēm". - return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; - } -} -function relativeTimeWithPlural(number, withoutSuffix, key) { - return number + ' ' + format(units[key], number, withoutSuffix); -} -function relativeTimeWithSingular(number, withoutSuffix, key) { - return format(units[key], number, withoutSuffix); -} -function relativeSeconds(number, withoutSuffix) { - return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; -} - -export default moment.defineLocale('lv', { - months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), - weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY.', - LL : 'YYYY. [gada] D. MMMM', - LLL : 'YYYY. [gada] D. MMMM, HH:mm', - LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' - }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'pēc %s', - past : 'pirms %s', - s : relativeSeconds, - m : relativeTimeWithSingular, - mm : relativeTimeWithPlural, - h : relativeTimeWithSingular, - hh : relativeTimeWithPlural, - d : relativeTimeWithSingular, - dd : relativeTimeWithPlural, - M : relativeTimeWithSingular, - MM : relativeTimeWithPlural, - y : relativeTimeWithSingular, - yy : relativeTimeWithPlural - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/me.js b/elgg_clean/bower_components/moment/src/locale/me.js deleted file mode 100644 index a5096585..00000000 --- a/elgg_clean/bower_components/moment/src/locale/me.js +++ /dev/null @@ -1,99 +0,0 @@ -//! moment.js locale configuration -//! locale : Montenegrin (me) -//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac - -import moment from '../moment'; - -var translator = { - words: { //Different grammatical cases - m: ['jedan minut', 'jednog minuta'], - mm: ['minut', 'minuta', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mjesec', 'mjeseca', 'mjeseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } - } -}; - -export default moment.defineLocale('me', { - months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], - monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], - weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sjutra u] LT', - - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedjelje] [u] LT', - '[prošlog] [ponedjeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srijede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'nekoliko sekundi', - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'dan', - dd : translator.translate, - M : 'mjesec', - MM : translator.translate, - y : 'godinu', - yy : translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/elgg_clean/bower_components/moment/src/locale/mk.js b/elgg_clean/bower_components/moment/src/locale/mk.js deleted file mode 100644 index 3d2bb931..00000000 --- a/elgg_clean/bower_components/moment/src/locale/mk.js +++ /dev/null @@ -1,81 +0,0 @@ -//! moment.js locale configuration -//! locale : macedonian (mk) -//! author : Borislav Mickov : https://github.com/B0k0 - -import moment from '../moment'; - -export default moment.defineLocale('mk', { - months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), - weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), - weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Денес во] LT', - nextDay : '[Утре во] LT', - nextWeek : 'dddd [во] LT', - lastDay : '[Вчера во] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[Во изминатата] dddd [во] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Во изминатиот] dddd [во] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'после %s', - past : 'пред %s', - s : 'неколку секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дена', - M : 'месец', - MM : '%d месеци', - y : 'година', - yy : '%d години' - }, - ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ml.js b/elgg_clean/bower_components/moment/src/locale/ml.js deleted file mode 100644 index 7bafa7a1..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ml.js +++ /dev/null @@ -1,62 +0,0 @@ -//! moment.js locale configuration -//! locale : malayalam (ml) -//! author : Floyd Pink : https://github.com/floydpink - -import moment from '../moment'; - -export default moment.defineLocale('ml', { - months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), - monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), - weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), - weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), - weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), - longDateFormat : { - LT : 'A h:mm -നു', - LTS : 'A h:mm:ss -നു', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm -നു', - LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' - }, - calendar : { - sameDay : '[ഇന്ന്] LT', - nextDay : '[നാളെ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ഇന്നലെ] LT', - lastWeek : '[കഴിഞ്ഞ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s കഴിഞ്ഞ്', - past : '%s മുൻപ്', - s : 'അൽപ നിമിഷങ്ങൾ', - m : 'ഒരു മിനിറ്റ്', - mm : '%d മിനിറ്റ്', - h : 'ഒരു മണിക്കൂർ', - hh : '%d മണിക്കൂർ', - d : 'ഒരു ദിവസം', - dd : '%d ദിവസം', - M : 'ഒരു മാസം', - MM : '%d മാസം', - y : 'ഒരു വർഷം', - yy : '%d വർഷം' - }, - meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, - isPM : function (input) { - return /^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'രാത്രി'; - } else if (hour < 12) { - return 'രാവിലെ'; - } else if (hour < 17) { - return 'ഉച്ച കഴിഞ്ഞ്'; - } else if (hour < 20) { - return 'വൈകുന്നേരം'; - } else { - return 'രാത്രി'; - } - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/mr.js b/elgg_clean/bower_components/moment/src/locale/mr.js deleted file mode 100644 index 7a2b8e09..00000000 --- a/elgg_clean/bower_components/moment/src/locale/mr.js +++ /dev/null @@ -1,112 +0,0 @@ -//! moment.js locale configuration -//! locale : Marathi (mr) -//! author : Harshad Kale : https://github.com/kalehv - -import moment from '../moment'; - -var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' -}, -numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' -}; - -export default moment.defineLocale('mr', { - months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), - weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm वाजता', - LTS : 'A h:mm:ss वाजता', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm वाजता', - LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[उद्या] LT', - nextWeek : 'dddd, LT', - lastDay : '[काल] LT', - lastWeek: '[मागील] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s नंतर', - past : '%s पूर्वी', - s : 'सेकंद', - m: 'एक मिनिट', - mm: '%d मिनिटे', - h : 'एक तास', - hh : '%d तास', - d : 'एक दिवस', - dd : '%d दिवस', - M : 'एक महिना', - MM : '%d महिने', - y : 'एक वर्ष', - yy : '%d वर्षे' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात्री') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सकाळी') { - return hour; - } else if (meridiem === 'दुपारी') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'सायंकाळी') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'रात्री'; - } else if (hour < 10) { - return 'सकाळी'; - } else if (hour < 17) { - return 'दुपारी'; - } else if (hour < 20) { - return 'सायंकाळी'; - } else { - return 'रात्री'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ms-my.js b/elgg_clean/bower_components/moment/src/locale/ms-my.js deleted file mode 100644 index 1490a1ff..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ms-my.js +++ /dev/null @@ -1,73 +0,0 @@ -//! moment.js locale configuration -//! locale : Bahasa Malaysia (ms-MY) -//! author : Weldan Jamili : https://github.com/weldan - -import moment from '../moment'; - -export default moment.defineLocale('ms-my', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ms.js b/elgg_clean/bower_components/moment/src/locale/ms.js deleted file mode 100644 index 59fb9a27..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ms.js +++ /dev/null @@ -1,73 +0,0 @@ -//! moment.js locale configuration -//! locale : Bahasa Malaysia (ms-MY) -//! author : Weldan Jamili : https://github.com/weldan - -import moment from '../moment'; - -export default moment.defineLocale('ms', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/my.js b/elgg_clean/bower_components/moment/src/locale/my.js deleted file mode 100644 index d9dff819..00000000 --- a/elgg_clean/bower_components/moment/src/locale/my.js +++ /dev/null @@ -1,84 +0,0 @@ -//! moment.js locale configuration -//! locale : Burmese (my) -//! author : Squar team, mysquar.com - -import moment from '../moment'; - -var symbolMap = { - '1': '၁', - '2': '၂', - '3': '၃', - '4': '၄', - '5': '၅', - '6': '၆', - '7': '၇', - '8': '၈', - '9': '၉', - '0': '၀' -}, numberMap = { - '၁': '1', - '၂': '2', - '၃': '3', - '၄': '4', - '၅': '5', - '၆': '6', - '၇': '7', - '၈': '8', - '၉': '9', - '၀': '0' -}; - -export default moment.defineLocale('my', { - months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), - monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), - weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), - weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[ယနေ.] LT [မှာ]', - nextDay: '[မနက်ဖြန်] LT [မှာ]', - nextWeek: 'dddd LT [မှာ]', - lastDay: '[မနေ.က] LT [မှာ]', - lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', - sameElse: 'L' - }, - relativeTime: { - future: 'လာမည့် %s မှာ', - past: 'လွန်ခဲ့သော %s က', - s: 'စက္ကန်.အနည်းငယ်', - m: 'တစ်မိနစ်', - mm: '%d မိနစ်', - h: 'တစ်နာရီ', - hh: '%d နာရီ', - d: 'တစ်ရက်', - dd: '%d ရက်', - M: 'တစ်လ', - MM: '%d လ', - y: 'တစ်နှစ်', - yy: '%d နှစ်' - }, - preparse: function (string) { - return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/nb.js b/elgg_clean/bower_components/moment/src/locale/nb.js deleted file mode 100644 index d5f15a9b..00000000 --- a/elgg_clean/bower_components/moment/src/locale/nb.js +++ /dev/null @@ -1,52 +0,0 @@ -//! moment.js locale configuration -//! locale : norwegian bokmål (nb) -//! authors : Espen Hovlandsdal : https://github.com/rexxars -//! Sigurd Gartmann : https://github.com/sigurdga - -import moment from '../moment'; - -export default moment.defineLocale('nb', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tirs_ons_tors_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'H.mm', - LTS : 'H.mm.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H.mm', - LLLL : 'dddd D. MMMM YYYY [kl.] H.mm' - }, - calendar : { - sameDay: '[i dag kl.] LT', - nextDay: '[i morgen kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[i går kl.] LT', - lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'for %s siden', - s : 'noen sekunder', - m : 'ett minutt', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dager', - M : 'en måned', - MM : '%d måneder', - y : 'ett år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ne.js b/elgg_clean/bower_components/moment/src/locale/ne.js deleted file mode 100644 index e229357c..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ne.js +++ /dev/null @@ -1,114 +0,0 @@ -//! moment.js locale configuration -//! locale : nepali/nepalese -//! author : suvash : https://github.com/suvash - -import moment from '../moment'; - -var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' -}, -numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' -}; - -export default moment.defineLocale('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split('_'), - longDateFormat : { - LT : 'Aको h:mm बजे', - LTS : 'Aको h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, Aको h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /राती|बिहान|दिउँसो|बेलुका|साँझ|राती/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'राती') { - return hour < 3 ? hour : hour + 12; - } else if (meridiem === 'बिहान') { - return hour; - } else if (meridiem === 'दिउँसो') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'बेलुका' || meridiem === 'साँझ') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 3) { - return 'राती'; - } else if (hour < 10) { - return 'बिहान'; - } else if (hour < 15) { - return 'दिउँसो'; - } else if (hour < 18) { - return 'बेलुका'; - } else if (hour < 20) { - return 'साँझ'; - } else { - return 'राती'; - } - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[भोली] LT', - nextWeek : '[आउँदो] dddd[,] LT', - lastDay : '[हिजो] LT', - lastWeek : '[गएको] dddd[,] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%sमा', - past : '%s अगाडी', - s : 'केही समय', - m : 'एक मिनेट', - mm : '%d मिनेट', - h : 'एक घण्टा', - hh : '%d घण्टा', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महिना', - MM : '%d महिना', - y : 'एक बर्ष', - yy : '%d बर्ष' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/nl.js b/elgg_clean/bower_components/moment/src/locale/nl.js deleted file mode 100644 index 6669531d..00000000 --- a/elgg_clean/bower_components/moment/src/locale/nl.js +++ /dev/null @@ -1,62 +0,0 @@ -//! moment.js locale configuration -//! locale : dutch (nl) -//! author : Joris Röling : https://github.com/jjupiter - -import moment from '../moment'; - -var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - -export default moment.defineLocale('nl', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' - }, - ordinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/nn.js b/elgg_clean/bower_components/moment/src/locale/nn.js deleted file mode 100644 index 3f284b3c..00000000 --- a/elgg_clean/bower_components/moment/src/locale/nn.js +++ /dev/null @@ -1,51 +0,0 @@ -//! moment.js locale configuration -//! locale : norwegian nynorsk (nn) -//! author : https://github.com/mechuwind - -import moment from '../moment'; - -export default moment.defineLocale('nn', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), - weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), - weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[I dag klokka] LT', - nextDay: '[I morgon klokka] LT', - nextWeek: 'dddd [klokka] LT', - lastDay: '[I går klokka] LT', - lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'for %s sidan', - s : 'nokre sekund', - m : 'eit minutt', - mm : '%d minutt', - h : 'ein time', - hh : '%d timar', - d : 'ein dag', - dd : '%d dagar', - M : 'ein månad', - MM : '%d månader', - y : 'eit år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/pl.js b/elgg_clean/bower_components/moment/src/locale/pl.js deleted file mode 100644 index e6a3a5a3..00000000 --- a/elgg_clean/bower_components/moment/src/locale/pl.js +++ /dev/null @@ -1,95 +0,0 @@ -//! moment.js locale configuration -//! locale : polish (pl) -//! author : Rafal Hirsz : https://github.com/evoL - -import moment from '../moment'; - -var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), - monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); -function plural(n) { - return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); -} -function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (plural(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (plural(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (plural(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (plural(number) ? 'lata' : 'lat'); - } -} - -export default moment.defineLocale('pl', { - months : function (momentToFormat, format) { - if (format === '') { - // Hack: if format empty we know this is used to generate - // RegExp by moment. Give then back both valid forms of months - // in RegExp ready format. - return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; - } else if (/D MMMM/.test(format)) { - return monthsSubjective[momentToFormat.month()]; - } else { - return monthsNominative[momentToFormat.month()]; - } - }, - monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), - weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), - weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'), - weekdaysMin : 'N_Pn_Wt_Śr_Cz_Pt_So'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Dziś o] LT', - nextDay: '[Jutro o] LT', - nextWeek: '[W] dddd [o] LT', - lastDay: '[Wczoraj o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : '%s temu', - s : 'kilka sekund', - m : translate, - mm : translate, - h : translate, - hh : translate, - d : '1 dzień', - dd : '%d dni', - M : 'miesiąc', - MM : translate, - y : 'rok', - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/elgg_clean/bower_components/moment/src/locale/pt-br.js b/elgg_clean/bower_components/moment/src/locale/pt-br.js deleted file mode 100644 index c002fdb3..00000000 --- a/elgg_clean/bower_components/moment/src/locale/pt-br.js +++ /dev/null @@ -1,51 +0,0 @@ -//! moment.js locale configuration -//! locale : brazilian portuguese (pt-br) -//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira - -import moment from '../moment'; - -export default moment.defineLocale('pt-br', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : '%s atrás', - s : 'poucos segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - ordinalParse: /\d{1,2}º/, - ordinal : '%dº' -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/pt.js b/elgg_clean/bower_components/moment/src/locale/pt.js deleted file mode 100644 index 0a38d468..00000000 --- a/elgg_clean/bower_components/moment/src/locale/pt.js +++ /dev/null @@ -1,55 +0,0 @@ -//! moment.js locale configuration -//! locale : portuguese (pt) -//! author : Jefferson : https://github.com/jalex79 - -import moment from '../moment'; - -export default moment.defineLocale('pt', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - ordinalParse: /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ro.js b/elgg_clean/bower_components/moment/src/locale/ro.js deleted file mode 100644 index 56413d87..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ro.js +++ /dev/null @@ -1,65 +0,0 @@ -//! moment.js locale configuration -//! locale : romanian (ro) -//! author : Vlad Gurdiga : https://github.com/gurdiga -//! author : Valentin Agachi : https://github.com/avaly - -import moment from '../moment'; - -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'minute', - 'hh': 'ore', - 'dd': 'zile', - 'MM': 'luni', - 'yy': 'ani' - }, - separator = ' '; - if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { - separator = ' de '; - } - return number + separator + format[key]; -} - -export default moment.defineLocale('ro', { - months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), - monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), - weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), - weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), - weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[azi la] LT', - nextDay: '[mâine la] LT', - nextWeek: 'dddd [la] LT', - lastDay: '[ieri la] LT', - lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'peste %s', - past : '%s în urmă', - s : 'câteva secunde', - m : 'un minut', - mm : relativeTimeWithPlural, - h : 'o oră', - hh : relativeTimeWithPlural, - d : 'o zi', - dd : relativeTimeWithPlural, - M : 'o lună', - MM : relativeTimeWithPlural, - y : 'un an', - yy : relativeTimeWithPlural - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ru.js b/elgg_clean/bower_components/moment/src/locale/ru.js deleted file mode 100644 index 0687888c..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ru.js +++ /dev/null @@ -1,155 +0,0 @@ -//! moment.js locale configuration -//! locale : russian (ru) -//! author : Viktorminator : https://github.com/Viktorminator -//! Author : Menelion Elensúle : https://github.com/Oire - -import moment from '../moment'; - -function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); -} -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' - }; - if (key === 'm') { - return withoutSuffix ? 'минута' : 'минуту'; - } - else { - return number + ' ' + plural(format[key], +number); - } -} -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; -} -function monthsShortCaseReplace(m, format) { - var monthsShort = { - 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') - }, - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return monthsShort[nounCase][m.month()]; -} -function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') - }, - nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; -} - -export default moment.defineLocale('ru', { - months : monthsCaseReplace, - monthsShort : monthsShortCaseReplace, - weekdays : weekdaysCaseReplace, - weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., HH:mm', - LLLL : 'dddd, D MMMM YYYY г., HH:mm' - }, - calendar : { - sameDay: '[Сегодня в] LT', - nextDay: '[Завтра в] LT', - lastDay: '[Вчера в] LT', - nextWeek: function () { - return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; - }, - lastWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В прошлое] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd [в] LT'; - } else { - return '[В] dddd [в] LT'; - } - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'через %s', - past : '%s назад', - s : 'несколько секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : 'час', - hh : relativeTimeWithPlural, - d : 'день', - dd : relativeTimeWithPlural, - M : 'месяц', - MM : relativeTimeWithPlural, - y : 'год', - yy : relativeTimeWithPlural - }, - meridiemParse: /ночи|утра|дня|вечера/i, - isPM : function (input) { - return /^(дня|вечера)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночи'; - } else if (hour < 12) { - return 'утра'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечера'; - } - }, - ordinalParse: /\d{1,2}-(й|го|я)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/si.js b/elgg_clean/bower_components/moment/src/locale/si.js deleted file mode 100644 index 15c9f159..00000000 --- a/elgg_clean/bower_components/moment/src/locale/si.js +++ /dev/null @@ -1,56 +0,0 @@ -//! moment.js locale configuration -//! locale : Sinhalese (si) -//! author : Sampath Sitinamaluwa : https://github.com/sampathsris - -import moment from '../moment'; - -/*jshint -W100*/ -export default moment.defineLocale('si', { - months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), - monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), - weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), - weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'), - weekdaysMin : 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'), - longDateFormat : { - LT : 'a h:mm', - LTS : 'a h:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY MMMM D', - LLL : 'YYYY MMMM D, a h:mm', - LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' - }, - calendar : { - sameDay : '[අද] LT[ට]', - nextDay : '[හෙට] LT[ට]', - nextWeek : 'dddd LT[ට]', - lastDay : '[ඊයේ] LT[ට]', - lastWeek : '[පසුගිය] dddd LT[ට]', - sameElse : 'L' - }, - relativeTime : { - future : '%sකින්', - past : '%sකට පෙර', - s : 'තත්පර කිහිපය', - m : 'මිනිත්තුව', - mm : 'මිනිත්තු %d', - h : 'පැය', - hh : 'පැය %d', - d : 'දිනය', - dd : 'දින %d', - M : 'මාසය', - MM : 'මාස %d', - y : 'වසර', - yy : 'වසර %d' - }, - ordinalParse: /\d{1,2} වැනි/, - ordinal : function (number) { - return number + ' වැනි'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'ප.ව.' : 'පස් වරු'; - } else { - return isLower ? 'පෙ.ව.' : 'පෙර වරු'; - } - } -}); diff --git a/elgg_clean/bower_components/moment/src/locale/sk.js b/elgg_clean/bower_components/moment/src/locale/sk.js deleted file mode 100644 index 079725c5..00000000 --- a/elgg_clean/bower_components/moment/src/locale/sk.js +++ /dev/null @@ -1,149 +0,0 @@ -//! moment.js locale configuration -//! locale : slovak (sk) -//! author : Martin Minka : https://github.com/k2s -//! based on work of petrbela : https://github.com/petrbela - -import moment from '../moment'; - -var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), - monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); -function plural(n) { - return (n > 1) && (n < 5); -} -function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } - break; - } -} - -export default moment.defineLocale('sk', { - months : months, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), - weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), - weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), - weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[dnes o] LT', - nextDay: '[zajtra o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo štvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; - } - }, - lastDay: '[včera o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pred %s', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/sl.js b/elgg_clean/bower_components/moment/src/locale/sl.js deleted file mode 100644 index 0cb6701e..00000000 --- a/elgg_clean/bower_components/moment/src/locale/sl.js +++ /dev/null @@ -1,150 +0,0 @@ -//! moment.js locale configuration -//! locale : slovenian (sl) -//! author : Robert Sedovšek : https://github.com/sedovsek - -import moment from '../moment'; - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += withoutSuffix ? 'minuta' : 'minuto'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'minute' : 'minutami'; - } else { - result += withoutSuffix || isFuture ? 'minut' : 'minutami'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += withoutSuffix ? 'ura' : 'uro'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'uri' : 'urama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'ure' : 'urami'; - } else { - result += withoutSuffix || isFuture ? 'ur' : 'urami'; - } - return result; - case 'd': - return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; - case 'dd': - if (number === 1) { - result += withoutSuffix || isFuture ? 'dan' : 'dnem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; - } else { - result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; - } - return result; - case 'M': - return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; - case 'MM': - if (number === 1) { - result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; - } else { - result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; - } - return result; - case 'y': - return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; - case 'yy': - if (number === 1) { - result += withoutSuffix || isFuture ? 'leto' : 'letom'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'leti' : 'letoma'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'leta' : 'leti'; - } else { - result += withoutSuffix || isFuture ? 'let' : 'leti'; - } - return result; - } -} - -export default moment.defineLocale('sl', { - months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), - weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), - weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), - weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD. MM. YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', - - nextWeek : function () { - switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - return '[prejšnjo] [nedeljo] [ob] LT'; - case 3: - return '[prejšnjo] [sredo] [ob] LT'; - case 6: - return '[prejšnjo] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'čez %s', - past : 'pred %s', - s : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/elgg_clean/bower_components/moment/src/locale/sq.js b/elgg_clean/bower_components/moment/src/locale/sq.js deleted file mode 100644 index d8a9c023..00000000 --- a/elgg_clean/bower_components/moment/src/locale/sq.js +++ /dev/null @@ -1,60 +0,0 @@ -//! moment.js locale configuration -//! locale : Albanian (sq) -//! author : Flakërim Ismani : https://github.com/flakerimi -//! author: Menelion Elensúle: https://github.com/Oire (tests) -//! author : Oerd Cukalla : https://github.com/oerd (fixes) - -import moment from '../moment'; - -export default moment.defineLocale('sq', { - months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), - monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), - weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), - weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), - weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), - meridiemParse: /PD|MD/, - isPM: function (input) { - return input.charAt(0) === 'M'; - }, - meridiem : function (hours, minutes, isLower) { - return hours < 12 ? 'PD' : 'MD'; - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Sot në] LT', - nextDay : '[Nesër në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'në %s', - past : '%s më parë', - s : 'disa sekonda', - m : 'një minutë', - mm : '%d minuta', - h : 'një orë', - hh : '%d orë', - d : 'një ditë', - dd : '%d ditë', - M : 'një muaj', - MM : '%d muaj', - y : 'një vit', - yy : '%d vite' - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/sr-cyrl.js b/elgg_clean/bower_components/moment/src/locale/sr-cyrl.js deleted file mode 100644 index 2ce8eeae..00000000 --- a/elgg_clean/bower_components/moment/src/locale/sr-cyrl.js +++ /dev/null @@ -1,99 +0,0 @@ -//! moment.js locale configuration -//! locale : Serbian-cyrillic (sr-cyrl) -//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j - -import moment from '../moment'; - -var translator = { - words: { //Different grammatical cases - m: ['један минут', 'једне минуте'], - mm: ['минут', 'минуте', 'минута'], - h: ['један сат', 'једног сата'], - hh: ['сат', 'сата', 'сати'], - dd: ['дан', 'дана', 'дана'], - MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } - } -}; - -export default moment.defineLocale('sr-cyrl', { - months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'], - monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'], - weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'], - weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[данас у] LT', - nextDay: '[сутра у] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; - } - }, - lastDay : '[јуче у] LT', - lastWeek : function () { - var lastWeekDays = [ - '[прошле] [недеље] [у] LT', - '[прошлог] [понедељка] [у] LT', - '[прошлог] [уторка] [у] LT', - '[прошле] [среде] [у] LT', - '[прошлог] [четвртка] [у] LT', - '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'за %s', - past : 'пре %s', - s : 'неколико секунди', - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'дан', - dd : translator.translate, - M : 'месец', - MM : translator.translate, - y : 'годину', - yy : translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/sr.js b/elgg_clean/bower_components/moment/src/locale/sr.js deleted file mode 100644 index 233e4677..00000000 --- a/elgg_clean/bower_components/moment/src/locale/sr.js +++ /dev/null @@ -1,99 +0,0 @@ -//! moment.js locale configuration -//! locale : Serbian-latin (sr) -//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j - -import moment from '../moment'; - -var translator = { - words: { //Different grammatical cases - m: ['jedan minut', 'jedne minute'], - mm: ['minut', 'minute', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } - } -}; - -export default moment.defineLocale('sr', { - months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], - monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], - weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedelje] [u] LT', - '[prošlog] [ponedeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pre %s', - s : 'nekoliko sekundi', - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'dan', - dd : translator.translate, - M : 'mesec', - MM : translator.translate, - y : 'godinu', - yy : translator.translate - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/sv.js b/elgg_clean/bower_components/moment/src/locale/sv.js deleted file mode 100644 index 1e841f60..00000000 --- a/elgg_clean/bower_components/moment/src/locale/sv.js +++ /dev/null @@ -1,58 +0,0 @@ -//! moment.js locale configuration -//! locale : swedish (sv) -//! author : Jens Alm : https://github.com/ulmus - -import moment from '../moment'; - -export default moment.defineLocale('sv', { - months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), - weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), - weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Idag] LT', - nextDay: '[Imorgon] LT', - lastDay: '[Igår] LT', - nextWeek: '[På] dddd LT', - lastWeek: '[I] dddd[s] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'för %s sedan', - s : 'några sekunder', - m : 'en minut', - mm : '%d minuter', - h : 'en timme', - hh : '%d timmar', - d : 'en dag', - dd : '%d dagar', - M : 'en månad', - MM : '%d månader', - y : 'ett år', - yy : '%d år' - }, - ordinalParse: /\d{1,2}(e|a)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/ta.js b/elgg_clean/bower_components/moment/src/locale/ta.js deleted file mode 100644 index 6879be48..00000000 --- a/elgg_clean/bower_components/moment/src/locale/ta.js +++ /dev/null @@ -1,86 +0,0 @@ -//! moment.js locale configuration -//! locale : tamil (ta) -//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 - -import moment from '../moment'; - -export default moment.defineLocale('ta', { - months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), - weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), - weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, HH:mm', - LLLL : 'dddd, D MMMM YYYY, HH:mm' - }, - calendar : { - sameDay : '[இன்று] LT', - nextDay : '[நாளை] LT', - nextWeek : 'dddd, LT', - lastDay : '[நேற்று] LT', - lastWeek : '[கடந்த வாரம்] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s இல்', - past : '%s முன்', - s : 'ஒரு சில விநாடிகள்', - m : 'ஒரு நிமிடம்', - mm : '%d நிமிடங்கள்', - h : 'ஒரு மணி நேரம்', - hh : '%d மணி நேரம்', - d : 'ஒரு நாள்', - dd : '%d நாட்கள்', - M : 'ஒரு மாதம்', - MM : '%d மாதங்கள்', - y : 'ஒரு வருடம்', - yy : '%d ஆண்டுகள்' - }, - ordinalParse: /\d{1,2}வது/, - ordinal : function (number) { - return number + 'வது'; - }, - // refer http://ta.wikipedia.org/s/1er1 - meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, - meridiem : function (hour, minute, isLower) { - if (hour < 2) { - return ' யாமம்'; - } else if (hour < 6) { - return ' வைகறை'; // வைகறை - } else if (hour < 10) { - return ' காலை'; // காலை - } else if (hour < 14) { - return ' நண்பகல்'; // நண்பகல் - } else if (hour < 18) { - return ' எற்பாடு'; // எற்பாடு - } else if (hour < 22) { - return ' மாலை'; // மாலை - } else { - return ' யாமம்'; - } - }, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'யாமம்') { - return hour < 2 ? hour : hour + 12; - } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { - return hour; - } else if (meridiem === 'நண்பகல்') { - return hour >= 10 ? hour : hour + 12; - } else { - return hour + 12; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/th.js b/elgg_clean/bower_components/moment/src/locale/th.js deleted file mode 100644 index 265680c9..00000000 --- a/elgg_clean/bower_components/moment/src/locale/th.js +++ /dev/null @@ -1,56 +0,0 @@ -//! moment.js locale configuration -//! locale : thai (th) -//! author : Kridsada Thanabulpong : https://github.com/sirn - -import moment from '../moment'; - -export default moment.defineLocale('th', { - months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), - monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'), - weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), - weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference - weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), - longDateFormat : { - LT : 'H นาฬิกา m นาที', - LTS : 'H นาฬิกา m นาที s วินาที', - L : 'YYYY/MM/DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY เวลา H นาฬิกา m นาที', - LLLL : 'วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที' - }, - meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, - isPM: function (input) { - return input === 'หลังเที่ยง'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ก่อนเที่ยง'; - } else { - return 'หลังเที่ยง'; - } - }, - calendar : { - sameDay : '[วันนี้ เวลา] LT', - nextDay : '[พรุ่งนี้ เวลา] LT', - nextWeek : 'dddd[หน้า เวลา] LT', - lastDay : '[เมื่อวานนี้ เวลา] LT', - lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'อีก %s', - past : '%sที่แล้ว', - s : 'ไม่กี่วินาที', - m : '1 นาที', - mm : '%d นาที', - h : '1 ชั่วโมง', - hh : '%d ชั่วโมง', - d : '1 วัน', - dd : '%d วัน', - M : '1 เดือน', - MM : '%d เดือน', - y : '1 ปี', - yy : '%d ปี' - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/tl-ph.js b/elgg_clean/bower_components/moment/src/locale/tl-ph.js deleted file mode 100644 index 1cd4842c..00000000 --- a/elgg_clean/bower_components/moment/src/locale/tl-ph.js +++ /dev/null @@ -1,53 +0,0 @@ -//! moment.js locale configuration -//! locale : Tagalog/Filipino (tl-ph) -//! author : Dan Hagman - -import moment from '../moment'; - -export default moment.defineLocale('tl-ph', { - months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), - monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), - weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'MM/D/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY HH:mm', - LLLL : 'dddd, MMMM DD, YYYY HH:mm' - }, - calendar : { - sameDay: '[Ngayon sa] LT', - nextDay: '[Bukas sa] LT', - nextWeek: 'dddd [sa] LT', - lastDay: '[Kahapon sa] LT', - lastWeek: 'dddd [huling linggo] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'sa loob ng %s', - past : '%s ang nakalipas', - s : 'ilang segundo', - m : 'isang minuto', - mm : '%d minuto', - h : 'isang oras', - hh : '%d oras', - d : 'isang araw', - dd : '%d araw', - M : 'isang buwan', - MM : '%d buwan', - y : 'isang taon', - yy : '%d taon' - }, - ordinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/tr.js b/elgg_clean/bower_components/moment/src/locale/tr.js deleted file mode 100644 index e908bc03..00000000 --- a/elgg_clean/bower_components/moment/src/locale/tr.js +++ /dev/null @@ -1,81 +0,0 @@ -//! moment.js locale configuration -//! locale : turkish (tr) -//! authors : Erhan Gundogan : https://github.com/erhangundogan, -//! Burak Yiğit Kaya: https://github.com/BYK - -import moment from '../moment'; - -var suffixes = { - 1: '\'inci', - 5: '\'inci', - 8: '\'inci', - 70: '\'inci', - 80: '\'inci', - 2: '\'nci', - 7: '\'nci', - 20: '\'nci', - 50: '\'nci', - 3: '\'üncü', - 4: '\'üncü', - 100: '\'üncü', - 6: '\'ncı', - 9: '\'uncu', - 10: '\'uncu', - 30: '\'uncu', - 60: '\'ıncı', - 90: '\'ıncı' -}; - -export default moment.defineLocale('tr', { - months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), - monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), - weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), - weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), - weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[haftaya] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen hafta] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s önce', - s : 'birkaç saniye', - m : 'bir dakika', - mm : '%d dakika', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir yıl', - yy : '%d yıl' - }, - ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + '\'ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/tzl.js b/elgg_clean/bower_components/moment/src/locale/tzl.js deleted file mode 100644 index cae85342..00000000 --- a/elgg_clean/bower_components/moment/src/locale/tzl.js +++ /dev/null @@ -1,78 +0,0 @@ -//! moment.js locale configuration -//! locale : talossan (tzl) -//! author : Robin van der Vliet : https://github.com/robin0van0der0v with the help of Iustì Canun - - -import moment from '../moment'; - -// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. -// This is currently too difficult (maybe even impossible) to add. -export default moment.defineLocale('tzl', { - months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), - monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), - weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), - weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), - weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'LT.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM [dallas] YYYY', - LLL : 'D. MMMM [dallas] YYYY LT', - LLLL : 'dddd, [li] D. MMMM [dallas] YYYY LT' - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'd\'o' : 'D\'O'; - } else { - return isLower ? 'd\'a' : 'D\'A'; - } - }, - calendar : { - sameDay : '[oxhi à] LT', - nextDay : '[demà à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[ieiri à] LT', - lastWeek : '[sür el] dddd [lasteu à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'osprei %s', - past : 'ja%s', - s : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's': ['viensas secunds', '\'iensas secunds'], - 'm': ['\'n míut', '\'iens míut'], - 'mm': [number + ' míuts', ' ' + number + ' míuts'], - 'h': ['\'n þora', '\'iensa þora'], - 'hh': [number + ' þoras', ' ' + number + ' þoras'], - 'd': ['\'n ziua', '\'iensa ziua'], - 'dd': [number + ' ziuas', ' ' + number + ' ziuas'], - 'M': ['\'n mes', '\'iens mes'], - 'MM': [number + ' mesen', ' ' + number + ' mesen'], - 'y': ['\'n ar', '\'iens ar'], - 'yy': [number + ' ars', ' ' + number + ' ars'] - }; - return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1].trim()); -} - diff --git a/elgg_clean/bower_components/moment/src/locale/tzm-latn.js b/elgg_clean/bower_components/moment/src/locale/tzm-latn.js deleted file mode 100644 index e2631d97..00000000 --- a/elgg_clean/bower_components/moment/src/locale/tzm-latn.js +++ /dev/null @@ -1,49 +0,0 @@ -//! moment.js locale configuration -//! locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn) -//! author : Abdel Said : https://github.com/abdelsaid - -import moment from '../moment'; - -export default moment.defineLocale('tzm-latn', { - months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[asdkh g] LT', - nextDay: '[aska g] LT', - nextWeek: 'dddd [g] LT', - lastDay: '[assant g] LT', - lastWeek: 'dddd [g] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dadkh s yan %s', - past : 'yan %s', - s : 'imik', - m : 'minuḍ', - mm : '%d minuḍ', - h : 'saɛa', - hh : '%d tassaɛin', - d : 'ass', - dd : '%d ossan', - M : 'ayowr', - MM : '%d iyyirn', - y : 'asgas', - yy : '%d isgasn' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/tzm.js b/elgg_clean/bower_components/moment/src/locale/tzm.js deleted file mode 100644 index a06a27d9..00000000 --- a/elgg_clean/bower_components/moment/src/locale/tzm.js +++ /dev/null @@ -1,49 +0,0 @@ -//! moment.js locale configuration -//! locale : Morocco Central Atlas Tamaziɣt (tzm) -//! author : Abdel Said : https://github.com/abdelsaid - -import moment from '../moment'; - -export default moment.defineLocale('tzm', { - months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', - nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', - nextWeek: 'dddd [ⴴ] LT', - lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', - lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', - past : 'ⵢⴰⵏ %s', - s : 'ⵉⵎⵉⴽ', - m : 'ⵎⵉⵏⵓⴺ', - mm : '%d ⵎⵉⵏⵓⴺ', - h : 'ⵙⴰⵄⴰ', - hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', - d : 'ⴰⵙⵙ', - dd : '%d oⵙⵙⴰⵏ', - M : 'ⴰⵢoⵓⵔ', - MM : '%d ⵉⵢⵢⵉⵔⵏ', - y : 'ⴰⵙⴳⴰⵙ', - yy : '%d ⵉⵙⴳⴰⵙⵏ' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/uk.js b/elgg_clean/bower_components/moment/src/locale/uk.js deleted file mode 100644 index fe1f7d2a..00000000 --- a/elgg_clean/bower_components/moment/src/locale/uk.js +++ /dev/null @@ -1,144 +0,0 @@ -//! moment.js locale configuration -//! locale : ukrainian (uk) -//! author : zemlanin : https://github.com/zemlanin -//! Author : Menelion Elensúle : https://github.com/Oire - -import moment from '../moment'; - -function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); -} -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'хвилина_хвилини_хвилин', - 'hh': 'година_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' - }; - if (key === 'm') { - return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { - return withoutSuffix ? 'година' : 'годину'; - } - else { - return number + ' ' + plural(format[key], +number); - } -} -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), - 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') - }, - nounCase = (/D[oD]? *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; -} -function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }, - nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); - return weekdays[nounCase][m.day()]; -} -function processHoursFunction(str) { - return function () { - return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; - }; -} - -export default moment.defineLocale('uk', { - months : monthsCaseReplace, - monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), - weekdays : weekdaysCaseReplace, - weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY р.', - LLL : 'D MMMM YYYY р., HH:mm', - LLLL : 'dddd, D MMMM YYYY р., HH:mm' - }, - calendar : { - sameDay: processHoursFunction('[Сьогодні '), - nextDay: processHoursFunction('[Завтра '), - lastDay: processHoursFunction('[Вчора '), - nextWeek: processHoursFunction('[У] dddd ['), - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'за %s', - past : '%s тому', - s : 'декілька секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : 'годину', - hh : relativeTimeWithPlural, - d : 'день', - dd : relativeTimeWithPlural, - M : 'місяць', - MM : relativeTimeWithPlural, - y : 'рік', - yy : relativeTimeWithPlural - }, - // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason - meridiemParse: /ночі|ранку|дня|вечора/, - isPM: function (input) { - return /^(дня|вечора)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночі'; - } else if (hour < 12) { - return 'ранку'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечора'; - } - }, - ordinalParse: /\d{1,2}-(й|го)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/uz.js b/elgg_clean/bower_components/moment/src/locale/uz.js deleted file mode 100644 index 646b5e61..00000000 --- a/elgg_clean/bower_components/moment/src/locale/uz.js +++ /dev/null @@ -1,49 +0,0 @@ -//! moment.js locale configuration -//! locale : uzbek (uz) -//! author : Sardor Muminov : https://github.com/muminoff - -import moment from '../moment'; - -export default moment.defineLocale('uz', { - months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), - weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), - weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - calendar : { - sameDay : '[Бугун соат] LT [да]', - nextDay : '[Эртага] LT [да]', - nextWeek : 'dddd [куни соат] LT [да]', - lastDay : '[Кеча соат] LT [да]', - lastWeek : '[Утган] dddd [куни соат] LT [да]', - sameElse : 'L' - }, - relativeTime : { - future : 'Якин %s ичида', - past : 'Бир неча %s олдин', - s : 'фурсат', - m : 'бир дакика', - mm : '%d дакика', - h : 'бир соат', - hh : '%d соат', - d : 'бир кун', - dd : '%d кун', - M : 'бир ой', - MM : '%d ой', - y : 'бир йил', - yy : '%d йил' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/vi.js b/elgg_clean/bower_components/moment/src/locale/vi.js deleted file mode 100644 index 0fafda76..00000000 --- a/elgg_clean/bower_components/moment/src/locale/vi.js +++ /dev/null @@ -1,57 +0,0 @@ -//! moment.js locale configuration -//! locale : vietnamese (vi) -//! author : Bang Nguyen : https://github.com/bangnk - -import moment from '../moment'; - -export default moment.defineLocale('vi', { - months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), - monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), - weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), - weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [năm] YYYY', - LLL : 'D MMMM [năm] YYYY HH:mm', - LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', - l : 'DD/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Hôm nay lúc] LT', - nextDay: '[Ngày mai lúc] LT', - nextWeek: 'dddd [tuần tới lúc] LT', - lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần rồi lúc] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s tới', - past : '%s trước', - s : 'vài giây', - m : 'một phút', - mm : '%d phút', - h : 'một giờ', - hh : '%d giờ', - d : 'một ngày', - dd : '%d ngày', - M : 'một tháng', - MM : '%d tháng', - y : 'một năm', - yy : '%d năm' - }, - ordinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/zh-cn.js b/elgg_clean/bower_components/moment/src/locale/zh-cn.js deleted file mode 100644 index 790ea8bc..00000000 --- a/elgg_clean/bower_components/moment/src/locale/zh-cn.js +++ /dev/null @@ -1,118 +0,0 @@ -//! moment.js locale configuration -//! locale : chinese (zh-cn) -//! author : suupic : https://github.com/suupic -//! author : Zeno Zeng : https://github.com/zenozeng - -import moment from '../moment'; - -export default moment.defineLocale('zh-cn', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'Ah点mm分', - LTS : 'Ah点m分s秒', - L : 'YYYY-MM-DD', - LL : 'YYYY年MMMD日', - LLL : 'YYYY年MMMD日Ah点mm分', - LLLL : 'YYYY年MMMD日ddddAh点mm分', - l : 'YYYY-MM-DD', - ll : 'YYYY年MMMD日', - lll : 'YYYY年MMMD日Ah点mm分', - llll : 'YYYY年MMMD日ddddAh点mm分' - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || - meridiem === '上午') { - return hour; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } else { - // '中午' - return hour >= 11 ? hour : hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : function () { - return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT'; - }, - nextDay : function () { - return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT'; - }, - lastDay : function () { - return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT'; - }, - nextWeek : function () { - var startOfWeek, prefix; - startOfWeek = moment().startOf('week'); - prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; - return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; - }, - lastWeek : function () { - var startOfWeek, prefix; - startOfWeek = moment().startOf('week'); - prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; - return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; - }, - sameElse : 'LL' - }, - ordinalParse: /\d{1,2}(日|月|周)/, - ordinal : function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '周'; - default: - return number; - } - }, - relativeTime : { - future : '%s内', - past : '%s前', - s : '几秒', - m : '1 分钟', - mm : '%d 分钟', - h : '1 小时', - hh : '%d 小时', - d : '1 天', - dd : '%d 天', - M : '1 个月', - MM : '%d 个月', - y : '1 年', - yy : '%d 年' - }, - week : { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - diff --git a/elgg_clean/bower_components/moment/src/locale/zh-tw.js b/elgg_clean/bower_components/moment/src/locale/zh-tw.js deleted file mode 100644 index 4ff48f84..00000000 --- a/elgg_clean/bower_components/moment/src/locale/zh-tw.js +++ /dev/null @@ -1,91 +0,0 @@ -//! moment.js locale configuration -//! locale : traditional chinese (zh-tw) -//! author : Ben : https://github.com/ben-lin - -import moment from '../moment'; - -export default moment.defineLocale('zh-tw', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'Ah點mm分', - LTS : 'Ah點m分s秒', - L : 'YYYY年MMMD日', - LL : 'YYYY年MMMD日', - LLL : 'YYYY年MMMD日Ah點mm分', - LLLL : 'YYYY年MMMD日ddddAh點mm分', - l : 'YYYY年MMMD日', - ll : 'YYYY年MMMD日', - lll : 'YYYY年MMMD日Ah點mm分', - llll : 'YYYY年MMMD日ddddAh點mm分' - }, - meridiemParse: /早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - ordinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { - switch (period) { - case 'd' : - case 'D' : - case 'DDD' : - return number + '日'; - case 'M' : - return number + '月'; - case 'w' : - case 'W' : - return number + '週'; - default : - return number; - } - }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - m : '一分鐘', - mm : '%d分鐘', - h : '一小時', - hh : '%d小時', - d : '一天', - dd : '%d天', - M : '一個月', - MM : '%d個月', - y : '一年', - yy : '%d年' - } -}); diff --git a/elgg_clean/bower_components/moment/src/moment.js b/elgg_clean/bower_components/moment/src/moment.js deleted file mode 100644 index 15fe0e6a..00000000 --- a/elgg_clean/bower_components/moment/src/moment.js +++ /dev/null @@ -1,68 +0,0 @@ -//! moment.js -//! version : 2.10.6 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com - -import { hooks as moment, setHookCallback } from './lib/utils/hooks'; - -moment.version = '2.10.6'; - -import { - min, - max, - isMoment, - momentPrototype as fn, - createUTC as utc, - createUnix as unix, - createLocal as local, - createInvalid as invalid, - createInZone as parseZone -} from './lib/moment/moment'; - -import { - defineLocale, - getSetGlobalLocale as locale, - getLocale as localeData, - listMonths as months, - listMonthsShort as monthsShort, - listWeekdays as weekdays, - listWeekdaysMin as weekdaysMin, - listWeekdaysShort as weekdaysShort -} from './lib/locale/locale'; - -import { - isDuration, - createDuration as duration, - getSetRelativeTimeThreshold as relativeTimeThreshold -} from './lib/duration/duration'; - -import { normalizeUnits } from './lib/units/units'; - -import isDate from './lib/utils/is-date'; - -setHookCallback(local); - -moment.fn = fn; -moment.min = min; -moment.max = max; -moment.utc = utc; -moment.unix = unix; -moment.months = months; -moment.isDate = isDate; -moment.locale = locale; -moment.invalid = invalid; -moment.duration = duration; -moment.isMoment = isMoment; -moment.weekdays = weekdays; -moment.parseZone = parseZone; -moment.localeData = localeData; -moment.isDuration = isDuration; -moment.monthsShort = monthsShort; -moment.weekdaysMin = weekdaysMin; -moment.defineLocale = defineLocale; -moment.weekdaysShort = weekdaysShort; -moment.normalizeUnits = normalizeUnits; -moment.relativeTimeThreshold = relativeTimeThreshold; - -export default moment; diff --git a/elgg_clean/bower_components/moment/templates/amd-named.js b/elgg_clean/bower_components/moment/templates/amd-named.js deleted file mode 100644 index 76104564..00000000 --- a/elgg_clean/bower_components/moment/templates/amd-named.js +++ /dev/null @@ -1,7 +0,0 @@ -/*global define:false*/ - -import moment from "./moment"; - -define("moment", [], function () { - return moment; -}); diff --git a/elgg_clean/bower_components/moment/templates/amd.js b/elgg_clean/bower_components/moment/templates/amd.js deleted file mode 100644 index 847bcefa..00000000 --- a/elgg_clean/bower_components/moment/templates/amd.js +++ /dev/null @@ -1,7 +0,0 @@ -/*global define:false*/ - -import moment from "./moment"; - -define([], function () { - return moment; -}); diff --git a/elgg_clean/bower_components/moment/templates/globals.js b/elgg_clean/bower_components/moment/templates/globals.js deleted file mode 100644 index 5ac160f1..00000000 --- a/elgg_clean/bower_components/moment/templates/globals.js +++ /dev/null @@ -1,5 +0,0 @@ -/*global window:false*/ - -import moment from "./moment"; - -window.moment = moment; diff --git a/elgg_clean/bower_components/moment/templates/locale-header.js b/elgg_clean/bower_components/moment/templates/locale-header.js deleted file mode 100644 index f304506e..00000000 --- a/elgg_clean/bower_components/moment/templates/locale-header.js +++ /dev/null @@ -1,5 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : - typeof define === 'function' && define.amd ? define(['moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; diff --git a/elgg_clean/bower_components/moment/templates/test-header.js b/elgg_clean/bower_components/moment/templates/test-header.js deleted file mode 100644 index 38940c3e..00000000 --- a/elgg_clean/bower_components/moment/templates/test-header.js +++ /dev/null @@ -1,5 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : - typeof define === 'function' && define.amd ? define(['../../moment'], factory) : - factory(global.moment) -}(this, function (moment) { 'use strict'; diff --git a/elgg_clean/bower_components/requirejs/.bower.json b/elgg_clean/bower_components/requirejs/.bower.json deleted file mode 100644 index 0cb649f5..00000000 --- a/elgg_clean/bower_components/requirejs/.bower.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "requirejs", - "version": "2.1.20", - "ignore": [], - "homepage": "http://requirejs.org", - "authors": [ - "jrburke.com" - ], - "description": "A file and module loader for JavaScript", - "main": "require.js", - "keywords": [ - "AMD" - ], - "license": [ - "BSD-3-Clause", - "MIT" - ], - "_release": "2.1.20", - "_resolution": { - "type": "version", - "tag": "2.1.20", - "commit": "ad0230c737a1289c3ffe3d76ce0f86366955239a" - }, - "_source": "git://github.com/jrburke/requirejs-bower.git", - "_target": "2.x", - "_originalSource": "requirejs" -} \ No newline at end of file diff --git a/elgg_clean/bower_components/requirejs/README.md b/elgg_clean/bower_components/requirejs/README.md deleted file mode 100644 index 1fe6a9c1..00000000 --- a/elgg_clean/bower_components/requirejs/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# requirejs-bower - -Bower packaging for [RequireJS](http://requirejs.org). - diff --git a/elgg_clean/bower_components/requirejs/bower.json b/elgg_clean/bower_components/requirejs/bower.json deleted file mode 100644 index b267ad5c..00000000 --- a/elgg_clean/bower_components/requirejs/bower.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "requirejs", - "version": "2.1.20", - "ignore": [], - "homepage": "http://requirejs.org", - "authors": [ - "jrburke.com" - ], - "description": "A file and module loader for JavaScript", - "main": "require.js", - "keywords": [ - "AMD" - ], - "license": [ - "BSD-3-Clause", - "MIT" - ] -} diff --git a/elgg_clean/bower_components/requirejs/require.js b/elgg_clean/bower_components/requirejs/require.js deleted file mode 100644 index 52376404..00000000 --- a/elgg_clean/bower_components/requirejs/require.js +++ /dev/null @@ -1,2103 +0,0 @@ -/** vim: et:ts=4:sw=4:sts=4 - * @license RequireJS 2.1.20 Copyright (c) 2010-2015, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -//Not using strict: uneven strict support in browsers, #392, and causes -//problems with requirejs.exec()/transpiler plugins that may not be strict. -/*jslint regexp: true, nomen: true, sloppy: true */ -/*global window, navigator, document, importScripts, setTimeout, opera */ - -var requirejs, require, define; -(function (global) { - var req, s, head, baseElement, dataMain, src, - interactiveScript, currentlyAddingScript, mainScript, subPath, - version = '2.1.20', - commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, - cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, - jsSuffixRegExp = /\.js$/, - currDirRegExp = /^\.\//, - op = Object.prototype, - ostring = op.toString, - hasOwn = op.hasOwnProperty, - ap = Array.prototype, - isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document), - isWebWorker = !isBrowser && typeof importScripts !== 'undefined', - //PS3 indicates loaded and complete, but need to wait for complete - //specifically. Sequence is 'loading', 'loaded', execution, - // then 'complete'. The UA check is unfortunate, but not sure how - //to feature test w/o causing perf issues. - readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? - /^complete$/ : /^(complete|loaded)$/, - defContextName = '_', - //Oh the tragedy, detecting opera. See the usage of isOpera for reason. - isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]', - contexts = {}, - cfg = {}, - globalDefQueue = [], - useInteractive = false; - - function isFunction(it) { - return ostring.call(it) === '[object Function]'; - } - - function isArray(it) { - return ostring.call(it) === '[object Array]'; - } - - /** - * Helper function for iterating over an array. If the func returns - * a true value, it will break out of the loop. - */ - function each(ary, func) { - if (ary) { - var i; - for (i = 0; i < ary.length; i += 1) { - if (ary[i] && func(ary[i], i, ary)) { - break; - } - } - } - } - - /** - * Helper function for iterating over an array backwards. If the func - * returns a true value, it will break out of the loop. - */ - function eachReverse(ary, func) { - if (ary) { - var i; - for (i = ary.length - 1; i > -1; i -= 1) { - if (ary[i] && func(ary[i], i, ary)) { - break; - } - } - } - } - - function hasProp(obj, prop) { - return hasOwn.call(obj, prop); - } - - function getOwn(obj, prop) { - return hasProp(obj, prop) && obj[prop]; - } - - /** - * Cycles over properties in an object and calls a function for each - * property value. If the function returns a truthy value, then the - * iteration is stopped. - */ - function eachProp(obj, func) { - var prop; - for (prop in obj) { - if (hasProp(obj, prop)) { - if (func(obj[prop], prop)) { - break; - } - } - } - } - - /** - * Simple function to mix in properties from source into target, - * but only if target does not already have a property of the same name. - */ - function mixin(target, source, force, deepStringMixin) { - if (source) { - eachProp(source, function (value, prop) { - if (force || !hasProp(target, prop)) { - if (deepStringMixin && typeof value === 'object' && value && - !isArray(value) && !isFunction(value) && - !(value instanceof RegExp)) { - - if (!target[prop]) { - target[prop] = {}; - } - mixin(target[prop], value, force, deepStringMixin); - } else { - target[prop] = value; - } - } - }); - } - return target; - } - - //Similar to Function.prototype.bind, but the 'this' object is specified - //first, since it is easier to read/figure out what 'this' will be. - function bind(obj, fn) { - return function () { - return fn.apply(obj, arguments); - }; - } - - function scripts() { - return document.getElementsByTagName('script'); - } - - function defaultOnError(err) { - throw err; - } - - //Allow getting a global that is expressed in - //dot notation, like 'a.b.c'. - function getGlobal(value) { - if (!value) { - return value; - } - var g = global; - each(value.split('.'), function (part) { - g = g[part]; - }); - return g; - } - - /** - * Constructs an error with a pointer to an URL with more information. - * @param {String} id the error ID that maps to an ID on a web page. - * @param {String} message human readable error. - * @param {Error} [err] the original error, if there is one. - * - * @returns {Error} - */ - function makeError(id, msg, err, requireModules) { - var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + id); - e.requireType = id; - e.requireModules = requireModules; - if (err) { - e.originalError = err; - } - return e; - } - - if (typeof define !== 'undefined') { - //If a define is already in play via another AMD loader, - //do not overwrite. - return; - } - - if (typeof requirejs !== 'undefined') { - if (isFunction(requirejs)) { - //Do not overwrite an existing requirejs instance. - return; - } - cfg = requirejs; - requirejs = undefined; - } - - //Allow for a require config object - if (typeof require !== 'undefined' && !isFunction(require)) { - //assume it is a config object. - cfg = require; - require = undefined; - } - - function newContext(contextName) { - var inCheckLoaded, Module, context, handlers, - checkLoadedTimeoutId, - config = { - //Defaults. Do not set a default for map - //config to speed up normalize(), which - //will run faster if there is no default. - waitSeconds: 7, - baseUrl: './', - paths: {}, - bundles: {}, - pkgs: {}, - shim: {}, - config: {} - }, - registry = {}, - //registry of just enabled modules, to speed - //cycle breaking code when lots of modules - //are registered, but not activated. - enabledRegistry = {}, - undefEvents = {}, - defQueue = [], - defined = {}, - urlFetched = {}, - bundlesMap = {}, - requireCounter = 1, - unnormalizedCounter = 1; - - /** - * Trims the . and .. from an array of path segments. - * It will keep a leading path segment if a .. will become - * the first path segment, to help with module name lookups, - * which act like paths, but can be remapped. But the end result, - * all paths that use this function should look normalized. - * NOTE: this method MODIFIES the input array. - * @param {Array} ary the array of path segments. - */ - function trimDots(ary) { - var i, part; - for (i = 0; i < ary.length; i++) { - part = ary[i]; - if (part === '.') { - ary.splice(i, 1); - i -= 1; - } else if (part === '..') { - // If at the start, or previous value is still .., - // keep them so that when converted to a path it may - // still work when converted to a path, even though - // as an ID it is less than ideal. In larger point - // releases, may be better to just kick out an error. - if (i === 0 || (i === 1 && ary[2] === '..') || ary[i - 1] === '..') { - continue; - } else if (i > 0) { - ary.splice(i - 1, 2); - i -= 2; - } - } - } - } - - /** - * 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. - * @param {Boolean} applyMap apply the map config to the value. Should - * only be done if this normalization is for a dependency ID. - * @returns {String} normalized name - */ - function normalize(name, baseName, applyMap) { - var pkgMain, mapValue, nameParts, i, j, nameSegment, lastIndex, - foundMap, foundI, foundStarMap, starI, normalizedBaseParts, - baseParts = (baseName && baseName.split('/')), - map = config.map, - starMap = map && map['*']; - - //Adjust any relative paths. - if (name) { - name = name.split('/'); - lastIndex = name.length - 1; - - // If wanting node ID compatibility, strip .js from end - // of IDs. Have to do this here, and not in nameToUrl - // because node allows either .js or non .js to map - // to same file. - if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { - name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); - } - - // Starts with a '.' so need the baseName - if (name[0].charAt(0) === '.' && baseParts) { - //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. - normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); - name = normalizedBaseParts.concat(name); - } - - trimDots(name); - name = name.join('/'); - } - - //Apply map config if available. - if (applyMap && map && (baseParts || starMap)) { - nameParts = name.split('/'); - - outerLoop: 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 = getOwn(map, baseParts.slice(0, j).join('/')); - - //baseName segment has config, find if it has one for - //this name. - if (mapValue) { - mapValue = getOwn(mapValue, nameSegment); - if (mapValue) { - //Match, update name to the new value. - foundMap = mapValue; - foundI = i; - break outerLoop; - } - } - } - } - - //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 && getOwn(starMap, nameSegment)) { - foundStarMap = getOwn(starMap, nameSegment); - starI = i; - } - } - - if (!foundMap && foundStarMap) { - foundMap = foundStarMap; - foundI = starI; - } - - if (foundMap) { - nameParts.splice(0, foundI, foundMap); - name = nameParts.join('/'); - } - } - - // If the name points to a package's name, use - // the package main instead. - pkgMain = getOwn(config.pkgs, name); - - return pkgMain ? pkgMain : name; - } - - function removeScript(name) { - if (isBrowser) { - each(scripts(), function (scriptNode) { - if (scriptNode.getAttribute('data-requiremodule') === name && - scriptNode.getAttribute('data-requirecontext') === context.contextName) { - scriptNode.parentNode.removeChild(scriptNode); - return true; - } - }); - } - } - - function hasPathFallback(id) { - var pathConfig = getOwn(config.paths, id); - if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) { - //Pop off the first array value, since it failed, and - //retry - pathConfig.shift(); - context.require.undef(id); - - //Custom require that does not do map translation, since - //ID is "absolute", already mapped/resolved. - context.makeRequire(null, { - skipMap: true - })([id]); - - return true; - } - } - - //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]; - } - - /** - * Creates a module mapping that includes plugin prefix, module - * name, and path. If parentModuleMap is provided it will - * also normalize the name via require.normalize() - * - * @param {String} name the module name - * @param {String} [parentModuleMap] parent module map - * for the module name, used to resolve relative names. - * @param {Boolean} isNormalized: is the ID already normalized. - * This is true if this call is done for a define() module ID. - * @param {Boolean} applyMap: apply the map config to the ID. - * Should only be true if this map is for a dependency. - * - * @returns {Object} - */ - function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) { - var url, pluginModule, suffix, nameParts, - prefix = null, - parentName = parentModuleMap ? parentModuleMap.name : null, - originalName = name, - isDefine = true, - normalizedName = ''; - - //If no name, then it means it is a require call, generate an - //internal name. - if (!name) { - isDefine = false; - name = '_@r' + (requireCounter += 1); - } - - nameParts = splitPrefix(name); - prefix = nameParts[0]; - name = nameParts[1]; - - if (prefix) { - prefix = normalize(prefix, parentName, applyMap); - pluginModule = getOwn(defined, prefix); - } - - //Account for relative paths if there is a base name. - if (name) { - if (prefix) { - if (pluginModule && pluginModule.normalize) { - //Plugin is loaded, use its normalize method. - normalizedName = pluginModule.normalize(name, function (name) { - return normalize(name, parentName, applyMap); - }); - } else { - // If nested plugin references, then do not try to - // normalize, as it will not normalize correctly. This - // places a restriction on resourceIds, and the longer - // term solution is not to normalize until plugins are - // loaded and all normalizations to allow for async - // loading of a loader plugin. But for now, fixes the - // common uses. Details in #1131 - normalizedName = name.indexOf('!') === -1 ? - normalize(name, parentName, applyMap) : - name; - } - } else { - //A regular module. - normalizedName = normalize(name, parentName, applyMap); - - //Normalized name may be a plugin ID due to map config - //application in normalize. The map config values must - //already be normalized, so do not need to redo that part. - nameParts = splitPrefix(normalizedName); - prefix = nameParts[0]; - normalizedName = nameParts[1]; - isNormalized = true; - - url = context.nameToUrl(normalizedName); - } - } - - //If the id is a plugin id that cannot be determined if it needs - //normalization, stamp it with a unique ID so two matching relative - //ids that may conflict can be separate. - suffix = prefix && !pluginModule && !isNormalized ? - '_unnormalized' + (unnormalizedCounter += 1) : - ''; - - return { - prefix: prefix, - name: normalizedName, - parentMap: parentModuleMap, - unnormalized: !!suffix, - url: url, - originalName: originalName, - isDefine: isDefine, - id: (prefix ? - prefix + '!' + normalizedName : - normalizedName) + suffix - }; - } - - function getModule(depMap) { - var id = depMap.id, - mod = getOwn(registry, id); - - if (!mod) { - mod = registry[id] = new context.Module(depMap); - } - - return mod; - } - - function on(depMap, name, fn) { - var id = depMap.id, - mod = getOwn(registry, id); - - if (hasProp(defined, id) && - (!mod || mod.defineEmitComplete)) { - if (name === 'defined') { - fn(defined[id]); - } - } else { - mod = getModule(depMap); - if (mod.error && name === 'error') { - fn(mod.error); - } else { - mod.on(name, fn); - } - } - } - - function onError(err, errback) { - var ids = err.requireModules, - notified = false; - - if (errback) { - errback(err); - } else { - each(ids, function (id) { - var mod = getOwn(registry, id); - if (mod) { - //Set error on module, so it skips timeout checks. - mod.error = err; - if (mod.events.error) { - notified = true; - mod.emit('error', err); - } - } - }); - - if (!notified) { - req.onError(err); - } - } - } - - /** - * Internal method to transfer globalQueue items to this context's - * defQueue. - */ - function takeGlobalQueue() { - //Push all the globalDefQueue items into the context's defQueue - if (globalDefQueue.length) { - each(globalDefQueue, function(queueItem) { - var id = queueItem[0]; - if (typeof id === 'string') { - context.defQueueMap[id] = true; - } - defQueue.push(queueItem); - }); - globalDefQueue = []; - } - } - - handlers = { - 'require': function (mod) { - if (mod.require) { - return mod.require; - } else { - return (mod.require = context.makeRequire(mod.map)); - } - }, - 'exports': function (mod) { - mod.usingExports = true; - if (mod.map.isDefine) { - if (mod.exports) { - return (defined[mod.map.id] = mod.exports); - } else { - return (mod.exports = defined[mod.map.id] = {}); - } - } - }, - 'module': function (mod) { - if (mod.module) { - return mod.module; - } else { - return (mod.module = { - id: mod.map.id, - uri: mod.map.url, - config: function () { - return getOwn(config.config, mod.map.id) || {}; - }, - exports: mod.exports || (mod.exports = {}) - }); - } - } - }; - - function cleanRegistry(id) { - //Clean up machinery used for waiting modules. - delete registry[id]; - delete enabledRegistry[id]; - } - - function breakCycle(mod, traced, processed) { - var id = mod.map.id; - - if (mod.error) { - mod.emit('error', mod.error); - } else { - traced[id] = true; - each(mod.depMaps, function (depMap, i) { - var depId = depMap.id, - dep = getOwn(registry, depId); - - //Only force things that have not completed - //being defined, so still in the registry, - //and only if it has not been matched up - //in the module already. - if (dep && !mod.depMatched[i] && !processed[depId]) { - if (getOwn(traced, depId)) { - mod.defineDep(i, defined[depId]); - mod.check(); //pass false? - } else { - breakCycle(dep, traced, processed); - } - } - }); - processed[id] = true; - } - } - - function checkLoaded() { - var err, usingPathFallback, - waitInterval = config.waitSeconds * 1000, - //It is possible to disable the wait interval by using waitSeconds of 0. - expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), - noLoads = [], - reqCalls = [], - stillLoading = false, - needCycleCheck = true; - - //Do not bother if this call was a result of a cycle break. - if (inCheckLoaded) { - return; - } - - inCheckLoaded = true; - - //Figure out the state of all the modules. - eachProp(enabledRegistry, function (mod) { - var map = mod.map, - modId = map.id; - - //Skip things that are not enabled or in error state. - if (!mod.enabled) { - return; - } - - if (!map.isDefine) { - reqCalls.push(mod); - } - - if (!mod.error) { - //If the module should be executed, and it has not - //been inited and time is up, remember it. - if (!mod.inited && expired) { - if (hasPathFallback(modId)) { - usingPathFallback = true; - stillLoading = true; - } else { - noLoads.push(modId); - removeScript(modId); - } - } else if (!mod.inited && mod.fetched && map.isDefine) { - stillLoading = true; - if (!map.prefix) { - //No reason to keep looking for unfinished - //loading. If the only stillLoading is a - //plugin resource though, keep going, - //because it may be that a plugin resource - //is waiting on a non-plugin cycle. - return (needCycleCheck = false); - } - } - } - }); - - if (expired && noLoads.length) { - //If wait time expired, throw error of unloaded modules. - err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads); - err.contextName = context.contextName; - return onError(err); - } - - //Not expired, check for a cycle. - if (needCycleCheck) { - each(reqCalls, function (mod) { - breakCycle(mod, {}, {}); - }); - } - - //If still waiting on loads, and the waiting load is something - //other than a plugin resource, or there are still outstanding - //scripts, then just try back later. - if ((!expired || usingPathFallback) && stillLoading) { - //Something is still waiting to load. Wait for it, but only - //if a timeout is not already in effect. - if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) { - checkLoadedTimeoutId = setTimeout(function () { - checkLoadedTimeoutId = 0; - checkLoaded(); - }, 50); - } - } - - inCheckLoaded = false; - } - - Module = function (map) { - this.events = getOwn(undefEvents, map.id) || {}; - this.map = map; - this.shim = getOwn(config.shim, map.id); - this.depExports = []; - this.depMaps = []; - this.depMatched = []; - this.pluginMaps = {}; - this.depCount = 0; - - /* this.exports this.factory - this.depMaps = [], - this.enabled, this.fetched - */ - }; - - Module.prototype = { - init: function (depMaps, factory, errback, options) { - options = options || {}; - - //Do not do more inits if already done. Can happen if there - //are multiple define calls for the same module. That is not - //a normal, common case, but it is also not unexpected. - if (this.inited) { - return; - } - - this.factory = factory; - - if (errback) { - //Register for errors on this module. - this.on('error', errback); - } else if (this.events.error) { - //If no errback already, but there are error listeners - //on this module, set up an errback to pass to the deps. - errback = bind(this, function (err) { - this.emit('error', err); - }); - } - - //Do a copy of the dependency array, so that - //source inputs are not modified. For example - //"shim" deps are passed in here directly, and - //doing a direct modification of the depMaps array - //would affect that config. - this.depMaps = depMaps && depMaps.slice(0); - - this.errback = errback; - - //Indicate this module has be initialized - this.inited = true; - - this.ignore = options.ignore; - - //Could have option to init this module in enabled mode, - //or could have been previously marked as enabled. However, - //the dependencies are not known until init is called. So - //if enabled previously, now trigger dependencies as enabled. - if (options.enabled || this.enabled) { - //Enable this module and dependencies. - //Will call this.check() - this.enable(); - } else { - this.check(); - } - }, - - defineDep: function (i, depExports) { - //Because of cycles, defined callback for a given - //export can be called more than once. - if (!this.depMatched[i]) { - this.depMatched[i] = true; - this.depCount -= 1; - this.depExports[i] = depExports; - } - }, - - fetch: function () { - if (this.fetched) { - return; - } - this.fetched = true; - - context.startTime = (new Date()).getTime(); - - var map = this.map; - - //If the manager is for a plugin managed resource, - //ask the plugin to load it now. - if (this.shim) { - context.makeRequire(this.map, { - enableBuildCallback: true - })(this.shim.deps || [], bind(this, function () { - return map.prefix ? this.callPlugin() : this.load(); - })); - } else { - //Regular dependency. - return map.prefix ? this.callPlugin() : this.load(); - } - }, - - load: function () { - var url = this.map.url; - - //Regular dependency. - if (!urlFetched[url]) { - urlFetched[url] = true; - context.load(this.map.id, url); - } - }, - - /** - * Checks if the module is ready to define itself, and if so, - * define it. - */ - check: function () { - if (!this.enabled || this.enabling) { - return; - } - - var err, cjsModule, - id = this.map.id, - depExports = this.depExports, - exports = this.exports, - factory = this.factory; - - if (!this.inited) { - // Only fetch if not already in the defQueue. - if (!hasProp(context.defQueueMap, id)) { - this.fetch(); - } - } else if (this.error) { - this.emit('error', this.error); - } else if (!this.defining) { - //The factory could trigger another require call - //that would result in checking this module to - //define itself again. If already in the process - //of doing that, skip this work. - this.defining = true; - - if (this.depCount < 1 && !this.defined) { - if (isFunction(factory)) { - //If there is an error listener, favor passing - //to that instead of throwing an error. However, - //only do it for define()'d modules. require - //errbacks should not be called for failures in - //their callbacks (#699). However if a global - //onError is set, use that. - if ((this.events.error && this.map.isDefine) || - req.onError !== defaultOnError) { - try { - exports = context.execCb(id, factory, depExports, exports); - } catch (e) { - err = e; - } - } else { - exports = context.execCb(id, factory, depExports, exports); - } - - // Favor return value over exports. If node/cjs in play, - // then will not have a return value anyway. Favor - // module.exports assignment over exports object. - if (this.map.isDefine && exports === undefined) { - cjsModule = this.module; - if (cjsModule) { - exports = cjsModule.exports; - } else if (this.usingExports) { - //exports already set the defined value. - exports = this.exports; - } - } - - if (err) { - err.requireMap = this.map; - err.requireModules = this.map.isDefine ? [this.map.id] : null; - err.requireType = this.map.isDefine ? 'define' : 'require'; - return onError((this.error = err)); - } - - } else { - //Just a literal value - exports = factory; - } - - this.exports = exports; - - if (this.map.isDefine && !this.ignore) { - defined[id] = exports; - - if (req.onResourceLoad) { - req.onResourceLoad(context, this.map, this.depMaps); - } - } - - //Clean up - cleanRegistry(id); - - this.defined = true; - } - - //Finished the define stage. Allow calling check again - //to allow define notifications below in the case of a - //cycle. - this.defining = false; - - if (this.defined && !this.defineEmitted) { - this.defineEmitted = true; - this.emit('defined', this.exports); - this.defineEmitComplete = true; - } - - } - }, - - callPlugin: function () { - var map = this.map, - id = map.id, - //Map already normalized the prefix. - pluginMap = makeModuleMap(map.prefix); - - //Mark this as a dependency for this plugin, so it - //can be traced for cycles. - this.depMaps.push(pluginMap); - - on(pluginMap, 'defined', bind(this, function (plugin) { - var load, normalizedMap, normalizedMod, - bundleId = getOwn(bundlesMap, this.map.id), - name = this.map.name, - parentName = this.map.parentMap ? this.map.parentMap.name : null, - localRequire = context.makeRequire(map.parentMap, { - enableBuildCallback: true - }); - - //If current map is not normalized, wait for that - //normalized name to load instead of continuing. - if (this.map.unnormalized) { - //Normalize the ID if the plugin allows it. - if (plugin.normalize) { - name = plugin.normalize(name, function (name) { - return normalize(name, parentName, true); - }) || ''; - } - - //prefix and name should already be normalized, no need - //for applying map config again either. - normalizedMap = makeModuleMap(map.prefix + '!' + name, - this.map.parentMap); - on(normalizedMap, - 'defined', bind(this, function (value) { - this.init([], function () { return value; }, null, { - enabled: true, - ignore: true - }); - })); - - normalizedMod = getOwn(registry, normalizedMap.id); - if (normalizedMod) { - //Mark this as a dependency for this plugin, so it - //can be traced for cycles. - this.depMaps.push(normalizedMap); - - if (this.events.error) { - normalizedMod.on('error', bind(this, function (err) { - this.emit('error', err); - })); - } - normalizedMod.enable(); - } - - return; - } - - //If a paths config, then just load that file instead to - //resolve the plugin, as it is built into that paths layer. - if (bundleId) { - this.map.url = context.nameToUrl(bundleId); - this.load(); - return; - } - - load = bind(this, function (value) { - this.init([], function () { return value; }, null, { - enabled: true - }); - }); - - load.error = bind(this, function (err) { - this.inited = true; - this.error = err; - err.requireModules = [id]; - - //Remove temp unnormalized modules for this module, - //since they will never be resolved otherwise now. - eachProp(registry, function (mod) { - if (mod.map.id.indexOf(id + '_unnormalized') === 0) { - cleanRegistry(mod.map.id); - } - }); - - onError(err); - }); - - //Allow plugins to load other code without having to know the - //context or how to 'complete' the load. - load.fromText = bind(this, function (text, textAlt) { - /*jslint evil: true */ - var moduleName = map.name, - moduleMap = makeModuleMap(moduleName), - hasInteractive = useInteractive; - - //As of 2.1.0, support just passing the text, to reinforce - //fromText only being called once per resource. Still - //support old style of passing moduleName but discard - //that moduleName in favor of the internal ref. - if (textAlt) { - text = textAlt; - } - - //Turn off interactive script matching for IE for any define - //calls in the text, then turn it back on at the end. - if (hasInteractive) { - useInteractive = false; - } - - //Prime the system by creating a module instance for - //it. - getModule(moduleMap); - - //Transfer any config to this other module. - if (hasProp(config.config, id)) { - config.config[moduleName] = config.config[id]; - } - - try { - req.exec(text); - } catch (e) { - return onError(makeError('fromtexteval', - 'fromText eval for ' + id + - ' failed: ' + e, - e, - [id])); - } - - if (hasInteractive) { - useInteractive = true; - } - - //Mark this as a dependency for the plugin - //resource - this.depMaps.push(moduleMap); - - //Support anonymous modules. - context.completeLoad(moduleName); - - //Bind the value of that module to the value for this - //resource ID. - localRequire([moduleName], load); - }); - - //Use parentName here since the plugin's name is not reliable, - //could be some weird string with no path that actually wants to - //reference the parentName's path. - plugin.load(map.name, localRequire, load, config); - })); - - context.enable(pluginMap, this); - this.pluginMaps[pluginMap.id] = pluginMap; - }, - - enable: function () { - enabledRegistry[this.map.id] = this; - this.enabled = true; - - //Set flag mentioning that the module is enabling, - //so that immediate calls to the defined callbacks - //for dependencies do not trigger inadvertent load - //with the depCount still being zero. - this.enabling = true; - - //Enable each dependency - each(this.depMaps, bind(this, function (depMap, i) { - var id, mod, handler; - - if (typeof depMap === 'string') { - //Dependency needs to be converted to a depMap - //and wired up to this module. - depMap = makeModuleMap(depMap, - (this.map.isDefine ? this.map : this.map.parentMap), - false, - !this.skipMap); - this.depMaps[i] = depMap; - - handler = getOwn(handlers, depMap.id); - - if (handler) { - this.depExports[i] = handler(this); - return; - } - - this.depCount += 1; - - on(depMap, 'defined', bind(this, function (depExports) { - if (this.undefed) { - return; - } - this.defineDep(i, depExports); - this.check(); - })); - - if (this.errback) { - on(depMap, 'error', bind(this, this.errback)); - } else if (this.events.error) { - // No direct errback on this module, but something - // else is listening for errors, so be sure to - // propagate the error correctly. - on(depMap, 'error', bind(this, function(err) { - this.emit('error', err); - })); - } - } - - id = depMap.id; - mod = registry[id]; - - //Skip special modules like 'require', 'exports', 'module' - //Also, don't call enable if it is already enabled, - //important in circular dependency cases. - if (!hasProp(handlers, id) && mod && !mod.enabled) { - context.enable(depMap, this); - } - })); - - //Enable each plugin that is used in - //a dependency - eachProp(this.pluginMaps, bind(this, function (pluginMap) { - var mod = getOwn(registry, pluginMap.id); - if (mod && !mod.enabled) { - context.enable(pluginMap, this); - } - })); - - this.enabling = false; - - this.check(); - }, - - on: function (name, cb) { - var cbs = this.events[name]; - if (!cbs) { - cbs = this.events[name] = []; - } - cbs.push(cb); - }, - - emit: function (name, evt) { - each(this.events[name], function (cb) { - cb(evt); - }); - if (name === 'error') { - //Now that the error handler was triggered, remove - //the listeners, since this broken Module instance - //can stay around for a while in the registry. - delete this.events[name]; - } - } - }; - - function callGetModule(args) { - //Skip modules already defined. - if (!hasProp(defined, args[0])) { - getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]); - } - } - - function removeListener(node, func, name, ieName) { - //Favor detachEvent because of IE9 - //issue, see attachEvent/addEventListener comment elsewhere - //in this file. - if (node.detachEvent && !isOpera) { - //Probably IE. If not it will throw an error, which will be - //useful to know. - if (ieName) { - node.detachEvent(ieName, func); - } - } else { - node.removeEventListener(name, func, false); - } - } - - /** - * Given an event from a script node, get the requirejs info from it, - * and then removes the event listeners on the node. - * @param {Event} evt - * @returns {Object} - */ - function getScriptData(evt) { - //Using currentTarget instead of target for Firefox 2.0's sake. Not - //all old browsers will be supported, but this one was easy enough - //to support and still makes sense. - var node = evt.currentTarget || evt.srcElement; - - //Remove the listeners once here. - removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange'); - removeListener(node, context.onScriptError, 'error'); - - return { - node: node, - id: node && node.getAttribute('data-requiremodule') - }; - } - - function intakeDefines() { - var args; - - //Any defined modules in the global queue, intake them now. - takeGlobalQueue(); - - //Make sure any remaining defQueue items get properly processed. - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + - args[args.length - 1])); - } else { - //args are id, deps, factory. Should be normalized by the - //define() function. - callGetModule(args); - } - } - context.defQueueMap = {}; - } - - context = { - config: config, - contextName: contextName, - registry: registry, - defined: defined, - urlFetched: urlFetched, - defQueue: defQueue, - defQueueMap: {}, - Module: Module, - makeModuleMap: makeModuleMap, - nextTick: req.nextTick, - onError: onError, - - /** - * Set a configuration for the context. - * @param {Object} cfg config object to integrate. - */ - configure: function (cfg) { - //Make sure the baseUrl ends in a slash. - if (cfg.baseUrl) { - if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') { - cfg.baseUrl += '/'; - } - } - - //Save off the paths since they require special processing, - //they are additive. - var shim = config.shim, - objs = { - paths: true, - bundles: true, - config: true, - map: true - }; - - eachProp(cfg, function (value, prop) { - if (objs[prop]) { - if (!config[prop]) { - config[prop] = {}; - } - mixin(config[prop], value, true, true); - } else { - config[prop] = value; - } - }); - - //Reverse map the bundles - if (cfg.bundles) { - eachProp(cfg.bundles, function (value, prop) { - each(value, function (v) { - if (v !== prop) { - bundlesMap[v] = prop; - } - }); - }); - } - - //Merge shim - if (cfg.shim) { - eachProp(cfg.shim, function (value, id) { - //Normalize the structure - if (isArray(value)) { - value = { - deps: value - }; - } - if ((value.exports || value.init) && !value.exportsFn) { - value.exportsFn = context.makeShimExports(value); - } - shim[id] = value; - }); - config.shim = shim; - } - - //Adjust packages if necessary. - if (cfg.packages) { - each(cfg.packages, function (pkgObj) { - var location, name; - - pkgObj = typeof pkgObj === 'string' ? {name: pkgObj} : pkgObj; - - name = pkgObj.name; - location = pkgObj.location; - if (location) { - config.paths[name] = pkgObj.location; - } - - //Save pointer to main module ID for pkg name. - //Remove leading dot in main, so main paths are normalized, - //and remove any trailing .js, since different package - //envs have different conventions: some use a module name, - //some use a file name. - config.pkgs[name] = pkgObj.name + '/' + (pkgObj.main || 'main') - .replace(currDirRegExp, '') - .replace(jsSuffixRegExp, ''); - }); - } - - //If there are any "waiting to execute" modules in the registry, - //update the maps for them, since their info, like URLs to load, - //may have changed. - eachProp(registry, function (mod, id) { - //If module already has init called, since it is too - //late to modify them, and ignore unnormalized ones - //since they are transient. - if (!mod.inited && !mod.map.unnormalized) { - mod.map = makeModuleMap(id, null, true); - } - }); - - //If a deps array or a config callback is specified, then call - //require with those args. This is useful when require is defined as a - //config object before require.js is loaded. - if (cfg.deps || cfg.callback) { - context.require(cfg.deps || [], cfg.callback); - } - }, - - makeShimExports: function (value) { - function fn() { - var ret; - if (value.init) { - ret = value.init.apply(global, arguments); - } - return ret || (value.exports && getGlobal(value.exports)); - } - return fn; - }, - - makeRequire: function (relMap, options) { - options = options || {}; - - function localRequire(deps, callback, errback) { - var id, map, requireMod; - - if (options.enableBuildCallback && callback && isFunction(callback)) { - callback.__requireJsBuild = true; - } - - if (typeof deps === 'string') { - if (isFunction(callback)) { - //Invalid call - return onError(makeError('requireargs', 'Invalid require call'), errback); - } - - //If require|exports|module are requested, get the - //value for them from the special handlers. Caveat: - //this only works while module is being defined. - if (relMap && hasProp(handlers, deps)) { - return handlers[deps](registry[relMap.id]); - } - - //Synchronous access to one module. If require.get is - //available (as in the Node adapter), prefer that. - if (req.get) { - return req.get(context, deps, relMap, localRequire); - } - - //Normalize module name, if it contains . or .. - map = makeModuleMap(deps, relMap, false, true); - id = map.id; - - if (!hasProp(defined, id)) { - return onError(makeError('notloaded', 'Module name "' + - id + - '" has not been loaded yet for context: ' + - contextName + - (relMap ? '' : '. Use require([])'))); - } - return defined[id]; - } - - //Grab defines waiting in the global queue. - intakeDefines(); - - //Mark all the dependencies as needing to be loaded. - context.nextTick(function () { - //Some defines could have been added since the - //require call, collect them. - intakeDefines(); - - requireMod = getModule(makeModuleMap(null, relMap)); - - //Store if map config should be applied to this require - //call for dependencies. - requireMod.skipMap = options.skipMap; - - requireMod.init(deps, callback, errback, { - enabled: true - }); - - checkLoaded(); - }); - - return localRequire; - } - - mixin(localRequire, { - isBrowser: isBrowser, - - /** - * Converts a module name + .extension into an URL path. - * *Requires* the use of a module name. It does not support using - * plain URLs like nameToUrl. - */ - toUrl: function (moduleNamePlusExt) { - var ext, - index = moduleNamePlusExt.lastIndexOf('.'), - segment = moduleNamePlusExt.split('/')[0], - isRelative = segment === '.' || segment === '..'; - - //Have a file extension alias, and it is not the - //dots from a relative path. - if (index !== -1 && (!isRelative || index > 1)) { - ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length); - moduleNamePlusExt = moduleNamePlusExt.substring(0, index); - } - - return context.nameToUrl(normalize(moduleNamePlusExt, - relMap && relMap.id, true), ext, true); - }, - - defined: function (id) { - return hasProp(defined, makeModuleMap(id, relMap, false, true).id); - }, - - specified: function (id) { - id = makeModuleMap(id, relMap, false, true).id; - return hasProp(defined, id) || hasProp(registry, id); - } - }); - - //Only allow undef on top level require calls - if (!relMap) { - localRequire.undef = function (id) { - //Bind any waiting define() calls to this context, - //fix for #408 - takeGlobalQueue(); - - var map = makeModuleMap(id, relMap, true), - mod = getOwn(registry, id); - - mod.undefed = true; - removeScript(id); - - delete defined[id]; - delete urlFetched[map.url]; - delete undefEvents[id]; - - //Clean queued defines too. Go backwards - //in array so that the splices do not - //mess up the iteration. - eachReverse(defQueue, function(args, i) { - if (args[0] === id) { - defQueue.splice(i, 1); - } - }); - delete context.defQueueMap[id]; - - if (mod) { - //Hold on to listeners in case the - //module will be attempted to be reloaded - //using a different config. - if (mod.events.defined) { - undefEvents[id] = mod.events; - } - - cleanRegistry(id); - } - }; - } - - return localRequire; - }, - - /** - * Called to enable a module if it is still in the registry - * awaiting enablement. A second arg, parent, the parent module, - * is passed in for context, when this method is overridden by - * the optimizer. Not shown here to keep code compact. - */ - enable: function (depMap) { - var mod = getOwn(registry, depMap.id); - if (mod) { - getModule(depMap).enable(); - } - }, - - /** - * Internal method used by environment adapters to complete a load event. - * A load event could be a script load or just a load pass from a synchronous - * load call. - * @param {String} moduleName the name of the module to potentially complete. - */ - completeLoad: function (moduleName) { - var found, args, mod, - shim = getOwn(config.shim, moduleName) || {}, - shExports = shim.exports; - - takeGlobalQueue(); - - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - args[0] = moduleName; - //If already found an anonymous module and bound it - //to this name, then this is some other anon module - //waiting for its completeLoad to fire. - if (found) { - break; - } - found = true; - } else if (args[0] === moduleName) { - //Found matching define call for this script! - found = true; - } - - callGetModule(args); - } - context.defQueueMap = {}; - - //Do this after the cycle of callGetModule in case the result - //of those calls/init calls changes the registry. - mod = getOwn(registry, moduleName); - - if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) { - if (config.enforceDefine && (!shExports || !getGlobal(shExports))) { - if (hasPathFallback(moduleName)) { - return; - } else { - return onError(makeError('nodefine', - 'No define call for ' + moduleName, - null, - [moduleName])); - } - } else { - //A script that does not call define(), so just simulate - //the call for it. - callGetModule([moduleName, (shim.deps || []), shim.exportsFn]); - } - } - - checkLoaded(); - }, - - /** - * Converts a module name to a file path. Supports cases where - * moduleName may actually be just an URL. - * Note that it **does not** call normalize on the moduleName, - * it is assumed to have already been normalized. This is an - * internal API, not a public one. Use toUrl for the public API. - */ - nameToUrl: function (moduleName, ext, skipExt) { - var paths, syms, i, parentModule, url, - parentPath, bundleId, - pkgMain = getOwn(config.pkgs, moduleName); - - if (pkgMain) { - moduleName = pkgMain; - } - - bundleId = getOwn(bundlesMap, moduleName); - - if (bundleId) { - return context.nameToUrl(bundleId, ext, skipExt); - } - - //If a colon is in the URL, it indicates a protocol is used and it is just - //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?) - //or ends with .js, then assume the user meant to use an url and not a module id. - //The slash is important for protocol-less URLs as well as full paths. - if (req.jsExtRegExp.test(moduleName)) { - //Just a plain path, not module name lookup, so just return it. - //Add extension if it is included. This is a bit wonky, only non-.js things pass - //an extension, this method probably needs to be reworked. - url = moduleName + (ext || ''); - } else { - //A module that needs to be converted to a path. - paths = config.paths; - - syms = moduleName.split('/'); - //For each module name segment, see if there is a path - //registered for it. Start with most specific name - //and work up from it. - for (i = syms.length; i > 0; i -= 1) { - parentModule = syms.slice(0, i).join('/'); - - parentPath = getOwn(paths, parentModule); - if (parentPath) { - //If an array, it means there are a few choices, - //Choose the one that is desired - if (isArray(parentPath)) { - parentPath = parentPath[0]; - } - syms.splice(0, i, parentPath); - break; - } - } - - //Join the path parts together, then figure out if baseUrl is needed. - url = syms.join('/'); - url += (ext || (/^data\:|\?/.test(url) || skipExt ? '' : '.js')); - url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url; - } - - return config.urlArgs ? url + - ((url.indexOf('?') === -1 ? '?' : '&') + - config.urlArgs) : url; - }, - - //Delegates to req.load. Broken out as a separate function to - //allow overriding in the optimizer. - load: function (id, url) { - req.load(context, id, url); - }, - - /** - * Executes a module callback function. Broken out as a separate function - * solely to allow the build system to sequence the files in the built - * layer in the right sequence. - * - * @private - */ - execCb: function (name, callback, args, exports) { - return callback.apply(exports, args); - }, - - /** - * callback for script loads, used to check status of loading. - * - * @param {Event} evt the event from the browser for the script - * that was loaded. - */ - onScriptLoad: function (evt) { - //Using currentTarget instead of target for Firefox 2.0's sake. Not - //all old browsers will be supported, but this one was easy enough - //to support and still makes sense. - if (evt.type === 'load' || - (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) { - //Reset interactive script so a script node is not held onto for - //to long. - interactiveScript = null; - - //Pull out the name of the module and the context. - var data = getScriptData(evt); - context.completeLoad(data.id); - } - }, - - /** - * Callback for script errors. - */ - onScriptError: function (evt) { - var data = getScriptData(evt); - if (!hasPathFallback(data.id)) { - return onError(makeError('scripterror', 'Script error for: ' + data.id, evt, [data.id])); - } - } - }; - - context.require = context.makeRequire(); - return context; - } - - /** - * Main entry point. - * - * If the only argument to require is a string, then the module that - * is represented by that string is fetched for the appropriate context. - * - * If the first argument is an array, then it will be treated as an array - * of dependency string names to fetch. An optional function callback can - * be specified to execute when all of those dependencies are available. - * - * Make a local req variable to help Caja compliance (it assumes things - * on a require that are not standardized), and to give a short - * name for minification/local scope use. - */ - req = requirejs = function (deps, callback, errback, optional) { - - //Find the right context, use default - var context, config, - contextName = defContextName; - - // Determine if have config object in the call. - if (!isArray(deps) && typeof deps !== 'string') { - // deps is a config object - config = deps; - if (isArray(callback)) { - // Adjust args if there are dependencies - deps = callback; - callback = errback; - errback = optional; - } else { - deps = []; - } - } - - if (config && config.context) { - contextName = config.context; - } - - context = getOwn(contexts, contextName); - if (!context) { - context = contexts[contextName] = req.s.newContext(contextName); - } - - if (config) { - context.configure(config); - } - - return context.require(deps, callback, errback); - }; - - /** - * Support require.config() to make it easier to cooperate with other - * AMD loaders on globally agreed names. - */ - req.config = function (config) { - return req(config); - }; - - /** - * Execute something after the current tick - * of the event loop. Override for other envs - * that have a better solution than setTimeout. - * @param {Function} fn function to execute later. - */ - req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) { - setTimeout(fn, 4); - } : function (fn) { fn(); }; - - /** - * Export require as a global, but only if it does not already exist. - */ - if (!require) { - require = req; - } - - req.version = version; - - //Used to filter out dependencies that are already paths. - req.jsExtRegExp = /^\/|:|\?|\.js$/; - req.isBrowser = isBrowser; - s = req.s = { - contexts: contexts, - newContext: newContext - }; - - //Create default context. - req({}); - - //Exports some context-sensitive methods on global require. - each([ - 'toUrl', - 'undef', - 'defined', - 'specified' - ], function (prop) { - //Reference from contexts instead of early binding to default context, - //so that during builds, the latest instance of the default context - //with its config gets used. - req[prop] = function () { - var ctx = contexts[defContextName]; - return ctx.require[prop].apply(ctx, arguments); - }; - }); - - if (isBrowser) { - head = s.head = document.getElementsByTagName('head')[0]; - //If BASE tag is in play, using appendChild is a problem for IE6. - //When that browser dies, this can be removed. Details in this jQuery bug: - //http://dev.jquery.com/ticket/2709 - baseElement = document.getElementsByTagName('base')[0]; - if (baseElement) { - head = s.head = baseElement.parentNode; - } - } - - /** - * Any errors that require explicitly generates will be passed to this - * function. Intercept/override it if you want custom error handling. - * @param {Error} err the error object. - */ - req.onError = defaultOnError; - - /** - * Creates the node for the load command. Only used in browser envs. - */ - req.createNode = function (config, moduleName, url) { - var node = config.xhtml ? - document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') : - document.createElement('script'); - node.type = config.scriptType || 'text/javascript'; - node.charset = 'utf-8'; - node.async = true; - return node; - }; - - /** - * Does the request to load a module for the browser case. - * Make this a separate function to allow other environments - * to override it. - * - * @param {Object} context the require context to find state. - * @param {String} moduleName the name of the module. - * @param {Object} url the URL to the module. - */ - req.load = function (context, moduleName, url) { - var config = (context && context.config) || {}, - node; - if (isBrowser) { - //In the browser so use a script tag - node = req.createNode(config, moduleName, url); - if (config.onNodeCreated) { - config.onNodeCreated(node, config, moduleName, url); - } - - node.setAttribute('data-requirecontext', context.contextName); - node.setAttribute('data-requiremodule', moduleName); - - //Set up load listener. Test attachEvent first because IE9 has - //a subtle issue in its addEventListener and script onload firings - //that do not match the behavior of all other browsers with - //addEventListener support, which fire the onload event for a - //script right after the script execution. See: - //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution - //UNFORTUNATELY Opera implements attachEvent but does not follow the script - //script execution mode. - if (node.attachEvent && - //Check if node.attachEvent is artificially added by custom script or - //natively supported by browser - //read https://github.com/jrburke/requirejs/issues/187 - //if we can NOT find [native code] then it must NOT natively supported. - //in IE8, node.attachEvent does not have toString() - //Note the test for "[native code" with no closing brace, see: - //https://github.com/jrburke/requirejs/issues/273 - !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && - !isOpera) { - //Probably IE. IE (at least 6-8) do not fire - //script onload right after executing the script, so - //we cannot tie the anonymous define call to a name. - //However, IE reports the script as being in 'interactive' - //readyState at the time of the define call. - useInteractive = true; - - node.attachEvent('onreadystatechange', context.onScriptLoad); - //It would be great to add an error handler here to catch - //404s in IE9+. However, onreadystatechange will fire before - //the error handler, so that does not help. If addEventListener - //is used, then IE will fire error before load, but we cannot - //use that pathway given the connect.microsoft.com issue - //mentioned above about not doing the 'script execute, - //then fire the script load event listener before execute - //next script' that other browsers do. - //Best hope: IE10 fixes the issues, - //and then destroys all installs of IE 6-9. - //node.attachEvent('onerror', context.onScriptError); - } else { - node.addEventListener('load', context.onScriptLoad, false); - node.addEventListener('error', context.onScriptError, false); - } - node.src = url; - - //For some cache cases in IE 6-8, the script executes before the end - //of the appendChild execution, so to tie an anonymous define - //call to the module name (which is stored on the node), hold on - //to a reference to this node, but clear after the DOM insertion. - currentlyAddingScript = node; - if (baseElement) { - head.insertBefore(node, baseElement); - } else { - head.appendChild(node); - } - currentlyAddingScript = null; - - return node; - } else if (isWebWorker) { - try { - //In a web worker, use importScripts. This is not a very - //efficient use of importScripts, importScripts will block until - //its script is downloaded and evaluated. However, if web workers - //are in play, the expectation that a build has been done so that - //only one script needs to be loaded anyway. This may need to be - //reevaluated if other use cases become common. - importScripts(url); - - //Account for anonymous modules - context.completeLoad(moduleName); - } catch (e) { - context.onError(makeError('importscripts', - 'importScripts failed for ' + - moduleName + ' at ' + url, - e, - [moduleName])); - } - } - }; - - function getInteractiveScript() { - if (interactiveScript && interactiveScript.readyState === 'interactive') { - return interactiveScript; - } - - eachReverse(scripts(), function (script) { - if (script.readyState === 'interactive') { - return (interactiveScript = script); - } - }); - return interactiveScript; - } - - //Look for a data-main script attribute, which could also adjust the baseUrl. - if (isBrowser && !cfg.skipDataMain) { - //Figure out baseUrl. Get it from the script tag with require.js in it. - eachReverse(scripts(), function (script) { - //Set the 'head' where we can append children by - //using the script's parent. - if (!head) { - head = script.parentNode; - } - - //Look for a data-main attribute to set main script for the page - //to load. If it is there, the path to data main becomes the - //baseUrl, if it is not already set. - dataMain = script.getAttribute('data-main'); - if (dataMain) { - //Preserve dataMain in case it is a path (i.e. contains '?') - mainScript = dataMain; - - //Set final baseUrl if there is not already an explicit one. - if (!cfg.baseUrl) { - //Pull off the directory of data-main for use as the - //baseUrl. - src = mainScript.split('/'); - mainScript = src.pop(); - subPath = src.length ? src.join('/') + '/' : './'; - - cfg.baseUrl = subPath; - } - - //Strip off any trailing .js since mainScript is now - //like a module name. - mainScript = mainScript.replace(jsSuffixRegExp, ''); - - //If mainScript is still a path, fall back to dataMain - if (req.jsExtRegExp.test(mainScript)) { - mainScript = dataMain; - } - - //Put the data-main script in the files to load. - cfg.deps = cfg.deps ? cfg.deps.concat(mainScript) : [mainScript]; - - return true; - } - }); - } - - /** - * The function that handles definitions of modules. Differs from - * require() in that a string for the module should be the first argument, - * and the function to execute after dependencies are loaded should - * return a value to define the module corresponding to the first argument's - * name. - */ - define = function (name, deps, callback) { - var node, context; - - //Allow for anonymous modules - if (typeof name !== 'string') { - //Adjust args appropriately - callback = deps; - deps = name; - name = null; - } - - //This module may not have dependencies - if (!isArray(deps)) { - callback = deps; - deps = null; - } - - //If no name, and callback is a function, then figure out if it a - //CommonJS thing with dependencies. - if (!deps && isFunction(callback)) { - deps = []; - //Remove comments from the callback string, - //look for require calls, and pull them into the dependencies, - //but only if there are function args. - if (callback.length) { - callback - .toString() - .replace(commentRegExp, '') - .replace(cjsRequireRegExp, function (match, dep) { - deps.push(dep); - }); - - //May be a CommonJS thing even without require calls, but still - //could use exports, and module. Avoid doing exports and module - //work though if it just needs require. - //REQUIRES the function to expect the CommonJS variables in the - //order listed below. - deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps); - } - } - - //If in IE 6-8 and hit an anonymous define() call, do the interactive - //work. - if (useInteractive) { - node = currentlyAddingScript || getInteractiveScript(); - if (node) { - if (!name) { - name = node.getAttribute('data-requiremodule'); - } - context = contexts[node.getAttribute('data-requirecontext')]; - } - } - - //Always save off evaluating the def call until the script onload handler. - //This allows multiple modules to be in a file without prematurely - //tracing dependencies, and allows for anonymous module support, - //where the module name is not known until the script onload event - //occurs. If no context, use the global queue, and get it processed - //in the onscript load callback. - if (context) { - context.defQueue.push([name, deps, callback]); - context.defQueueMap[name] = true; - } else { - globalDefQueue.push([name, deps, callback]); - } - }; - - define.amd = { - jQuery: true - }; - - /** - * Executes the text. Normally just uses eval, but can be modified - * to use a better, environment-specific call. Only used for transpiling - * loader plugins, not for plain JS modules. - * @param {String} text the text to execute/evaluate. - */ - req.exec = function (text) { - /*jslint evil: true */ - return eval(text); - }; - - //Set up with config info. - req(cfg); -}(this)); diff --git a/elgg_clean/bower_components/respond/.bower.json b/elgg_clean/bower_components/respond/.bower.json deleted file mode 100644 index 54ff7c50..00000000 --- a/elgg_clean/bower_components/respond/.bower.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "respond", - "version": "1.4.2", - "main": "dest/respond.src.js", - "description": "Fast and lightweight polyfill for min/max-width CSS3 Media Queries (for IE 6-8, and more)", - "ignore": [ - "**/.*", - "test" - ], - "homepage": "https://github.com/scottjehl/Respond", - "_release": "1.4.2", - "_resolution": { - "type": "version", - "tag": "1.4.2", - "commit": "3eda118b4440825df56e3c12d054f9d316a5987a" - }, - "_source": "git://github.com/scottjehl/Respond.git", - "_target": "~1.4.2", - "_originalSource": "respond", - "_direct": true -} \ No newline at end of file diff --git a/elgg_clean/bower_components/respond/Gruntfile.js b/elgg_clean/bower_components/respond/Gruntfile.js deleted file mode 100644 index 70d4f187..00000000 --- a/elgg_clean/bower_components/respond/Gruntfile.js +++ /dev/null @@ -1,90 +0,0 @@ -module.exports = function(grunt) { - "use strict"; - - // Project configuration. - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - banner: - '/*! Respond.js v<%= pkg.version %>: <%= pkg.description %>' + - ' * Copyright <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>\n' + - ' * Licensed under <%= _.pluck(pkg.licenses, "url").join(", ") %>\n' + - ' * <%= pkg.website %>' + - ' */\n\n', - uglify: { - nonMinMatchMedia: { - options: { - mangle: false, - compress: false, - preserveComments: 'some', - beautify: { - beautify: true, - indent_level: 2 - } - }, - files: { - 'dest/respond.src.js': ['src/matchmedia.polyfill.js', 'src/respond.js'] - } - }, - minMatchMedia: { - options: { - banner: '<%= banner %>' - }, - files: { - 'dest/respond.min.js': ['src/matchmedia.polyfill.js', 'src/respond.js'] - } - }, - nonMinMatchMediaListener: { - options: { - mangle: false, - compress: false, - preserveComments: 'some', - beautify: { - beautify: true, - indent_level: 2 - } - }, - files: { - 'dest/respond.matchmedia.addListener.src.js': ['src/matchmedia.polyfill.js', 'src/matchmedia.addListener.js', 'src/respond.js'] - } - }, - minMatchMediaListener: { - options: { - banner: '<%= banner %>' - }, - files: { - 'dest/respond.matchmedia.addListener.min.js': ['src/matchmedia.polyfill.js', 'src/matchmedia.addListener.js', 'src/respond.js'] - } - } - }, - jshint: { - files: ['src/respond.js', 'src/matchmedia.polyfill.js'], - options: { - curly: true, - eqeqeq: true, - immed: true, - latedef: false, - newcap: true, - noarg: true, - sub: true, - undef: true, - boss: true, - eqnull: true, - smarttabs: true, - node: true, - es5: true, - strict: false - }, - globals: { - Image: true, - window: true - } - } - }); - - grunt.loadNpmTasks( 'grunt-contrib-jshint' ); - grunt.loadNpmTasks( 'grunt-contrib-uglify' ); - - // Default task. - grunt.registerTask('default', ['jshint', 'uglify']); - -}; diff --git a/elgg_clean/bower_components/respond/LICENSE-MIT b/elgg_clean/bower_components/respond/LICENSE-MIT deleted file mode 100644 index c7cf40db..00000000 --- a/elgg_clean/bower_components/respond/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 Scott Jehl - -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/elgg_clean/bower_components/respond/README.md b/elgg_clean/bower_components/respond/README.md deleted file mode 100644 index 2cdc7c29..00000000 --- a/elgg_clean/bower_components/respond/README.md +++ /dev/null @@ -1,114 +0,0 @@ -# Respond.js -### A fast & lightweight polyfill for min/max-width CSS3 Media Queries (for IE 6-8, and more) - - - Copyright 2011: Scott Jehl, scottjehl.com - - - Licensed under the MIT license. - -The goal of this script is to provide a fast and lightweight (3kb minified / 1kb gzipped) script to enable [responsive web designs](http://www.alistapart.com/articles/responsive-web-design/) in browsers that don't support CSS3 Media Queries - in particular, Internet Explorer 8 and under. It's written in such a way that it will probably patch support for other non-supporting browsers as well (more information on that soon). - -If you're unfamiliar with the concepts surrounding Responsive Web Design, you can read up [here](http://www.alistapart.com/articles/responsive-web-design/) and also [here](http://filamentgroup.com/examples/responsive-images/) - -[Demo page](https://rawgithub.com/scottjehl/Respond/master/test/test.html) (the colors change to show media queries working) - - -Usage Instructions -====== - -1. Craft your CSS with min/max-width media queries to adapt your layout from mobile (first) all the way up to desktop - - -<pre> - @media screen and (min-width: 480px){ - ...styles for 480px and up go here - } -</pre> - -2. Reference the respond.min.js script (1kb min/gzipped) after all of your CSS (the earlier it runs, the greater chance IE users will not see a flash of un-media'd content) - -3. Crack open Internet Explorer and pump fists in delight - - -CDN/X-Domain Setup -====== - -Respond.js works by requesting a pristine copy of your CSS via AJAX, so if you host your stylesheets on a CDN (or a subdomain), you'll need to upload a proxy page to enable cross-domain communication. - -See `cross-domain/example.html` for a demo: - -- Upload `cross-domain/respond-proxy.html` to your external domain -- Upload `cross-domain/respond.proxy.gif` to your origin domain -- Reference the file(s) via `<link />` element(s): - -<pre> - <!-- Respond.js proxy on external server --> - <link href="http://externalcdn.com/respond-proxy.html" id="respond-proxy" rel="respond-proxy" /> - - <!-- Respond.js redirect location on local server --> - <link href="/path/to/respond.proxy.gif" id="respond-redirect" rel="respond-redirect" /> - - <!-- Respond.js proxy script on local server --> - <script src="/path/to/respond.proxy.js"></script> -</pre> - -If you are having problems with the cross-domain setup, make sure respond-proxy.html does not have a query string appended to it. - -Note: HUGE thanks to @doctyper for the contributions in the cross-domain proxy! - - -Support & Caveats -====== - -Some notes to keep in mind: - -- This script's focus is purposely very narrow: only min-width and max-width media queries and all media types (screen, print, etc) are translated to non-supporting browsers. I wanted to keep things simple for filesize, maintenance, and performance, so I've intentionally limited support to queries that are essential to building a (mobile-first) responsive design. In the future, I may rework things a bit to include a hook for patching-in additional media query features - stay tuned! - -- Browsers that natively support CSS3 Media Queries are opted-out of running this script as quickly as possible. In testing for support, all other browsers are subjected to a quick test to determine whether they support media queries or not before proceeding to run the script. This test is now included separately at the top, and uses the window.matchMedia polyfill found here: https://github.com/paulirish/matchMedia.js . If you are already including this polyfill via Modernizr or otherwise, feel free to remove that part. - -- This script relies on no other scripts or frameworks (aside from the included matchMedia polyfill), and is optimized for mobile delivery (~1kb total filesize min/gzip) - -- As you might guess, this implementation is quite dumb in regards to CSS parsing rules. This is a good thing, because that allows it to run really fast, but its looseness may also cause unexpected behavior. For example: if you enclose a whole media query in a comment intending to disable its rules, you'll probably find that those rules will end up enabled in non-media-query-supporting browsers. - -- Respond.js doesn't parse CSS referenced via @import, nor does it work with media queries within style elements, as those styles can't be re-requested for parsing. - -- Due to security restrictions, some browsers may not allow this script to work on file:// urls (because it uses xmlHttpRequest). Run it on a web server. - -- If the request for the CSS file that includes MQ-specific styling is - behind a redirect, Respond.js will fail silently. CSS files should -respond with a 200 status. - -- Currently, media attributes on link elements are supported, but only if the linked stylesheet contains no media queries. If it does contain queries, the media attribute will be ignored and the internal queries will be parsed normally. In other words, @media statements in the CSS take priority. - -- Reportedly, if CSS files are encoded in UTF-8 with Byte-Order-Mark (BOM), they will not work with Respond.js in IE7 or IE8. Noted in issue #97 - -- WARNING: Including @font-face rules inside a media query will cause IE7 and IE8 to hang during load. To work around this, place @font-face rules in the wide open, as a sibling to other media queries. - -- If you have more than 32 stylesheets referenced, IE will throw an error, `Invalid procedure call or argument`. Concatenate your CSS and the issue should go away. - -- Sass/SCSS source maps are not supported; `@media -sass-debug-info` will break respond.js. Noted in issue [#148](https://github.com/scottjehl/Respond/issues/148) - -- Internet Explorer 9 supports css3 media queries, but not within frames when the CSS containing the media query is in an external file (this appears to be a bug in IE9 — see http://stackoverflow.com/questions/10316247/media-queries-fail-inside-ie9-iframe). See this commit for a fix if you're having this problem. https://github.com/NewSignature/Respond/commit/1c86c66075f0a2099451eb426702fc3540d2e603 - -- Nested Media Queries are not supported - - -How's it work? -====== -Basically, the script loops through the CSS referenced in the page and runs a regular expression or two on their contents to find media queries and their associated blocks of CSS. In Internet Explorer, the content of the stylesheet is impossible to retrieve in its pre-parsed state (which in IE 8-, means its media queries are removed from the text), so Respond.js re-requests the CSS files using Ajax and parses the text response from there. Be sure to configure your CSS files' caching properly so that this re-request doesn't actually go to the server, hitting your browser cache instead. - -From there, each media query block is appended to the head in order via style elements, and those style elements are enabled and disabled (read: appended and removed from the DOM) depending on how their min/max width compares with the browser width. The media attribute on the style elements will match that of the query in the CSS, so it could be "screen", "projector", or whatever you want. Any relative paths contained in the CSS will be prefixed by their stylesheet's href, so image paths will direct to their proper destination - -API Options? -====== -Sure, a couple: - -- respond.update() : rerun the parser (helpful if you added a stylesheet to the page and it needs to be translated) -- respond.mediaQueriesSupported: set to true if the browser natively supports media queries. -- respond.getEmValue() : returns the pixel value of one em - - -Alternatives to this script -====== -This isn't the only CSS3 Media Query polyfill script out there; but it damn well may be the fastest. - -If you're looking for more robust CSS3 Media Query support, you might check out http://code.google.com/p/css3-mediaqueries-js/. In testing, I've found that script to be noticeably slow when rendering complex responsive designs (both in filesize and performance), but it really does support a lot more media query features than this script. Big hat tip to the authors! :) diff --git a/elgg_clean/bower_components/respond/bower.json b/elgg_clean/bower_components/respond/bower.json deleted file mode 100644 index b98e9646..00000000 --- a/elgg_clean/bower_components/respond/bower.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "respond", - "version": "1.4.2", - "main": "dest/respond.src.js", - "description": "Fast and lightweight polyfill for min/max-width CSS3 Media Queries (for IE 6-8, and more)", - "ignore": [ - "**/.*", - "test" - ] -} diff --git a/elgg_clean/bower_components/respond/cross-domain/example.html b/elgg_clean/bower_components/respond/cross-domain/example.html deleted file mode 100644 index 700224e7..00000000 --- a/elgg_clean/bower_components/respond/cross-domain/example.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8" /> - <title>Respond JS Test Page</title> - <link href="https://rawgithub.com/scottjehl/Respond/master/test/test.css" rel="stylesheet"/> - <link href="https://rawgithub.com/scottjehl/Respond/master/test/test2.css" media="screen and (min-width: 600px)" rel="stylesheet"/> - <script src="../dest/respond.src.js"></script> - - <!-- Respond.js proxy on external server --> - <link href="https://rawgithub.com/scottjehl/Respond/master/cross-domain/respond-proxy.html" id="respond-proxy" rel="respond-proxy" /> - <link href="respond.proxy.gif" id="respond-redirect" rel="respond-redirect" /> - <script src="respond.proxy.js"></script> -</head> -<body> - <p>This is a visual test file for cross-domain proxy.</p> - - <p>The media queries in the included CSS file simply change the body's background color depending on the browser width. If you see any colors aside from black, then the media queries are working in your browser. You can resize your browser window to see it change on the fly.</p> - - - <p id="attribute-test">Media-attributes are working too! This should be visible above 600px.</p> - -</body> -</html> diff --git a/elgg_clean/bower_components/respond/cross-domain/respond-proxy.html b/elgg_clean/bower_components/respond/cross-domain/respond-proxy.html deleted file mode 100644 index f828a0a5..00000000 --- a/elgg_clean/bower_components/respond/cross-domain/respond-proxy.html +++ /dev/null @@ -1,96 +0,0 @@ -<!-- Respond.js: min/max-width media query polyfill. Remote proxy (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs --> -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8" /> - <title>Respond JS Proxy</title> -</head> -<body> - <script> - (function () { - var domain, css, query, getQueryString, ajax, xmlHttp; - - /* - http://stackoverflow.com/questions/4963673/get-url-array-variables-in-javascript-jquery/4963817#4963817 - */ - getQueryString = function() { - var ret = {}, parts, i, p; - - parts = (document.location.toString().split("?")[1]).split("&"); - - for (i = 0; i < parts.length; i++) { - - p = parts[i].split("="); - // so strings will be correctly parsed: - p[1] = decodeURIComponent(p[1].replace(/\+/g, " ")); - - if (p[0].search(/\[\]/) >= 0) { // then it"s an array - p[0] = p[0].replace("[]", ""); - - if (typeof ret[p[0]] != "object") { - ret[p[0]] = []; - } - ret[p[0]].push(p[1]); - } else { - ret[p[0]] = p[1]; - } - } - return ret; - }; - - ajax = function( url, callback ) { - var req = xmlHttp(); - if (!req){ - return; - } - req.open( "GET", url, true ); - req.onreadystatechange = function () { - if ( req.readyState != 4 || req.status != 200 && req.status != 304 ){ - return; - } - callback( req.responseText ); - }; - if ( req.readyState == 4 ){ - return; - } - req.send(); - }; - - //define ajax obj - xmlHttp = (function() { - var xmlhttpmethod = false, - attempts = [ - function(){ return new XMLHttpRequest(); }, - function(){ return new ActiveXObject("Microsoft.XMLHTTP"); }, - function(){ return new ActiveXObject("MSXML2.XMLHTTP.3.0"); } - ], - al = attempts.length; - - while( al-- ){ - try { - xmlhttpmethod = attempts[ al ](); - } - catch(e) { - continue; - } - break; - } - return function(){ - return xmlhttpmethod; - }; - })(); - - query = getQueryString(); - css = query["css"]; - domain = query["url"]; - - if (css && domain) { - ajax(css, function (response) { - window.name = response; - window.location.href = domain; - }); - } - }()); - </script> -</body> -</html> \ No newline at end of file diff --git a/elgg_clean/bower_components/respond/cross-domain/respond.proxy.gif b/elgg_clean/bower_components/respond/cross-domain/respond.proxy.gif deleted file mode 100644 index ced1c0532c8669047dcaf7f93a48ae08ab6cf412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35 ocmZ?wbh9u|WMp7u_`tyM|Nnmm1_m7l1_lO@hyxRo3nPOy0Fn3xhyVZp diff --git a/elgg_clean/bower_components/respond/cross-domain/respond.proxy.js b/elgg_clean/bower_components/respond/cross-domain/respond.proxy.js deleted file mode 100644 index e9422cb7..00000000 --- a/elgg_clean/bower_components/respond/cross-domain/respond.proxy.js +++ /dev/null @@ -1,127 +0,0 @@ -/*! Respond.js: min/max-width media query polyfill. Remote proxy (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ -(function(win, doc, undefined){ - var docElem = doc.documentElement, - proxyURL = doc.getElementById("respond-proxy").href, - redirectURL = (doc.getElementById("respond-redirect") || location).href, - baseElem = doc.getElementsByTagName("base")[0], - urls = [], - refNode; - - function encode(url){ - return win.encodeURIComponent(url); - } - - function fakejax( url, callback ){ - - var iframe, - AXO; - - // All hail Google http://j.mp/iKMI19 - // Behold, an iframe proxy without annoying clicky noises. - if ( "ActiveXObject" in win ) { - AXO = new ActiveXObject( "htmlfile" ); - AXO.open(); - AXO.write( '<iframe id="x"></iframe>' ); - AXO.close(); - iframe = AXO.getElementById( "x" ); - } else { - iframe = doc.createElement( "iframe" ); - iframe.style.cssText = "position:absolute;top:-99em"; - docElem.insertBefore(iframe, docElem.firstElementChild || docElem.firstChild ); - } - - iframe.src = checkBaseURL(proxyURL) + "?url=" + encode(redirectURL) + "&css=" + encode(checkBaseURL(url)); - - function checkFrameName() { - var cssText; - - try { - cssText = iframe.contentWindow.name; - } - catch (e) { } - - if (cssText) { - // We've got what we need. Stop the iframe from loading further content. - iframe.src = "about:blank"; - iframe.parentNode.removeChild(iframe); - iframe = null; - - - // Per http://j.mp/kn9EPh, not taking any chances. Flushing the ActiveXObject - if (AXO) { - AXO = null; - - if (win.CollectGarbage) { - win.CollectGarbage(); - } - } - - callback(cssText); - } - else{ - win.setTimeout(checkFrameName, 100); - } - } - - win.setTimeout(checkFrameName, 500); - } - - function checkBaseURL(href) { - if (baseElem && href.indexOf(baseElem.href) === -1) { - bref = (/\/$/).test(baseElem.href) ? baseElem.href : (baseElem.href + "/"); - href = bref + href; - } - - return href; - } - - function checkRedirectURL() { - // IE6 & IE7 don't build out absolute urls in <link /> attributes. - // So respond.proxy.gif remains relative instead of http://example.com/respond.proxy.gif. - // This trickery resolves that issue. - if (~ !redirectURL.indexOf(location.host)) { - - var fakeLink = doc.createElement("div"); - - fakeLink.innerHTML = '<a href="' + redirectURL + '"></a>'; - docElem.insertBefore(fakeLink, docElem.firstElementChild || docElem.firstChild ); - - // Grab the parsed URL from that dummy object - redirectURL = fakeLink.firstChild.href; - - // Clean up - fakeLink.parentNode.removeChild(fakeLink); - fakeLink = null; - } - } - - function buildUrls(){ - var links = doc.getElementsByTagName( "link" ); - - for( var i = 0, linkl = links.length; i < linkl; i++ ){ - - var thislink = links[i], - href = links[i].href, - extreg = (/^([a-zA-Z:]*\/\/(www\.)?)/).test( href ), - ext = (baseElem && !extreg) || extreg; - - //make sure it's an external stylesheet - if( thislink.rel.indexOf( "stylesheet" ) >= 0 && ext ){ - (function( link ){ - fakejax( href, function( css ){ - link.styleSheet.rawCssText = css; - respond.update(); - } ); - })( thislink ); - } - } - - - } - - if( !respond.mediaQueriesSupported ){ - checkRedirectURL(); - buildUrls(); - } - -})( window, document ); diff --git a/elgg_clean/bower_components/respond/dest/respond.matchmedia.addListener.min.js b/elgg_clean/bower_components/respond/dest/respond.matchmedia.addListener.min.js deleted file mode 100644 index 50ac74c9..00000000 --- a/elgg_clean/bower_components/respond/dest/respond.matchmedia.addListener.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl - * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT - * */ - -!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";if(a.matchMedia&&a.matchMedia("all").addListener)return!1;var b=a.matchMedia,c=b("only all").matches,d=!1,e=0,f=[],g=function(){a.clearTimeout(e),e=a.setTimeout(function(){for(var c=0,d=f.length;d>c;c++){var e=f[c].mql,g=f[c].listeners||[],h=b(e.media).matches;if(h!==e.matches){e.matches=h;for(var i=0,j=g.length;j>i;i++)g[i].call(a,e)}}},30)};a.matchMedia=function(e){var h=b(e),i=[],j=0;return h.addListener=function(b){c&&(d||(d=!0,a.addEventListener("resize",g,!0)),0===j&&(j=f.push({mql:h,listeners:i})),i.push(b))},h.removeListener=function(a){for(var b=0,c=i.length;c>b;b++)i[b]===a&&i.splice(b,1)},h}}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmValue=t,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this); \ No newline at end of file diff --git a/elgg_clean/bower_components/respond/dest/respond.matchmedia.addListener.src.js b/elgg_clean/bower_components/respond/dest/respond.matchmedia.addListener.src.js deleted file mode 100644 index 31571cda..00000000 --- a/elgg_clean/bower_components/respond/dest/respond.matchmedia.addListener.src.js +++ /dev/null @@ -1,273 +0,0 @@ -/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ -/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ -(function(w) { - "use strict"; - w.matchMedia = w.matchMedia || function(doc, undefined) { - var bool, docElem = doc.documentElement, refNode = docElem.firstElementChild || docElem.firstChild, fakeBody = doc.createElement("body"), div = doc.createElement("div"); - div.id = "mq-test-1"; - div.style.cssText = "position:absolute;top:-100em"; - fakeBody.style.background = "none"; - fakeBody.appendChild(div); - return function(q) { - div.innerHTML = '­<style media="' + q + '"> #mq-test-1 { width: 42px; }</style>'; - docElem.insertBefore(fakeBody, refNode); - bool = div.offsetWidth === 42; - docElem.removeChild(fakeBody); - return { - matches: bool, - media: q - }; - }; - }(w.document); -})(this); - -/*! matchMedia() polyfill addListener/removeListener extension. Author & copyright (c) 2012: Scott Jehl. Dual MIT/BSD license */ -(function(w) { - "use strict"; - if (w.matchMedia && w.matchMedia("all").addListener) { - return false; - } - var localMatchMedia = w.matchMedia, hasMediaQueries = localMatchMedia("only all").matches, isListening = false, timeoutID = 0, queries = [], handleChange = function(evt) { - w.clearTimeout(timeoutID); - timeoutID = w.setTimeout(function() { - for (var i = 0, il = queries.length; i < il; i++) { - var mql = queries[i].mql, listeners = queries[i].listeners || [], matches = localMatchMedia(mql.media).matches; - if (matches !== mql.matches) { - mql.matches = matches; - for (var j = 0, jl = listeners.length; j < jl; j++) { - listeners[j].call(w, mql); - } - } - } - }, 30); - }; - w.matchMedia = function(media) { - var mql = localMatchMedia(media), listeners = [], index = 0; - mql.addListener = function(listener) { - if (!hasMediaQueries) { - return; - } - if (!isListening) { - isListening = true; - w.addEventListener("resize", handleChange, true); - } - if (index === 0) { - index = queries.push({ - mql: mql, - listeners: listeners - }); - } - listeners.push(listener); - }; - mql.removeListener = function(listener) { - for (var i = 0, il = listeners.length; i < il; i++) { - if (listeners[i] === listener) { - listeners.splice(i, 1); - } - } - }; - return mql; - }; -})(this); - -/*! Respond.js v1.4.0: min/max-width media query polyfill. (c) Scott Jehl. MIT Lic. j.mp/respondjs */ -(function(w) { - "use strict"; - var respond = {}; - w.respond = respond; - respond.update = function() {}; - var requestQueue = [], xmlHttp = function() { - var xmlhttpmethod = false; - try { - xmlhttpmethod = new w.XMLHttpRequest(); - } catch (e) { - xmlhttpmethod = new w.ActiveXObject("Microsoft.XMLHTTP"); - } - return function() { - return xmlhttpmethod; - }; - }(), ajax = function(url, callback) { - var req = xmlHttp(); - if (!req) { - return; - } - req.open("GET", url, true); - req.onreadystatechange = function() { - if (req.readyState !== 4 || req.status !== 200 && req.status !== 304) { - return; - } - callback(req.responseText); - }; - if (req.readyState === 4) { - return; - } - req.send(null); - }; - respond.ajax = ajax; - respond.queue = requestQueue; - respond.regex = { - media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi, - keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi, - urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, - findStyles: /@media *([^\{]+)\{([\S\s]+?)$/, - only: /(only\s+)?([a-zA-Z]+)\s?/, - minw: /\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/, - maxw: /\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ - }; - respond.mediaQueriesSupported = w.matchMedia && w.matchMedia("only all") !== null && w.matchMedia("only all").matches; - if (respond.mediaQueriesSupported) { - return; - } - var doc = w.document, docElem = doc.documentElement, mediastyles = [], rules = [], appendedEls = [], parsedSheets = {}, resizeThrottle = 30, head = doc.getElementsByTagName("head")[0] || docElem, base = doc.getElementsByTagName("base")[0], links = head.getElementsByTagName("link"), lastCall, resizeDefer, eminpx, getEmValue = function() { - var ret, div = doc.createElement("div"), body = doc.body, originalHTMLFontSize = docElem.style.fontSize, originalBodyFontSize = body && body.style.fontSize, fakeUsed = false; - div.style.cssText = "position:absolute;font-size:1em;width:1em"; - if (!body) { - body = fakeUsed = doc.createElement("body"); - body.style.background = "none"; - } - docElem.style.fontSize = "100%"; - body.style.fontSize = "100%"; - body.appendChild(div); - if (fakeUsed) { - docElem.insertBefore(body, docElem.firstChild); - } - ret = div.offsetWidth; - if (fakeUsed) { - docElem.removeChild(body); - } else { - body.removeChild(div); - } - docElem.style.fontSize = originalHTMLFontSize; - if (originalBodyFontSize) { - body.style.fontSize = originalBodyFontSize; - } - ret = eminpx = parseFloat(ret); - return ret; - }, applyMedia = function(fromResize) { - var name = "clientWidth", docElemProp = docElem[name], currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[name] || docElemProp, styleBlocks = {}, lastLink = links[links.length - 1], now = new Date().getTime(); - if (fromResize && lastCall && now - lastCall < resizeThrottle) { - w.clearTimeout(resizeDefer); - resizeDefer = w.setTimeout(applyMedia, resizeThrottle); - return; - } else { - lastCall = now; - } - for (var i in mediastyles) { - if (mediastyles.hasOwnProperty(i)) { - var thisstyle = mediastyles[i], min = thisstyle.minw, max = thisstyle.maxw, minnull = min === null, maxnull = max === null, em = "em"; - if (!!min) { - min = parseFloat(min) * (min.indexOf(em) > -1 ? eminpx || getEmValue() : 1); - } - if (!!max) { - max = parseFloat(max) * (max.indexOf(em) > -1 ? eminpx || getEmValue() : 1); - } - if (!thisstyle.hasquery || (!minnull || !maxnull) && (minnull || currWidth >= min) && (maxnull || currWidth <= max)) { - if (!styleBlocks[thisstyle.media]) { - styleBlocks[thisstyle.media] = []; - } - styleBlocks[thisstyle.media].push(rules[thisstyle.rules]); - } - } - } - for (var j in appendedEls) { - if (appendedEls.hasOwnProperty(j)) { - if (appendedEls[j] && appendedEls[j].parentNode === head) { - head.removeChild(appendedEls[j]); - } - } - } - appendedEls.length = 0; - for (var k in styleBlocks) { - if (styleBlocks.hasOwnProperty(k)) { - var ss = doc.createElement("style"), css = styleBlocks[k].join("\n"); - ss.type = "text/css"; - ss.media = k; - head.insertBefore(ss, lastLink.nextSibling); - if (ss.styleSheet) { - ss.styleSheet.cssText = css; - } else { - ss.appendChild(doc.createTextNode(css)); - } - appendedEls.push(ss); - } - } - }, translate = function(styles, href, media) { - var qs = styles.replace(respond.regex.keyframes, "").match(respond.regex.media), ql = qs && qs.length || 0; - href = href.substring(0, href.lastIndexOf("/")); - var repUrls = function(css) { - return css.replace(respond.regex.urls, "$1" + href + "$2$3"); - }, useMedia = !ql && media; - if (href.length) { - href += "/"; - } - if (useMedia) { - ql = 1; - } - for (var i = 0; i < ql; i++) { - var fullq, thisq, eachq, eql; - if (useMedia) { - fullq = media; - rules.push(repUrls(styles)); - } else { - fullq = qs[i].match(respond.regex.findStyles) && RegExp.$1; - rules.push(RegExp.$2 && repUrls(RegExp.$2)); - } - eachq = fullq.split(","); - eql = eachq.length; - for (var j = 0; j < eql; j++) { - thisq = eachq[j]; - mediastyles.push({ - media: thisq.split("(")[0].match(respond.regex.only) && RegExp.$2 || "all", - rules: rules.length - 1, - hasquery: thisq.indexOf("(") > -1, - minw: thisq.match(respond.regex.minw) && parseFloat(RegExp.$1) + (RegExp.$2 || ""), - maxw: thisq.match(respond.regex.maxw) && parseFloat(RegExp.$1) + (RegExp.$2 || "") - }); - } - } - applyMedia(); - }, makeRequests = function() { - if (requestQueue.length) { - var thisRequest = requestQueue.shift(); - ajax(thisRequest.href, function(styles) { - translate(styles, thisRequest.href, thisRequest.media); - parsedSheets[thisRequest.href] = true; - w.setTimeout(function() { - makeRequests(); - }, 0); - }); - } - }, ripCSS = function() { - for (var i = 0; i < links.length; i++) { - var sheet = links[i], href = sheet.href, media = sheet.media, isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet"; - if (!!href && isCSS && !parsedSheets[href]) { - if (sheet.styleSheet && sheet.styleSheet.rawCssText) { - translate(sheet.styleSheet.rawCssText, href, media); - parsedSheets[href] = true; - } else { - if (!/^([a-zA-Z:]*\/\/)/.test(href) && !base || href.replace(RegExp.$1, "").split("/")[0] === w.location.host) { - if (href.substring(0, 2) === "//") { - href = w.location.protocol + href; - } - requestQueue.push({ - href: href, - media: media - }); - } - } - } - } - makeRequests(); - }; - ripCSS(); - respond.update = ripCSS; - respond.getEmValue = getEmValue; - function callMedia() { - applyMedia(true); - } - if (w.addEventListener) { - w.addEventListener("resize", callMedia, false); - } else if (w.attachEvent) { - w.attachEvent("onresize", callMedia); - } -})(this); \ No newline at end of file diff --git a/elgg_clean/bower_components/respond/dest/respond.min.js b/elgg_clean/bower_components/respond/dest/respond.min.js deleted file mode 100644 index 80a7b69d..00000000 --- a/elgg_clean/bower_components/respond/dest/respond.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl - * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT - * */ - -!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmValue=t,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this); \ No newline at end of file diff --git a/elgg_clean/bower_components/respond/dest/respond.src.js b/elgg_clean/bower_components/respond/dest/respond.src.js deleted file mode 100644 index b1298d07..00000000 --- a/elgg_clean/bower_components/respond/dest/respond.src.js +++ /dev/null @@ -1,224 +0,0 @@ -/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ -/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ -(function(w) { - "use strict"; - w.matchMedia = w.matchMedia || function(doc, undefined) { - var bool, docElem = doc.documentElement, refNode = docElem.firstElementChild || docElem.firstChild, fakeBody = doc.createElement("body"), div = doc.createElement("div"); - div.id = "mq-test-1"; - div.style.cssText = "position:absolute;top:-100em"; - fakeBody.style.background = "none"; - fakeBody.appendChild(div); - return function(q) { - div.innerHTML = '­<style media="' + q + '"> #mq-test-1 { width: 42px; }</style>'; - docElem.insertBefore(fakeBody, refNode); - bool = div.offsetWidth === 42; - docElem.removeChild(fakeBody); - return { - matches: bool, - media: q - }; - }; - }(w.document); -})(this); - -/*! Respond.js v1.4.0: min/max-width media query polyfill. (c) Scott Jehl. MIT Lic. j.mp/respondjs */ -(function(w) { - "use strict"; - var respond = {}; - w.respond = respond; - respond.update = function() {}; - var requestQueue = [], xmlHttp = function() { - var xmlhttpmethod = false; - try { - xmlhttpmethod = new w.XMLHttpRequest(); - } catch (e) { - xmlhttpmethod = new w.ActiveXObject("Microsoft.XMLHTTP"); - } - return function() { - return xmlhttpmethod; - }; - }(), ajax = function(url, callback) { - var req = xmlHttp(); - if (!req) { - return; - } - req.open("GET", url, true); - req.onreadystatechange = function() { - if (req.readyState !== 4 || req.status !== 200 && req.status !== 304) { - return; - } - callback(req.responseText); - }; - if (req.readyState === 4) { - return; - } - req.send(null); - }; - respond.ajax = ajax; - respond.queue = requestQueue; - respond.regex = { - media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi, - keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi, - urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, - findStyles: /@media *([^\{]+)\{([\S\s]+?)$/, - only: /(only\s+)?([a-zA-Z]+)\s?/, - minw: /\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/, - maxw: /\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ - }; - respond.mediaQueriesSupported = w.matchMedia && w.matchMedia("only all") !== null && w.matchMedia("only all").matches; - if (respond.mediaQueriesSupported) { - return; - } - var doc = w.document, docElem = doc.documentElement, mediastyles = [], rules = [], appendedEls = [], parsedSheets = {}, resizeThrottle = 30, head = doc.getElementsByTagName("head")[0] || docElem, base = doc.getElementsByTagName("base")[0], links = head.getElementsByTagName("link"), lastCall, resizeDefer, eminpx, getEmValue = function() { - var ret, div = doc.createElement("div"), body = doc.body, originalHTMLFontSize = docElem.style.fontSize, originalBodyFontSize = body && body.style.fontSize, fakeUsed = false; - div.style.cssText = "position:absolute;font-size:1em;width:1em"; - if (!body) { - body = fakeUsed = doc.createElement("body"); - body.style.background = "none"; - } - docElem.style.fontSize = "100%"; - body.style.fontSize = "100%"; - body.appendChild(div); - if (fakeUsed) { - docElem.insertBefore(body, docElem.firstChild); - } - ret = div.offsetWidth; - if (fakeUsed) { - docElem.removeChild(body); - } else { - body.removeChild(div); - } - docElem.style.fontSize = originalHTMLFontSize; - if (originalBodyFontSize) { - body.style.fontSize = originalBodyFontSize; - } - ret = eminpx = parseFloat(ret); - return ret; - }, applyMedia = function(fromResize) { - var name = "clientWidth", docElemProp = docElem[name], currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[name] || docElemProp, styleBlocks = {}, lastLink = links[links.length - 1], now = new Date().getTime(); - if (fromResize && lastCall && now - lastCall < resizeThrottle) { - w.clearTimeout(resizeDefer); - resizeDefer = w.setTimeout(applyMedia, resizeThrottle); - return; - } else { - lastCall = now; - } - for (var i in mediastyles) { - if (mediastyles.hasOwnProperty(i)) { - var thisstyle = mediastyles[i], min = thisstyle.minw, max = thisstyle.maxw, minnull = min === null, maxnull = max === null, em = "em"; - if (!!min) { - min = parseFloat(min) * (min.indexOf(em) > -1 ? eminpx || getEmValue() : 1); - } - if (!!max) { - max = parseFloat(max) * (max.indexOf(em) > -1 ? eminpx || getEmValue() : 1); - } - if (!thisstyle.hasquery || (!minnull || !maxnull) && (minnull || currWidth >= min) && (maxnull || currWidth <= max)) { - if (!styleBlocks[thisstyle.media]) { - styleBlocks[thisstyle.media] = []; - } - styleBlocks[thisstyle.media].push(rules[thisstyle.rules]); - } - } - } - for (var j in appendedEls) { - if (appendedEls.hasOwnProperty(j)) { - if (appendedEls[j] && appendedEls[j].parentNode === head) { - head.removeChild(appendedEls[j]); - } - } - } - appendedEls.length = 0; - for (var k in styleBlocks) { - if (styleBlocks.hasOwnProperty(k)) { - var ss = doc.createElement("style"), css = styleBlocks[k].join("\n"); - ss.type = "text/css"; - ss.media = k; - head.insertBefore(ss, lastLink.nextSibling); - if (ss.styleSheet) { - ss.styleSheet.cssText = css; - } else { - ss.appendChild(doc.createTextNode(css)); - } - appendedEls.push(ss); - } - } - }, translate = function(styles, href, media) { - var qs = styles.replace(respond.regex.keyframes, "").match(respond.regex.media), ql = qs && qs.length || 0; - href = href.substring(0, href.lastIndexOf("/")); - var repUrls = function(css) { - return css.replace(respond.regex.urls, "$1" + href + "$2$3"); - }, useMedia = !ql && media; - if (href.length) { - href += "/"; - } - if (useMedia) { - ql = 1; - } - for (var i = 0; i < ql; i++) { - var fullq, thisq, eachq, eql; - if (useMedia) { - fullq = media; - rules.push(repUrls(styles)); - } else { - fullq = qs[i].match(respond.regex.findStyles) && RegExp.$1; - rules.push(RegExp.$2 && repUrls(RegExp.$2)); - } - eachq = fullq.split(","); - eql = eachq.length; - for (var j = 0; j < eql; j++) { - thisq = eachq[j]; - mediastyles.push({ - media: thisq.split("(")[0].match(respond.regex.only) && RegExp.$2 || "all", - rules: rules.length - 1, - hasquery: thisq.indexOf("(") > -1, - minw: thisq.match(respond.regex.minw) && parseFloat(RegExp.$1) + (RegExp.$2 || ""), - maxw: thisq.match(respond.regex.maxw) && parseFloat(RegExp.$1) + (RegExp.$2 || "") - }); - } - } - applyMedia(); - }, makeRequests = function() { - if (requestQueue.length) { - var thisRequest = requestQueue.shift(); - ajax(thisRequest.href, function(styles) { - translate(styles, thisRequest.href, thisRequest.media); - parsedSheets[thisRequest.href] = true; - w.setTimeout(function() { - makeRequests(); - }, 0); - }); - } - }, ripCSS = function() { - for (var i = 0; i < links.length; i++) { - var sheet = links[i], href = sheet.href, media = sheet.media, isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet"; - if (!!href && isCSS && !parsedSheets[href]) { - if (sheet.styleSheet && sheet.styleSheet.rawCssText) { - translate(sheet.styleSheet.rawCssText, href, media); - parsedSheets[href] = true; - } else { - if (!/^([a-zA-Z:]*\/\/)/.test(href) && !base || href.replace(RegExp.$1, "").split("/")[0] === w.location.host) { - if (href.substring(0, 2) === "//") { - href = w.location.protocol + href; - } - requestQueue.push({ - href: href, - media: media - }); - } - } - } - } - makeRequests(); - }; - ripCSS(); - respond.update = ripCSS; - respond.getEmValue = getEmValue; - function callMedia() { - applyMedia(true); - } - if (w.addEventListener) { - w.addEventListener("resize", callMedia, false); - } else if (w.attachEvent) { - w.attachEvent("onresize", callMedia); - } -})(this); \ No newline at end of file diff --git a/elgg_clean/bower_components/respond/package.json b/elgg_clean/bower_components/respond/package.json deleted file mode 100644 index 42864b01..00000000 --- a/elgg_clean/bower_components/respond/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "Respond.js", - "description": "min/max-width media query polyfill", - "version": "1.4.2", - "homepage": "https://github.com/scottjehl/Respond", - "author": { - "name": "Scott Jehl", - "email": "scott@filamentgroup.com", - "url": "http://filamentgroup.com" - }, - "repository": { - "type": "git", - "url": "https://github.com/scottjehl/Respond.git" - }, - "bugs": { - "url": "https://github.com/scottjehl/Respond/issues" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT" - } - ], - "devDependencies": { - "grunt-cli":"~0.1", - "grunt": "~0.4.0", - "grunt-contrib-jshint": "~0.2.0", - "grunt-contrib-qunit": "~0.3.0", - "grunt-contrib-uglify": "0.2.7" - } - -} diff --git a/elgg_clean/bower_components/respond/src/matchmedia.addListener.js b/elgg_clean/bower_components/respond/src/matchmedia.addListener.js deleted file mode 100644 index 82909157..00000000 --- a/elgg_clean/bower_components/respond/src/matchmedia.addListener.js +++ /dev/null @@ -1,76 +0,0 @@ -/*! matchMedia() polyfill addListener/removeListener extension. Author & copyright (c) 2012: Scott Jehl. Dual MIT/BSD license */ -(function( w ){ - "use strict"; - // Bail out for browsers that have addListener support - if (w.matchMedia && w.matchMedia('all').addListener) { - return false; - } - - var localMatchMedia = w.matchMedia, - hasMediaQueries = localMatchMedia('only all').matches, - isListening = false, - timeoutID = 0, // setTimeout for debouncing 'handleChange' - queries = [], // Contains each 'mql' and associated 'listeners' if 'addListener' is used - handleChange = function(evt) { - // Debounce - w.clearTimeout(timeoutID); - - timeoutID = w.setTimeout(function() { - for (var i = 0, il = queries.length; i < il; i++) { - var mql = queries[i].mql, - listeners = queries[i].listeners || [], - matches = localMatchMedia(mql.media).matches; - - // Update mql.matches value and call listeners - // Fire listeners only if transitioning to or from matched state - if (matches !== mql.matches) { - mql.matches = matches; - - for (var j = 0, jl = listeners.length; j < jl; j++) { - listeners[j].call(w, mql); - } - } - } - }, 30); - }; - - w.matchMedia = function(media) { - var mql = localMatchMedia(media), - listeners = [], - index = 0; - - mql.addListener = function(listener) { - // Changes would not occur to css media type so return now (Affects IE <= 8) - if (!hasMediaQueries) { - return; - } - - // Set up 'resize' listener for browsers that support CSS3 media queries (Not for IE <= 8) - // There should only ever be 1 resize listener running for performance - if (!isListening) { - isListening = true; - w.addEventListener('resize', handleChange, true); - } - - // Push object only if it has not been pushed already - if (index === 0) { - index = queries.push({ - mql : mql, - listeners : listeners - }); - } - - listeners.push(listener); - }; - - mql.removeListener = function(listener) { - for (var i = 0, il = listeners.length; i < il; i++){ - if (listeners[i] === listener){ - listeners.splice(i, 1); - } - } - }; - - return mql; - }; -}( this )); diff --git a/elgg_clean/bower_components/respond/src/matchmedia.polyfill.js b/elgg_clean/bower_components/respond/src/matchmedia.polyfill.js deleted file mode 100644 index 12d2b95f..00000000 --- a/elgg_clean/bower_components/respond/src/matchmedia.polyfill.js +++ /dev/null @@ -1,36 +0,0 @@ -/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ -/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ - -(function(w){ - "use strict"; - w.matchMedia = w.matchMedia || (function( doc, undefined ) { - - var bool, - docElem = doc.documentElement, - refNode = docElem.firstElementChild || docElem.firstChild, - // fakeBody required for <FF4 when executed in <head> - fakeBody = doc.createElement( "body" ), - div = doc.createElement( "div" ); - - div.id = "mq-test-1"; - div.style.cssText = "position:absolute;top:-100em"; - fakeBody.style.background = "none"; - fakeBody.appendChild(div); - - return function(q){ - - div.innerHTML = "­<style media=\"" + q + "\"> #mq-test-1 { width: 42px; }</style>"; - - docElem.insertBefore( fakeBody, refNode ); - bool = div.offsetWidth === 42; - docElem.removeChild( fakeBody ); - - return { - matches: bool, - media: q - }; - - }; - - }( w.document )); -}( this )); diff --git a/elgg_clean/bower_components/respond/src/respond.js b/elgg_clean/bower_components/respond/src/respond.js deleted file mode 100644 index 7b77134f..00000000 --- a/elgg_clean/bower_components/respond/src/respond.js +++ /dev/null @@ -1,341 +0,0 @@ -/*! Respond.js v1.4.0: min/max-width media query polyfill. (c) Scott Jehl. MIT Lic. j.mp/respondjs */ -(function( w ){ - - "use strict"; - - //exposed namespace - var respond = {}; - w.respond = respond; - - //define update even in native-mq-supporting browsers, to avoid errors - respond.update = function(){}; - - //define ajax obj - var requestQueue = [], - xmlHttp = (function() { - var xmlhttpmethod = false; - try { - xmlhttpmethod = new w.XMLHttpRequest(); - } - catch( e ){ - xmlhttpmethod = new w.ActiveXObject( "Microsoft.XMLHTTP" ); - } - return function(){ - return xmlhttpmethod; - }; - })(), - - //tweaked Ajax functions from Quirksmode - ajax = function( url, callback ) { - var req = xmlHttp(); - if (!req){ - return; - } - req.open( "GET", url, true ); - req.onreadystatechange = function () { - if ( req.readyState !== 4 || req.status !== 200 && req.status !== 304 ){ - return; - } - callback( req.responseText ); - }; - if ( req.readyState === 4 ){ - return; - } - req.send( null ); - }; - - //expose for testing - respond.ajax = ajax; - respond.queue = requestQueue; - - // expose for testing - respond.regex = { - media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi, - keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi, - urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, - findStyles: /@media *([^\{]+)\{([\S\s]+?)$/, - only: /(only\s+)?([a-zA-Z]+)\s?/, - minw: /\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/, - maxw: /\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ - }; - - //expose media query support flag for external use - respond.mediaQueriesSupported = w.matchMedia && w.matchMedia( "only all" ) !== null && w.matchMedia( "only all" ).matches; - - //if media queries are supported, exit here - if( respond.mediaQueriesSupported ){ - return; - } - - //define vars - var doc = w.document, - docElem = doc.documentElement, - mediastyles = [], - rules = [], - appendedEls = [], - parsedSheets = {}, - resizeThrottle = 30, - head = doc.getElementsByTagName( "head" )[0] || docElem, - base = doc.getElementsByTagName( "base" )[0], - links = head.getElementsByTagName( "link" ), - - lastCall, - resizeDefer, - - //cached container for 1em value, populated the first time it's needed - eminpx, - - // returns the value of 1em in pixels - getEmValue = function() { - var ret, - div = doc.createElement('div'), - body = doc.body, - originalHTMLFontSize = docElem.style.fontSize, - originalBodyFontSize = body && body.style.fontSize, - fakeUsed = false; - - div.style.cssText = "position:absolute;font-size:1em;width:1em"; - - if( !body ){ - body = fakeUsed = doc.createElement( "body" ); - body.style.background = "none"; - } - - // 1em in a media query is the value of the default font size of the browser - // reset docElem and body to ensure the correct value is returned - docElem.style.fontSize = "100%"; - body.style.fontSize = "100%"; - - body.appendChild( div ); - - if( fakeUsed ){ - docElem.insertBefore( body, docElem.firstChild ); - } - - ret = div.offsetWidth; - - if( fakeUsed ){ - docElem.removeChild( body ); - } - else { - body.removeChild( div ); - } - - // restore the original values - docElem.style.fontSize = originalHTMLFontSize; - if( originalBodyFontSize ) { - body.style.fontSize = originalBodyFontSize; - } - - - //also update eminpx before returning - ret = eminpx = parseFloat(ret); - - return ret; - }, - - //enable/disable styles - applyMedia = function( fromResize ){ - var name = "clientWidth", - docElemProp = docElem[ name ], - currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp, - styleBlocks = {}, - lastLink = links[ links.length-1 ], - now = (new Date()).getTime(); - - //throttle resize calls - if( fromResize && lastCall && now - lastCall < resizeThrottle ){ - w.clearTimeout( resizeDefer ); - resizeDefer = w.setTimeout( applyMedia, resizeThrottle ); - return; - } - else { - lastCall = now; - } - - for( var i in mediastyles ){ - if( mediastyles.hasOwnProperty( i ) ){ - var thisstyle = mediastyles[ i ], - min = thisstyle.minw, - max = thisstyle.maxw, - minnull = min === null, - maxnull = max === null, - em = "em"; - - if( !!min ){ - min = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); - } - if( !!max ){ - max = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); - } - - // if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true - if( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){ - if( !styleBlocks[ thisstyle.media ] ){ - styleBlocks[ thisstyle.media ] = []; - } - styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] ); - } - } - } - - //remove any existing respond style element(s) - for( var j in appendedEls ){ - if( appendedEls.hasOwnProperty( j ) ){ - if( appendedEls[ j ] && appendedEls[ j ].parentNode === head ){ - head.removeChild( appendedEls[ j ] ); - } - } - } - appendedEls.length = 0; - - //inject active styles, grouped by media type - for( var k in styleBlocks ){ - if( styleBlocks.hasOwnProperty( k ) ){ - var ss = doc.createElement( "style" ), - css = styleBlocks[ k ].join( "\n" ); - - ss.type = "text/css"; - ss.media = k; - - //originally, ss was appended to a documentFragment and sheets were appended in bulk. - //this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one! - head.insertBefore( ss, lastLink.nextSibling ); - - if ( ss.styleSheet ){ - ss.styleSheet.cssText = css; - } - else { - ss.appendChild( doc.createTextNode( css ) ); - } - - //push to appendedEls to track for later removal - appendedEls.push( ss ); - } - } - }, - //find media blocks in css text, convert to style blocks - translate = function( styles, href, media ){ - var qs = styles.replace( respond.regex.keyframes, '' ).match( respond.regex.media ), - ql = qs && qs.length || 0; - - //try to get CSS path - href = href.substring( 0, href.lastIndexOf( "/" ) ); - - var repUrls = function( css ){ - return css.replace( respond.regex.urls, "$1" + href + "$2$3" ); - }, - useMedia = !ql && media; - - //if path exists, tack on trailing slash - if( href.length ){ href += "/"; } - - //if no internal queries exist, but media attr does, use that - //note: this currently lacks support for situations where a media attr is specified on a link AND - //its associated stylesheet has internal CSS media queries. - //In those cases, the media attribute will currently be ignored. - if( useMedia ){ - ql = 1; - } - - for( var i = 0; i < ql; i++ ){ - var fullq, thisq, eachq, eql; - - //media attr - if( useMedia ){ - fullq = media; - rules.push( repUrls( styles ) ); - } - //parse for styles - else{ - fullq = qs[ i ].match( respond.regex.findStyles ) && RegExp.$1; - rules.push( RegExp.$2 && repUrls( RegExp.$2 ) ); - } - - eachq = fullq.split( "," ); - eql = eachq.length; - - for( var j = 0; j < eql; j++ ){ - thisq = eachq[ j ]; - mediastyles.push( { - media : thisq.split( "(" )[ 0 ].match( respond.regex.only ) && RegExp.$2 || "all", - rules : rules.length - 1, - hasquery : thisq.indexOf("(") > -1, - minw : thisq.match( respond.regex.minw ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ), - maxw : thisq.match( respond.regex.maxw ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ) - } ); - } - } - - applyMedia(); - }, - - //recurse through request queue, get css text - makeRequests = function(){ - if( requestQueue.length ){ - var thisRequest = requestQueue.shift(); - - ajax( thisRequest.href, function( styles ){ - translate( styles, thisRequest.href, thisRequest.media ); - parsedSheets[ thisRequest.href ] = true; - - // by wrapping recursive function call in setTimeout - // we prevent "Stack overflow" error in IE7 - w.setTimeout(function(){ makeRequests(); },0); - } ); - } - }, - - //loop stylesheets, send text content to translate - ripCSS = function(){ - - for( var i = 0; i < links.length; i++ ){ - var sheet = links[ i ], - href = sheet.href, - media = sheet.media, - isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet"; - - //only links plz and prevent re-parsing - if( !!href && isCSS && !parsedSheets[ href ] ){ - // selectivizr exposes css through the rawCssText expando - if (sheet.styleSheet && sheet.styleSheet.rawCssText) { - translate( sheet.styleSheet.rawCssText, href, media ); - parsedSheets[ href ] = true; - } else { - if( (!/^([a-zA-Z:]*\/\/)/.test( href ) && !base) || - href.replace( RegExp.$1, "" ).split( "/" )[0] === w.location.host ){ - // IE7 doesn't handle urls that start with '//' for ajax request - // manually add in the protocol - if ( href.substring(0,2) === "//" ) { href = w.location.protocol + href; } - requestQueue.push( { - href: href, - media: media - } ); - } - } - } - } - makeRequests(); - }; - - //translate CSS - ripCSS(); - - //expose update for re-running respond later on - respond.update = ripCSS; - - //expose getEmValue - respond.getEmValue = getEmValue; - - //adjust on resize - function callMedia(){ - applyMedia( true ); - } - - if( w.addEventListener ){ - w.addEventListener( "resize", callMedia, false ); - } - else if( w.attachEvent ){ - w.attachEvent( "onresize", callMedia ); - } -})(this); diff --git a/elgg_clean/start.php b/elgg_clean/start.php index 5a4a4369..71c349f1 100755 --- a/elgg_clean/start.php +++ b/elgg_clean/start.php @@ -34,7 +34,7 @@ function elgg_clean_init() { elgg_register_css("passion", "http://fonts.googleapis.com/css?family=Passion+One"); elgg_register_css("elgg_clean", elgg_get_site_url() . "mod/elgg_clean/css/elgg_clean.css", 10000); elgg_register_css("font-awesome", "{$bower}fontawesome/css/font-awesome.min.css"); - elgg_register_css("fuelux", "{$bower}fuelux/dist/css/fuelux.min.css"); + // elgg_register_css("fuelux", "{$bower}fuelux/dist/css/fuelux.min.css"); elgg_register_css("agency", elgg_get_site_url() . "mod/elgg_clean/css/planetred.css", 20000); elgg_register_css("home", elgg_get_site_url() . "mod/elgg_clean/css/home.css", 30000); @@ -49,9 +49,11 @@ function elgg_clean_init() { elgg_register_js("scrollspy", "{$bower}scrollspy/jquery.scrollspy.js"); // elgg_register_js("parallax", "{$boder}jquery-parallax/scripts/jquery.parallax-1.13.js"); // elgg_register_js("scrollto", "{$bower}jquery-parallax/scripts/jquery.scrollTo-1.4.2-min.js"); - elgg_define_js('fuelux', array( - 'src' => "{$bower}fuelux/dist/js/fuelux.min.js", - )); + // elgg_define_js('fuelux', array( + // 'src' => "{$bower}fuelux/dist/js/fuelux.js", + // )); + + if (elgg_get_context() != "admin") { @@ -64,7 +66,7 @@ function elgg_clean_init() { elgg_load_js("jasny"); elgg_load_js("parallax"); elgg_load_js("scrollto"); - elgg_require_js("fuelux"); + // elgg_require_js("fuelux"); elgg_load_css("bootstrap"); elgg_load_css("open"); elgg_load_css("passion"); @@ -72,7 +74,7 @@ function elgg_clean_init() { elgg_load_css("bootstrap-select"); elgg_load_css("elgg_clean"); elgg_load_css("jasny"); - elgg_load_css("fuelux"); + // elgg_load_css("fuelux"); elgg_load_css("agency"); } diff --git a/elgg_clean/views/default/css/elements/reset.php b/elgg_clean/views/default/css/elements/reset.php new file mode 100644 index 00000000..f3722960 --- /dev/null +++ b/elgg_clean/views/default/css/elements/reset.php @@ -0,0 +1,79 @@ +<?php +/** + * CSS reset + * + * @package Elgg.Core + * @subpackage UI + */ +?> +/* <style> /**/ + +/* *************************************** + RESET CSS +*************************************** */ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + font-weight: inherit; + font-style: inherit; + font-size: 100%; + font-family: inherit; + vertical-align: baseline; +} +body { + background-color: white; +} +<?php // force vertical scroll bar ?> + + +/* keep focus styles for a11y +:focus { + outline: 0 none; +}*/ +ol, ul { + list-style: none; +} +em, i { + font-style:italic; +} +ins { + text-decoration:none; +} +strike, del { + text-decoration:line-through; +} +strong, b { + font-weight:bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +caption, th, td { + text-align: left; + font-weight: normal; + vertical-align: top; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ""; +} +blockquote, q { + quotes: "" ""; +} +a { + text-decoration: none; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} diff --git a/elgg_clean/views/default/css/elgg.php b/elgg_clean/views/default/css/elgg.php new file mode 100644 index 00000000..0936ffa1 --- /dev/null +++ b/elgg_clean/views/default/css/elgg.php @@ -0,0 +1,69 @@ +<?php +/** + * Elgg primary CSS view + * + * @package Elgg.Core + * @subpackage UI + */ + +/* + * Colors: + * #4690D6 - elgg light blue + * #0054A7 - elgg dark blue + * #e4ecf5 - elgg very light blue + */ + +// check if there is a theme overriding the old css view and use it, if it exists +$old_css_view = elgg_get_view_location('css'); +if ($old_css_view != elgg_get_config('viewpath')) { + echo elgg_view('css', $vars); + return true; +} + + +/******************************************************************************* + +Base CSS + * CSS reset + * core + * helpers (moved to end to have a higher priority) + * grid + +*******************************************************************************/ +echo elgg_view('css/elements/reset', $vars); +echo elgg_view('css/elements/core', $vars); +//echo elgg_view('css/elements/grid', $vars); + + +/******************************************************************************* + +Skin CSS + * typography - fonts, line spacing + * forms - forms, inputs + * buttons - action, cancel, delete, submit, dropdown, special + * navigation - menus, breadcrumbs, pagination + * icons - icons, sprites, graphics + * modules - modules, widgets + * layout_objects - lists, content blocks, notifications, avatars + * layout - page layout + * misc - to be removed/redone + +*******************************************************************************/ +echo elgg_view('css/elements/typography', $vars); +echo elgg_view('css/elements/forms', $vars); +echo elgg_view('css/elements/buttons', $vars); +echo elgg_view('css/elements/icons', $vars); +echo elgg_view('css/elements/navigation', $vars); +echo elgg_view('css/elements/modules', $vars); +echo elgg_view('css/elements/components', $vars); +echo elgg_view('css/elements/layout', $vars); +echo elgg_view('css/elements/misc', $vars); +echo elgg_view('css/elements/misc/spinner.css', $vars); + + +// included last to have higher priority +echo elgg_view('css/elements/helpers', $vars); + + +// in case plugins are still extending the old 'css' view, display it +echo elgg_view('css', $vars); diff --git a/elgg_clean/views/default/js/elgg_clean/js.js b/elgg_clean/views/default/js/elgg_clean/js.js index 65afee6c..0d6cc8f6 100755 --- a/elgg_clean/views/default/js/elgg_clean/js.js +++ b/elgg_clean/views/default/js/elgg_clean/js.js @@ -10,13 +10,13 @@ * @link http://modbash.com */ -define(['jquery', 'elgg', 'fuelux', 'bootstrap'], function ($, elgg, fuelux, bootstrap) { +define(['jquery', 'elgg', 'bootstrap'], function ($, elgg, bootstrap) { // Make sure widget column heights are correct if ($('.profile').length) { $('#elgg-widget-col-1').css('min-height', $('.profile').outerHeight(true) + 1); } - $("select").selectpicker(); + //$("select").selectpicker(); var config = { ".photo": { diff --git a/elgg_clean/views/default/page/html.php b/elgg_clean/views/default/page/html.php index 0b992ae5..3df0061c 100644 --- a/elgg_clean/views/default/page/html.php +++ b/elgg_clean/views/default/page/html.php @@ -38,9 +38,9 @@ $unl_template->head .= "<script type='text/javascript'>require.config({ 'languages/en': '/elgg/js/languages', 'elgg/reportedcontent': '/elgg/mod/reportedcontent/views/default/js/elgg/reportedcontent', 'elgg_clean/js': '/elgg/mod/elgg_clean/views/default/js/elgg_clean/js', - 'bootstrap': '/elgg/mod/elgg_clean/bower_components/bootstrap/dist/js/bootstrap', - 'fuelux': '/elgg/mod/elgg_clean/bower_components/fuelux/dist/js/fuelux', - 'moment': '/elgg/mod/elgg_clean/bower_components/moment/moment' + 'bootstrap': '/elgg/mod/elgg_clean/vendors/bower_components/bootstrap/dist/js/bootstrap', + //'fuelux': '/elgg/mod/elgg_clean/vendors/bower_components/fuelux/dist/js/fuelux.min', + 'moment': '/elgg/mod/elgg_clean/vendors/bower_components/moment/moment' } });</script>"; diff --git a/elgg_clean/views/default/page/layouts/widgets.php b/elgg_clean/views/default/page/layouts/widgets.php new file mode 100644 index 00000000..08956069 --- /dev/null +++ b/elgg_clean/views/default/page/layouts/widgets.php @@ -0,0 +1,70 @@ +<?php +/** + * Elgg widgets layout + * + * @uses $vars['content'] Optional display box at the top of layout + * @uses $vars['num_columns'] Number of widget columns for this layout (3) + * @uses $vars['show_add_widgets'] Display the add widgets button and panel (true) + * @uses $vars['exact_match'] Widgets must match the current context (false) + * @uses $vars['show_access'] Show the access control (true) + */ + +$num_columns = elgg_extract('num_columns', $vars, 0); +$show_add_widgets = elgg_extract('show_add_widgets', $vars, true); +$exact_match = elgg_extract('exact_match', $vars, false); +$show_access = elgg_extract('show_access', $vars, true); + +$owner = elgg_get_page_owner_entity(); + +$widget_types = elgg_get_widget_types(); + +$context = elgg_get_context(); +elgg_push_context('widgets'); + +$widgets = elgg_get_widgets($owner->guid, $context); + +echo '<div class="elgg-layout-widgets wdn-grid-set">'; + + + +if (elgg_can_edit_widget_layout($context)) { + if ($show_add_widgets) { + echo elgg_view('page/layouts/widgets/add_button'); + } + $params = array( + 'widgets' => $widgets, + 'context' => $context, + 'exact_match' => $exact_match, + 'show_access' => $show_access, + ); + echo elgg_view('page/layouts/widgets/add_panel', $params); +} + +if (isset($vars['content'])) { + echo $vars['content']; +} + +$widget_class = "elgg-col-1of{$num_columns}"; +for ($column_index = 1; $column_index <= $num_columns; $column_index++) { + if (isset($widgets[$column_index])) { + $column_widgets = $widgets[$column_index]; + } else { + $column_widgets = array(); + } + + echo "<div class=\"$widget_class elgg-widgets\" id=\"elgg-widget-col-$column_index\">"; + if (sizeof($column_widgets) > 0) { + foreach ($column_widgets as $widget) { + if (array_key_exists($widget->handler, $widget_types)) { + echo elgg_view_entity($widget, array('show_access' => $show_access)); + } + } + } + echo '</div>'; +} + +elgg_pop_context(); + +echo elgg_view('graphics/ajax_loader', array('id' => 'elgg-widget-loader')); + +echo '</div>'; -- GitLab